<?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>164005</bug_id>
          
          <creation_ts>2016-10-25 22:33:11 -0700</creation_ts>
          <short_desc>[Win][Direct2D] Create a RAII Helper Class for the Render Target</short_desc>
          <delta_ts>2016-10-27 17:42:20 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>161817</blocked>
    
    <blocked>163898</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>pvollan</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1244632</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-10-25 22:33:11 -0700</bug_when>
    <thetext>Create a convenience class to handle the logic of beginning and ending D2D draw operations when needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244634</commentid>
    <comment_count>1</comment_count>
      <attachid>292876</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-10-25 22:43:21 -0700</bug_when>
    <thetext>Created attachment 292876
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244635</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-25 22:45:52 -0700</bug_when>
    <thetext>Attachment 292876 did not pass style-queue:


ERROR: Source/WebKit/win/WebView.cpp:1258:  Missing space inside { }.  [whitespace/braces] [5]
Total errors found: 1 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244639</commentid>
    <comment_count>3</comment_count>
      <attachid>292877</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-10-25 23:10:47 -0700</bug_when>
    <thetext>Created attachment 292877
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244640</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-25 23:13:10 -0700</bug_when>
    <thetext>Attachment 292877 did not pass style-queue:


ERROR: Source/WebKit/win/WebView.cpp:1258:  Missing space inside { }.  [whitespace/braces] [5]
Total errors found: 1 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244641</commentid>
    <comment_count>5</comment_count>
      <attachid>292878</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-10-25 23:17:41 -0700</bug_when>
    <thetext>Created attachment 292878
Patch v3

Resolve style warning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244642</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-25 23:20:03 -0700</bug_when>
    <thetext>Attachment 292878 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/win/RenderTargetScopedDrawing.h:48:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 1 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244643</commentid>
    <comment_count>7</comment_count>
      <attachid>292878</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-10-25 23:20:36 -0700</bug_when>
    <thetext>Comment on attachment 292878
Patch v3

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

&gt; Source/cmake/OptionsAppleWin.cmake:9
&gt; +set(USE_DIRECT2D 1)

Whoops! We don&apos;t want to check this in. (Yet).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245265</commentid>
    <comment_count>8</comment_count>
      <attachid>293058</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-10-27 14:33:35 -0700</bug_when>
    <thetext>Created attachment 293058
Patch v4

Correct build issues when building without D2D.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245267</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-27 14:35:55 -0700</bug_when>
    <thetext>Attachment 293058 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/win/RenderTargetScopedDrawing.h:48:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 1 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245296</commentid>
    <comment_count>10</comment_count>
      <attachid>293058</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-10-27 15:25:48 -0700</bug_when>
    <thetext>Comment on attachment 293058
Patch v4

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

&gt; Source/cmake/OptionsAppleWin.cmake:9
&gt; -# set(USE_DIRECT2D 1)
&gt; +set(USE_DIRECT2D 1)

Did you mean to include this change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245319</commentid>
    <comment_count>11</comment_count>
      <attachid>293072</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-10-27 15:54:43 -0700</bug_when>
    <thetext>Created attachment 293072
Patch v5

Rebased for r208013, and to avoid turning the Direct2D build on by default.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245320</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-27 15:56:22 -0700</bug_when>
    <thetext>Attachment 293072 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/win/RenderTargetScopedDrawing.h:48:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 1 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245324</commentid>
    <comment_count>13</comment_count>
      <attachid>293072</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-10-27 16:08:45 -0700</bug_when>
    <thetext>Comment on attachment 293072
Patch v5

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

Unofficial r=me.

&gt; Source/WebCore/platform/graphics/win/GradientDirect2D.cpp:124
&gt; +    RenderTargetScopedDrawing helper(*context);

I am not sure if &apos;helper&apos; is a good name of a variable of type RenderTargetScopedDrawing.

&gt; Source/WebCore/platform/graphics/win/GraphicsContextDirect2D.cpp:348
&gt; +    if (!didBeginDraw())

I think you do not need this if-statement because beginDraw() checks for the same condition.

&gt; Source/WebCore/platform/graphics/win/GraphicsContextDirect2D.cpp:367
&gt; +    if (!didBeginDraw())

Ditto.

&gt; Source/WebCore/platform/graphics/win/GraphicsContextDirect2D.cpp:405
&gt; +void GraphicsContextPlatformPrivate::beginDraw()

To be consistent, I think this should be named beginDrawIfNeeded() since it has the same logic as GraphicsContext::beginDrawIfNeeded().

&gt; Source/WebCore/platform/graphics/win/ImageBufferDataDirect2D.cpp:86
&gt; +    helper.endDraw();
&gt; +

Why do you need to explicitly call endDraw() here?  It is going to be called form the destructor. If you need to call it before the return statement below you could surround the above code by crawly braces:

{
    RenderTargetScopedDrawing helper(*context);
    ....
}

....

return result;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245350</commentid>
    <comment_count>14</comment_count>
      <attachid>293072</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-10-27 16:59:01 -0700</bug_when>
    <thetext>Comment on attachment 293072
Patch v5

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

&gt;&gt; Source/WebCore/platform/graphics/win/GradientDirect2D.cpp:124
&gt;&gt; +    RenderTargetScopedDrawing helper(*context);
&gt; 
&gt; I am not sure if &apos;helper&apos; is a good name of a variable of type RenderTargetScopedDrawing.

Oh yes! I will fix this.

&gt;&gt; Source/WebCore/platform/graphics/win/GraphicsContextDirect2D.cpp:348
&gt;&gt; +    if (!didBeginDraw())
&gt; 
&gt; I think you do not need this if-statement because beginDraw() checks for the same condition.

Good point. I&apos;ll fix it.

&gt;&gt; Source/WebCore/platform/graphics/win/GraphicsContextDirect2D.cpp:367
&gt;&gt; +    if (!didBeginDraw())
&gt; 
&gt; Ditto.

Will do.

&gt;&gt; Source/WebCore/platform/graphics/win/GraphicsContextDirect2D.cpp:405
&gt;&gt; +void GraphicsContextPlatformPrivate::beginDraw()
&gt; 
&gt; To be consistent, I think this should be named beginDrawIfNeeded() since it has the same logic as GraphicsContext::beginDrawIfNeeded().

Good idea!

&gt;&gt; Source/WebCore/platform/graphics/win/ImageBufferDataDirect2D.cpp:86
&gt;&gt; +
&gt; 
&gt; Why do you need to explicitly call endDraw() here?  It is going to be called form the destructor. If you need to call it before the return statement below you could surround the above code by crawly braces:
&gt; 
&gt; {
&gt;     RenderTargetScopedDrawing helper(*context);
&gt;     ....
&gt; }
&gt; 
&gt; ....
&gt; 
&gt; return result;

Will do.

&gt; Source/WebKit/win/WebView.cpp:145
&gt; +#include &lt;WebCore/RenderTargetScopedDrawing.h&gt;

This broke the build in EWS because it should only be included for DIRECT2D builds. I will fix when landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245372</commentid>
    <comment_count>15</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-10-27 17:42:20 -0700</bug_when>
    <thetext>Committed in r208019 &lt;https://trac.webkit.org/changeset/208019&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292876</attachid>
            <date>2016-10-25 22:43:21 -0700</date>
            <delta_ts>2016-10-25 23:10:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>riaa_d2d.patch</filename>
            <type>text/plain</type>
            <size>22382</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNzg2OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisyMDE2LTEwLTI1ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXaW5dW0RpcmVjdDJEXSBD
cmVhdGUgYSBSSUFBIEhlbHBlciBDbGFzcyBmb3IgdGhlIFJlbmRlciBUYXJnZXQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDAwNQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RlZCBieSBleGlzdGlu
ZyBTVkcsIGltYWdlLCBhbmQgQ2FudmFzIGxheW91dCB0ZXN0cy4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3dpbi9HcmFkaWVudERpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYWRpZW50
OjpmaWxsKTogVXNlIG5ldyBjb252ZW5pZW5jZSBoZWxwZXIgY2xhc3MuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZGlkQmVnaW5EcmF3KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6R3JhcGhpY3NDb250ZXh0UGxhdGZv
cm1Qcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJp
dmF0ZTo6fkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZSk6IEFkZCBhbgorICAgICAgICBh
c3NlcnRpb24gdGhhdCB3ZSBhcmUgaW4gYSB2YWxpZCBzdGF0ZSB3aGVuIGNsZWFuaW5nIHVwIHRo
ZSBncmFwaGljcyBjb250ZXh0LgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0UGxh
dGZvcm1Qcml2YXRlOjpjbGlwKTogQ2xpcHBpbmcgY2FuIG9ubHkgaGFwcGVuIGluIGEgRHJhdyBv
cGVyYXRpb24uCisgICAgICAgIE9wZW4gYSBuZXcgQmVnaW5EcmF3IGlmIGFza2VkIHRvIENsaXAu
IFRoZSBCZWdpbiBtdXN0IHN0YXkgYWN0aXZlIHdoZW4gdGhpcyBtZXRob2QgcmV0dXJucywKKyAg
ICAgICAgYXMgdGhlIENsaXAgbGF5ZXIgaXMgb25seSB2YWxpZCBkdXJpbmcgYSBEcmF3IG9wZXJh
dGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6
YmVnaW5EcmF3KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRQbGF0
Zm9ybVByaXZhdGU6OmVuZERyYXcpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6YmVnaW5EcmF3SWZOZWVkZWQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6ZW5kRHJhdyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpkcmF3V2l0aG91dFNoYWRvdyk6IFJldmlzZSB0byB1c2UgbmV3IFJlbmRlclRh
cmdldEhlbHBlciBjbGFzcy4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJh
d1dpdGhTaGFkb3cpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
cGxhdGZvcm1GaWxsUm91bmRlZFJlY3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RGlkQmVnaW5EcmF3KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRl
RGlyZWN0MkQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJp
dmF0ZTo6ZGlkQmVnaW5EcmF3KTogUmV2aXNlIHRvIHVzZSBjb3VudCBpbnN0ZWFkIG9mCisgICAg
ICAgIGEgc2VwYXJhdGUgYm9vbGVhbi4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VCdWZmZXJEYXRhRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXJEYXRhOjpnZXREYXRhKTogUmV2aXNlIHRvIHVzZSBuZXcgUmVuZGVyVGFyZ2V0SGVscGVyIGNs
YXNzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJbWFnZURpcmVjdDJE
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6IERpdHRvLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9SZW5kZXJUYXJnZXRIZWxwZXIuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYXJnZXRIZWxwZXI6OlJlbmRlclRhcmdldEhlbHBlcik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYXJnZXRIZWxwZXI6On5SZW5kZXJUYXJnZXRIZWxw
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFyZ2V0SGVscGVyOjplbmREcmF3KToKKyAg
ICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
SW1hZ2U6Om5hdGl2ZUltYWdlKTogUmV2aXNlIHRvIHVzZSBuZXcgUmVuZGVyVGFyZ2V0SGVscGVy
IGNsYXNzLgorCiAyMDE2LTEwLTI1ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29t
PgogCiAgICAgICAgIFtXaW5dIFVucmV2aWV3ZWQgYnVpbGQgZml4LgpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgJKHJldmlz
aW9uIDIwNzg2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NTIsOSArNTUyLDEwIEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSUQyRDFGYWN0b3J5KiBzeXN0ZW1GYWN0b3J5KCk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIElEMkQxUmVuZGVyVGFyZ2V0KiBkZWZhdWx0UmVuZGVy
VGFyZ2V0KCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldERpZEJlZ2luRHJhdyhib29s
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGJlZ2luRHJhd0lmTmVlZGVkKCk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBkaWRCZWdpbkRyYXcoKSBjb25zdDsKICAgICBEMkQxX0NPTE9SX0Yg
Y29sb3JXaXRoR2xvYmFsQWxwaGEoY29uc3QgQ29sb3ImKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGVuZERyYXcoKTsKIAogICAgIElEMkQxQnJ1c2gqIHNvbGlkU3Ryb2tlQnJ1c2go
KSBjb25zdDsKICAgICBJRDJEMUJydXNoKiBzb2xpZEZpbGxCcnVzaCgpIGNvbnN0OwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYWRpZW50RGlyZWN0MkQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFk
aWVudERpcmVjdDJELmNwcAkocmV2aXNpb24gMjA3ODY1KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0dyYWRpZW50RGlyZWN0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiUmVuZGVyVGFyZ2V0SGVscGVyLmgiCiAjaW5jbHVk
ZSA8ZDJkMS5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIApAQCAtMTIwLDIwICsxMjEs
MTMgQEAgdm9pZCBHcmFkaWVudDo6ZmlsbChHcmFwaGljc0NvbnRleHQqIGNvbgogICAgIGlmICgh
bV9jYWNoZWRIYXNoIHx8ICFtX2dyYWRpZW50KQogICAgICAgICBnZW5lcmF0ZUdyYWRpZW50KGQy
ZENvbnRleHQpOwogCi0gICAgaWYgKCFjb250ZXh0LT5kaWRCZWdpbkRyYXcoKSkKLSAgICAgICAg
ZDJkQ29udGV4dC0+QmVnaW5EcmF3KCk7CisgICAgUmVuZGVyVGFyZ2V0SGVscGVyIGhlbHBlcigq
Y29udGV4dCk7CiAKICAgICBkMmRDb250ZXh0LT5TZXRUYWdzKEdSQURJRU5UX0RSQVdJTkcsIF9f
TElORV9fKTsKIAogICAgIGNvbnN0IEQyRDFfUkVDVF9GIGQyZFJlY3QgPSByZWN0OwogICAgIGQy
ZENvbnRleHQtPkZpbGxSZWN0YW5nbGUoJmQyZFJlY3QsIG1fZ3JhZGllbnQpOwogCi0gICAgaWYg
KCFjb250ZXh0LT5kaWRCZWdpbkRyYXcoKSkgewotICAgICAgICBEMkQxX1RBRyBmaXJzdCwgc2Vj
b25kOwotICAgICAgICBIUkVTVUxUIGhyID0gZDJkQ29udGV4dC0+RW5kRHJhdygmZmlyc3QsICZz
ZWNvbmQpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVChTVUNDRUVERUQoaHIpKTsKLSAgICB9Ci0K
ICAgICBpZiAobmVlZFNjYWxpbmcpCiAgICAgICAgIGNvbnRleHQtPnJlc3RvcmUoKTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRE
aXJlY3QyRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcAkocmV2aXNpb24gMjA3ODY1KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVj
dDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkltYWdl
QnVmZmVyLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVk
LmgiCisjaW5jbHVkZSAiUmVuZGVyVGFyZ2V0SGVscGVyLmgiCiAjaW5jbHVkZSAiVVJMLmgiCiAj
aW5jbHVkZSA8ZDJkMS5oPgogI2luY2x1ZGUgPGQyZDFlZmZlY3RzLmg+CkBAIC05OCwxNSArOTks
OSBAQCBJRDJEMVJlbmRlclRhcmdldCogR3JhcGhpY3NDb250ZXh0OjpkZWZhCiAgICAgcmV0dXJu
IGRlZmF1bHRSZW5kZXJUYXJnZXQ7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXREaWRC
ZWdpbkRyYXcoYm9vbCBkaWRCZWdpbkRyYXcpCi17Ci0gICAgUkVMRUFTRV9BU1NFUlQobV9kYXRh
KTsKLSAgICBtX2RhdGEtPm1fZGlkQmVnaW5EcmF3ID0gZGlkQmVnaW5EcmF3OwotfQotCiBib29s
IEdyYXBoaWNzQ29udGV4dDo6ZGlkQmVnaW5EcmF3KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9k
YXRhLT5tX2RpZEJlZ2luRHJhdzsKKyAgICByZXR1cm4gbV9kYXRhLT5kaWRCZWdpbkRyYXcoKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtSW5pdChIREMgaGRjLCBib29sIGhh
c0FscGhhKQpAQCAtMjc5LDYgKzI3NCwxOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xp
bmVGb3JEb2N1bWVuCiB7CiB9CiAKK0dyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6R3Jh
cGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKElEMkQxUmVuZGVyVGFyZ2V0KiByZW5kZXJUYXJn
ZXQpCisgICAgOiBtX3JlbmRlclRhcmdldChyZW5kZXJUYXJnZXQpCit7Cit9CisKK0dyYXBoaWNz
Q29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6fkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZSgp
Cit7CisgICAgaWYgKCFtX3JlbmRlclRhcmdldCkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNT
RVJUKCFtX2JlZ2luRHJhd0NvdW50LnVuc2FmZUdldCgpKTsKK30KKwogQ09NUHRyPElEMkQxU29s
aWRDb2xvckJydXNoPiBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6OmJydXNoV2l0aENv
bG9yKGNvbnN0IEQyRDFfQ09MT1JfRiYgY29sb3IpCiB7CiAgICAgUkdCQTMyIGNvbG9yS2V5ID0g
bWFrZVJHQkEzMkZyb21GbG9hdHMoY29sb3IuciwgY29sb3IuZywgY29sb3IuYiwgY29sb3IuYSk7
CkBAIC0zMTEsNiArMzE5LDExIEBAIElEMkQxU29saWRDb2xvckJydXNoKiBHcmFwaGljc0NvbnRl
eHQ6OmIKIAogdm9pZCBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6OmNsaXAoY29uc3Qg
RmxvYXRSZWN0JiByZWN0KQogeworICAgIC8vIEluIEQyRCwgd2UgY2FuIG9ubHkgY2xpcCBpbiB0
aGUgY29udGV4dCBvZiBhICdCZWdpbkRyYXcnLCBhbmQgdGhlIGNsaXAgY2FuCisgICAgLy8gb25s
eSBsaXZlIGFzIGxvbmcgYXMgdGhlIGRyYXcgaXMgaGFwcGVuaW5nLgorICAgIGlmICghZGlkQmVn
aW5EcmF3KCkpCisgICAgICAgIGJlZ2luRHJhdygpOworCiAgICAgaWYgKG1fcmVuZGVyU3RhdGVz
LmlzRW1wdHkoKSkKICAgICAgICAgc2F2ZSgpOwogCkBAIC0zMjUsNiArMzM4LDExIEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjpjbGkKIAogdm9pZCBHcmFwaGljc0NvbnRl
eHRQbGF0Zm9ybVByaXZhdGU6OmNsaXAoSUQyRDFHZW9tZXRyeSogcGF0aCkKIHsKKyAgICAvLyBJ
biBEMkQsIHdlIGNhbiBvbmx5IGNsaXAgaW4gdGhlIGNvbnRleHQgb2YgYSAnQmVnaW5EcmF3Jywg
YW5kIHRoZSBjbGlwIGNhbgorICAgIC8vIG9ubHkgbGl2ZSBhcyBsb25nIGFzIHRoZSBkcmF3IGlz
IGhhcHBlbmluZy4KKyAgICBpZiAoIWRpZEJlZ2luRHJhdygpKQorICAgICAgICBiZWdpbkRyYXco
KTsKKwogICAgIEFTU0VSVChtX3JlbmRlclN0YXRlcy5zaXplKCkpOwogICAgIGlmICghbV9yZW5k
ZXJTdGF0ZXMuc2l6ZSgpKQogICAgICAgICByZXR1cm47CkBAIC0zNjAsNiArMzc4LDE3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjpmbHUKICAgICBSRUxFQVNFX0FTU0VS
VChTVUNDRUVERUQoaHIpKTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZh
dGU6OmJlZ2luRHJhdygpCit7CisgICAgQVNTRVJUKG1fcmVuZGVyVGFyZ2V0LmdldCgpKTsKKyAg
ICBpZiAoZGlkQmVnaW5EcmF3KCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcmVuZGVyVGFy
Z2V0LT5CZWdpbkRyYXcoKTsKKworICAgICsrbV9iZWdpbkRyYXdDb3VudDsKK30KKwogdm9pZCBH
cmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6OmVuZERyYXcoKQogewogICAgIEFTU0VSVCht
X3JlbmRlclRhcmdldC5nZXQoKSk7CkBAIC0zNjgsNiArMzk3LDggQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHRQbGF0Zm9ybVByaXZhdGU6OmVuZAogCiAgICAgaWYgKCFTVUNDRUVERUQoaHIpKQogICAg
ICAgICBXVEZMb2dBbHdheXMoIkZhaWxlZCBpbiBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZh
dGU6OmVuZERyYXc6IGhyPSVsZCwgZmlyc3Q9JWxkLCBzZWNvbmQ9JWxkIiwgaHIsIGZpcnN0LCBz
ZWNvbmQpOworCisgICAgLS1tX2JlZ2luRHJhd0NvdW50OwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dFBsYXRmb3JtUHJpdmF0ZTo6cmVzdG9yZSgpCkBAIC00NjQsNiArNDk1LDIwIEBAIElEMkQx
QnJ1c2gqIEdyYXBoaWNzQ29udGV4dDo6cGF0dGVybkZpbGwKICAgICByZXR1cm4gbV9kYXRhLT5t
X3BhdHRlcm5GaWxsQnJ1c2guZ2V0KCk7CiB9CiAKK2Jvb2wgR3JhcGhpY3NDb250ZXh0OjpiZWdp
bkRyYXdJZk5lZWRlZCgpCit7CisgICAgaWYgKG1fZGF0YS0+ZGlkQmVnaW5EcmF3KCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fZGF0YS0+YmVnaW5EcmF3KCk7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjplbmREcmF3KCkKK3sKKyAgICBtX2Rh
dGEtPmVuZERyYXcoKTsKK30KKwogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKElt
YWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0
aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBG
bG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVy
YXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxl
ZCgpIHx8ICFwYXR0ZXJuVHJhbnNmb3JtLmlzSW52ZXJ0aWJsZSgpKQpAQCAtODQ4LDE5ICs4OTMs
MTQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXRoKGNvbnN0IFBhdAogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZHJhd1dpdGhvdXRTaGFkb3coY29uc3QgRmxvYXRSZWN0JiAvKmJvdW5k
aW5nUmVjdCovLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQoSUQyRDFSZW5kZXJUYXJnZXQqKT4m
IGRyYXdDb21tYW5kcykKIHsKLSAgICBhdXRvIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsK
LQotICAgIGlmICghZGlkQmVnaW5EcmF3KCkpCi0gICAgICAgIGNvbnRleHQtPkJlZ2luRHJhdygp
OwotCi0gICAgZHJhd0NvbW1hbmRzKGNvbnRleHQpOwotCi0gICAgaWYgKCFkaWRCZWdpbkRyYXco
KSkKLSAgICAgICAgbV9kYXRhLT5lbmREcmF3KCk7CisgICAgUmVuZGVyVGFyZ2V0SGVscGVyIGhl
bHBlcigqdGhpcyk7CisgICAgZHJhd0NvbW1hbmRzKHBsYXRmb3JtQ29udGV4dCgpKTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdXaXRoU2hhZG93KGNvbnN0IEZsb2F0UmVjdCYgYm91
bmRpbmdSZWN0LCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQoSUQyRDFSZW5kZXJUYXJnZXQqKT4m
IGRyYXdDb21tYW5kcykKIHsKKyAgICBSZW5kZXJUYXJnZXRIZWxwZXIgaGVscGVyKCp0aGlzKTsK
KwogICAgIGF1dG8gY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwogCiAgICAgLy8gUmVuZGVy
IHRoZSBjdXJyZW50IGdlb21ldHJ5IHRvIGEgYml0bWFwIGNvbnRleHQKQEAgLTkxMywxMCArOTUz
LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdXaXRoU2hhZG93KGNvbgogICAgIGF1dG8g
ZmxpcCA9IEQyRDE6Ok1hdHJpeDN4MkY6OlNjYWxlKEQyRDE6OlNpemVGKDEuMGYsIC0xLjBmKSk7
CiAgICAgZGV2aWNlQ29udGV4dC0+U2V0VHJhbnNmb3JtKGN0bSAqIGZsaXAgKiB0cmFuc2xhdGUp
OwogCi0gICAgZGV2aWNlQ29udGV4dC0+QmVnaW5EcmF3KCk7CiAgICAgZGV2aWNlQ29udGV4dC0+
RHJhd0ltYWdlKGNvbXBvc2l0b3IuZ2V0KCksIEQyRDFfSU5URVJQT0xBVElPTl9NT0RFX0xJTkVB
Uik7Ci0gICAgaHIgPSBkZXZpY2VDb250ZXh0LT5FbmREcmF3KCk7Ci0gICAgQVNTRVJUKFNVQ0NF
RURFRChocikpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFBhdGgoY29uc3QgUGF0
aCYgcGF0aCkKQEAgLTExMDcsOSArMTE0NCw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0
Zm9ybUZpbGxSb3VuZGUKICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICB9CiAKLSAgICBp
ZiAoIWRpZEJlZ2luRHJhdygpKQotICAgICAgICBjb250ZXh0LT5CZWdpbkRyYXcoKTsKLSAgICAK
KyAgICBSZW5kZXJUYXJnZXRIZWxwZXIgaGVscGVyKCp0aGlzKTsKKwogICAgIGNvbnRleHQtPlNl
dFRhZ3MoMSwgX19MSU5FX18pOwogCiAgICAgY29uc3QgRmxvYXRSZWN0JiByID0gcmVjdC5yZWN0
KCk7CkBAIC0xMTI5LDkgKzExNjUsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1G
aWxsUm91bmRlCiAgICAgICAgIGZpbGxQYXRoKHBhdGgpOwogICAgIH0KIAotICAgIGlmICghZGlk
QmVnaW5EcmF3KCkpCi0gICAgICAgIG1fZGF0YS0+ZW5kRHJhdygpOwotCiAgICAgaWYgKGRyYXdP
d25TaGFkb3cpCiAgICAgICAgIHN0YXRlU2F2ZXIucmVzdG9yZSgpOwogfQpAQCAtMTE0OCw4ICsx
MTgxLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZQogCiAgICAg
YXV0byBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAKLSAgICBpZiAoIWRpZEJlZ2luRHJh
dygpKQotICAgICAgICBjb250ZXh0LT5CZWdpbkRyYXcoKTsKKyAgICBSZW5kZXJUYXJnZXRIZWxw
ZXIgaGVscGVyKCp0aGlzKTsKIAogICAgIGNvbnRleHQtPlNldFRhZ3MoMSwgX19MSU5FX18pOwog
CkBAIC0xMTc5LDkgKzEyMTEsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRo
Um91bmRlCiAKICAgICBmaWxsUGF0aChwYXRoKTsKIAotICAgIGlmICghZGlkQmVnaW5EcmF3KCkp
Ci0gICAgICAgIG1fZGF0YS0+ZW5kRHJhdygpOwotCiAgICAgaWYgKGRyYXdPd25TaGFkb3cpCiAg
ICAgICAgIHN0YXRlU2F2ZXIucmVzdG9yZSgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlRGlyZWN0MkQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3Jh
cGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlRGlyZWN0MkQuaAkocmV2aXNpb24gMjA3ODY1KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dFBs
YXRmb3JtUHJpdmF0ZURpcmVjdDJELmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAK
ICNpbmNsdWRlIDxkMmQxZWZmZWN0cy5oPgogI2luY2x1ZGUgPGQyZDFoZWxwZXIuaD4KICNpbmNs
dWRlIDx3aW5kb3dzLmg+CisjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAjaW5j
bHVkZSA8d3RmL1RpbnlMUlVDYWNoZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOSwx
NiArNDAsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgR3JhcGhpY3NDb250ZXh0UGxh
dGZvcm1Qcml2YXRlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAg
ICBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUoSUQyRDFSZW5kZXJUYXJnZXQqIHJlbmRl
clRhcmdldCkKLSAgICAgICAgOiBtX3JlbmRlclRhcmdldChyZW5kZXJUYXJnZXQpCi0gICAgewot
ICAgIH0KKyAgICBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUoSUQyRDFSZW5kZXJUYXJn
ZXQqKTsKKyAgICB+R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKCk7CiAKICAgICBlbnVt
IERpcmVjdDJETGF5ZXJUeXBlIHsgQXhpc0FsaWduZWRDbGlwLCBMYXllckNsaXAgfTsKIAogICAg
IHZvaWQgY2xpcChjb25zdCBGbG9hdFJlY3QmKTsKICAgICB2b2lkIGNsaXAoY29uc3QgUGF0aCYp
OwogICAgIHZvaWQgY2xpcChJRDJEMUdlb21ldHJ5Kik7CisgICAgdm9pZCBiZWdpbkRyYXcoKTsK
ICAgICB2b2lkIGVuZERyYXcoKTsKICAgICB2b2lkIGZsdXNoKCk7CiAgICAgdm9pZCBzYXZlKCk7
CkBAIC03NSwxMSArNzUsMTMgQEAgcHVibGljOgogCiAgICAgQ09NUHRyPElEMkQxU29saWRDb2xv
ckJydXNoPiBicnVzaFdpdGhDb2xvcihjb25zdCBEMkQxX0NPTE9SX0YmKTsKIAorICAgIGJvb2wg
ZGlkQmVnaW5EcmF3KCkgY29uc3QgeyByZXR1cm4gbV9iZWdpbkRyYXdDb3VudC51bnNhZmVHZXQo
KTsgfQorCiAgICAgSERDIG1faGRjIHsgbnVsbHB0ciB9OwogICAgIEQyRDFfQkxFTkRfTU9ERSBt
X2JsZW5kTW9kZSB7IEQyRDFfQkxFTkRfTU9ERV9NVUxUSVBMWSB9OwogICAgIEQyRDFfQ09NUE9T
SVRFX01PREUgbV9jb21wb3NpdGVNb2RlIHsgRDJEMV9DT01QT1NJVEVfTU9ERV9TT1VSQ0VfT1ZF
UiB9OworICAgIENoZWNrZWQ8dW5zaWduZWQ+IG1fYmVnaW5EcmF3Q291bnQgeyAwIH07CiAgICAg
Ym9vbCBtX3Nob3VsZEluY2x1ZGVDaGlsZFdpbmRvd3MgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9k
aWRCZWdpbkRyYXcgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9zdHJva2VTeWxlSXNEaXJ0eSB7IGZh
bHNlIH07CiAKICAgICBDT01QdHI8SUQyRDFTb2xpZENvbG9yQnJ1c2g+IG1fc29saWRTdHJva2VC
cnVzaDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1
ZmZlckRhdGFEaXJlY3QyRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGF0YURpcmVjdDJELmNwcAkocmV2aXNpb24gMjA3
ODY1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVy
RGF0YURpcmVjdDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1
ZGUgIkhXbmREQy5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1l
bnRlZC5oIgorI2luY2x1ZGUgIlJlbmRlclRhcmdldEhlbHBlci5oIgogI2luY2x1ZGUgPGQyZDEu
aD4KICNpbmNsdWRlIDxydW50aW1lL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDxydW50aW1lL1R5
cGVkQXJyYXlJbmxpbmVzLmg+CkBAIC03MCw3ICs3MSw3IEBAIFJlZlB0cjxVaW50OENsYW1wZWRB
cnJheT4gSW1hZ2VCdWZmZXJEYXQKICAgICBpZiAoRkFJTEVEKGhyKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICBwbGF0Zm9ybUNvbnRleHQtPkJlZ2luRHJhdygpOworICAgIFJlbmRl
clRhcmdldEhlbHBlciBoZWxwZXIoKmNvbnRleHQpOwogCiAgICAgSERDIGhkYyA9IG51bGxwdHI7
CiAgICAgaHIgPSBnZGlSZW5kZXJUYXJnZXQtPkdldERDKEQyRDFfRENfSU5JVElBTElaRV9NT0RF
X0NPUFksICZoZGMpOwpAQCAtODEsNiArODIsOCBAQCBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+
IEltYWdlQnVmZmVyRGF0CiAKICAgICBociA9IHBsYXRmb3JtQ29udGV4dC0+RW5kRHJhdygpOwog
CisgICAgaGVscGVyLmVuZERyYXcoKTsKKwogICAgIGlmICghb2spCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTmF0
aXZlSW1hZ2VEaXJlY3QyRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL05hdGl2ZUltYWdlRGlyZWN0MkQuY3BwCShyZXZpc2lvbiAyMDc4NjUp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTmF0aXZlSW1hZ2VEaXJl
Y3QyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVt
ZW50ZWQuaCIKKyNpbmNsdWRlICJSZW5kZXJUYXJnZXRIZWxwZXIuaCIKICNpbmNsdWRlIDxkMmQx
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTg1LDE0ICs4NiwxMyBAQCB2b2lkIGRyYXdO
YXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0CiAKICAgICBmbG9hdCBvcGFjaXR5ID0gMS4w
ZjsKIAotICAgIGlmICghY29udGV4dC5kaWRCZWdpbkRyYXcoKSkKLSAgICAgICAgcGxhdGZvcm1D
b250ZXh0LT5CZWdpbkRyYXcoKTsKKyAgICBib29sIHRlbXBvcmFyeURyYXcgPSBjb250ZXh0LmJl
Z2luRHJhd0lmTmVlZGVkKCk7CiAKICAgICBwbGF0Zm9ybUNvbnRleHQtPkRyYXdCaXRtYXAoaW1h
Z2UuZ2V0KCksIGRlc3RSZWN0LCBvcGFjaXR5LCBEMkQxX0JJVE1BUF9JTlRFUlBPTEFUSU9OX01P
REVfTkVBUkVTVF9ORUlHSEJPUiwgYWRqdXN0ZWRTcmNSZWN0KTsKIAogICAgIEhSRVNVTFQgaHIg
PSBTX09LOwotICAgIGlmICghY29udGV4dC5kaWRCZWdpbkRyYXcoKSkKLSAgICAgICAgaHIgPSBw
bGF0Zm9ybUNvbnRleHQtPkVuZERyYXcoKTsKKyAgICBpZiAodGVtcG9yYXJ5RHJhdykKKyAgICAg
ICAgY29udGV4dC5lbmREcmF3KCk7CiAgICAgZWxzZQogICAgICAgICBociA9IHBsYXRmb3JtQ29u
dGV4dC0+Rmx1c2goKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL1JlbmRlclRhcmdldEhlbHBlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9SZW5kZXJUYXJnZXRIZWxwZXIuaAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUmVuZGVyVGFyZ2V0SGVscGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVuZGVyVGFyZ2V0
SGVscGVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZW5kZXJUYXJnZXRIZWxwZXIpOwor
cHVibGljOgorICAgIFJlbmRlclRhcmdldEhlbHBlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQp
CisgICAgICAgIDogbV9jb250ZXh0KGNvbnRleHQpCisgICAgeworICAgICAgICBtX2RyYXdJc1Nj
b3BlZCA9IGNvbnRleHQudGVtcG9yYXJ5QmVnaW5EcmF3SWZOZWVkZWQoKTsKKyAgICB9CisKKyAg
ICB+UmVuZGVyVGFyZ2V0SGVscGVyKCkKKyAgICB7CisgICAgICAgIGVuZERyYXcoKTsKKyAgICB9
CisKKyAgICB2b2lkIGVuZERyYXcoKQorICAgIHsKKyAgICAgICAgaWYgKG1fZHJhd0lzU2NvcGVk
KQorICAgICAgICAgICAgbV9jb250ZXh0LmVuZERyYXcoKTsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgR3JhcGhpY3NDb250ZXh0JiBtX2NvbnRleHQ7CisgICAgYm9vbCBtX2RyYXdJc1Njb3BlZDsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmNwcAkocmV2aXNpb24gMjA3ODY1KQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4K
LSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAwOSwgMjAxNS0yMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90
aW9uIExpbWl0ZWQgMjAxMS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
QEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJQYWdlQ29uZmlndXJhdGlvbi5oIgogI2luY2x1
ZGUgIlJlbmRlclNWR1Jvb3QuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgorI2luY2x1ZGUg
IlJlbmRlclRhcmdldEhlbHBlci5oIgogI2luY2x1ZGUgIlNWR0RvY3VtZW50LmgiCiAjaW5jbHVk
ZSAiU1ZHRkVJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdGb3JlaWduT2JqZWN0RWxlbWVu
dC5oIgpAQCAtMjI0LDE0ICsyMjUsMTIgQEAgTmF0aXZlSW1hZ2VQdHIgU1ZHSW1hZ2U6Om5hdGl2
ZUltYWdlKGNvbgogICAgIEhSRVNVTFQgaHIgPSBwbGF0Zm9ybUNvbnRleHQtPkNyZWF0ZUNvbXBh
dGlibGVSZW5kZXJUYXJnZXQoSW50U2l6ZShyZWN0KCkuc2l6ZSgpKSwgJm5hdGl2ZUltYWdlVGFy
Z2V0KTsKICAgICBBU1NFUlQoU1VDQ0VFREVEKGhyKSk7CiAKLSAgICBuYXRpdmVJbWFnZVRhcmdl
dC0+QmVnaW5EcmF3KCk7CiAgICAgR3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dChuYXRpdmVJ
bWFnZVRhcmdldC5nZXQoKSk7Ci0gICAgbG9jYWxDb250ZXh0LnNldERpZEJlZ2luRHJhdyh0cnVl
KTsKIAorICAgIHsKKyAgICBSZW5kZXJUYXJnZXRIZWxwZXIgaGVscGVyKGxvY2FsQ29udGV4dCk7
CiAgICAgZHJhdyhsb2NhbENvbnRleHQsIHJlY3QoKSwgcmVjdCgpLCBDb21wb3NpdGVTb3VyY2VP
dmVyLCBCbGVuZE1vZGVOb3JtYWwsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKLQot
ICAgIGhyID0gbmF0aXZlSW1hZ2VUYXJnZXQtPkZsdXNoKCk7Ci0gICAgQVNTRVJUKFNVQ0NFRURF
RChocikpOworICAgIH0KIAogICAgIENPTVB0cjxJRDJEMUJpdG1hcD4gbmF0aXZlSW1hZ2U7CiAg
ICAgaHIgPSBuYXRpdmVJbWFnZVRhcmdldC0+R2V0Qml0bWFwKCZuYXRpdmVJbWFnZSk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDc4NjUpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxNi0xMC0yNSAgQnJl
bnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBbV2luXVtEaXJlY3Qy
RF0gQ3JlYXRlIGEgUklBQSBIZWxwZXIgQ2xhc3MgZm9yIHRoZSBSZW5kZXIgVGFyZ2V0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQwMDUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcuY3Bw
OgorICAgICAgICAoV2ViVmlldzo6c2l6ZUNoYW5nZWQpOiBDb25zdHJ1Y3QgUmVuZGVyVGFyZ2V0
IHdpdGggaGlnaGVyLXJlc29sdXRpb24gZGlzcGxheSB0aW1lci4KKyAgICAgICAgKFdlYlZpZXc6
OnBhaW50V2l0aERpcmVjdDJEKTogUmV2aXNlIHRvIHVzZSBuZXcgUmVuZGVyVGFyZ2V0SGVscGVy
IGNsYXNzLgorCiAyMDE2LTEwLTE5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgUmV2ZXJ0IHIyMDcxNTEKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
d2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcu
Y3BwCShyZXZpc2lvbiAyMDc4NjUpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTQyLDYgKzE0Miw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Qb3B1
cE1lbnVXaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Byb2dyZXNzVHJhY2tlci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUmVuZGVyTGF5ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlclRhcmdl
dEhlbHBlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyVGhlbWUuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1JlbmRlclRyZWVBc1RleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlclZpZXcu
aD4KQEAgLTE2NCw2ICsxNjUsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvV2luZG93TWVzc2FnZUJy
b2FkY2FzdGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dzVG91Y2guaD4KICNpbmNsdWRl
IDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgorI2luY2x1ZGUgPGNvbWRlZi5oPgogI2luY2x1ZGUg
PGQyZDEuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9SQU1T
aXplLmg+CkBAIC0xMDYzLDcgKzEwNjUsNyBAQCB2b2lkIFdlYlZpZXc6OnNpemVDaGFuZ2VkKGNv
bnN0IEludFNpemUmCiAgICAgLy8gQ3JlYXRlIGEgRGlyZWN0MkQgcmVuZGVyIHRhcmdldC4KICAg
ICBhdXRvIHJlbmRlclRhcmdldFByb3BlcnRpZXMgPSBEMkQxOjpSZW5kZXJUYXJnZXRQcm9wZXJ0
aWVzKCk7CiAgICAgcmVuZGVyVGFyZ2V0UHJvcGVydGllcy51c2FnZSA9IEQyRDFfUkVOREVSX1RB
UkdFVF9VU0FHRV9HRElfQ09NUEFUSUJMRTsKLSAgICBhdXRvIGh3bmRSZW5kZXJUYXJnZXRQcm9w
ZXJ0aWVzID0gRDJEMTo6SHduZFJlbmRlclRhcmdldFByb3BlcnRpZXMobV92aWV3V2luZG93LCBu
ZXdTaXplKTsKKyAgICBhdXRvIGh3bmRSZW5kZXJUYXJnZXRQcm9wZXJ0aWVzID0gRDJEMTo6SHdu
ZFJlbmRlclRhcmdldFByb3BlcnRpZXMobV92aWV3V2luZG93LCBuZXdTaXplLCBEMkQxX1BSRVNF
TlRfT1BUSU9OU19JTU1FRElBVEVMWSk7CiAgICAgSFJFU1VMVCBociA9IEdyYXBoaWNzQ29udGV4
dDo6c3lzdGVtRmFjdG9yeSgpLT5DcmVhdGVId25kUmVuZGVyVGFyZ2V0KCZyZW5kZXJUYXJnZXRQ
cm9wZXJ0aWVzLCAmaHduZFJlbmRlclRhcmdldFByb3BlcnRpZXMsICZtX3JlbmRlclRhcmdldCk7
CiAgICAgQVNTRVJUKFNVQ0NFRURFRChocikpOwogI2VuZGlmCkBAIC0xMjM2LDEzICsxMjM4LDE1
IEBAIHZvaWQgV2ViVmlldzo6cGFpbnRXaXRoRGlyZWN0MkQoKQogCiAgICAgICAgIGF1dG8gcGl4
ZWxTaXplID0gRDJEMTo6U2l6ZVUoY2xpZW50UmVjdC53aWR0aCgpLCBjbGllbnRSZWN0LmhlaWdo
dCgpKTsKIAotICAgICAgICBhdXRvIGh3bmRSZW5kZXJUYXJnZXRQcm9wZXJ0aWVzID0gRDJEMTo6
SHduZFJlbmRlclRhcmdldFByb3BlcnRpZXMobV92aWV3V2luZG93LCBwaXhlbFNpemUpOworICAg
ICAgICBhdXRvIGh3bmRSZW5kZXJUYXJnZXRQcm9wZXJ0aWVzID0gRDJEMTo6SHduZFJlbmRlclRh
cmdldFByb3BlcnRpZXMobV92aWV3V2luZG93LCBwaXhlbFNpemUsIEQyRDFfUFJFU0VOVF9PUFRJ
T05TX0lNTUVESUFURUxZKTsKICAgICAgICAgSFJFU1VMVCBociA9IEdyYXBoaWNzQ29udGV4dDo6
c3lzdGVtRmFjdG9yeSgpLT5DcmVhdGVId25kUmVuZGVyVGFyZ2V0KCZyZW5kZXJUYXJnZXRQcm9w
ZXJ0aWVzLCAmaHduZFJlbmRlclRhcmdldFByb3BlcnRpZXMsICZtX3JlbmRlclRhcmdldCk7CiAg
ICAgICAgIGlmICghU1VDQ0VFREVEKGhyKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBtX3JlbmRlclRhcmdldC0+QmVnaW5EcmF3KCk7CisgICAgR3JhcGhpY3NDb250ZXh0IGdj
KG1fcmVuZGVyVGFyZ2V0LmdldCgpKTsKKworICAgIFdlYkNvcmU6OlJlbmRlclRhcmdldEhlbHBl
ciBoZWxwZXIoZ2MpOwogCiAgICAgbV9yZW5kZXJUYXJnZXQtPlNldFRhZ3MoV0VCS0lUX0RSQVdJ
TkcsIF9fTElORV9fKTsKICAgICBtX3JlbmRlclRhcmdldC0+Q2xlYXIoKTsKQEAgLTEyNTEsNyAr
MTI1NSw3IEBAIHZvaWQgV2ViVmlldzo6cGFpbnRXaXRoRGlyZWN0MkQoKQogICAgIGZsb2F0IHNj
YWxlRmFjdG9yID0gMS4wZjsKICAgICBmbG9hdCBpbnZlcnNlU2NhbGVGYWN0b3IgPSAxLjBmIC8g
c2NhbGVGYWN0b3I7CiAKLSAgICBSRUNUIGNsaWVudFJlY3Q7CisgICAgUkVDVCBjbGllbnRSZWN0
ID0ge307CiAgICAgR2V0Q2xpZW50UmVjdChtX3ZpZXdXaW5kb3csICZjbGllbnRSZWN0KTsKIAog
ICAgIEludFJlY3QgZGlydHlSZWN0UGl4ZWxzKDAsIDAsIGNsaWVudFJlY3QucmlnaHQsIGNsaWVu
dFJlY3QuYm90dG9tKTsKQEAgLTEyNTksOSArMTI2Myw2IEBAIHZvaWQgV2ViVmlldzo6cGFpbnRX
aXRoRGlyZWN0MkQoKQogICAgIGxvZ2ljYWxEaXJ0eVJlY3RGbG9hdC5zY2FsZShpbnZlcnNlU2Nh
bGVGYWN0b3IpOwogICAgIEludFJlY3QgbG9naWNhbERpcnR5UmVjdChlbmNsb3NpbmdJbnRSZWN0
KGxvZ2ljYWxEaXJ0eVJlY3RGbG9hdCkpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0IGdjKG1fcmVu
ZGVyVGFyZ2V0LmdldCgpKTsKLSAgICBnYy5zZXREaWRCZWdpbkRyYXcodHJ1ZSk7Ci0KICAgICBp
ZiAoZnJhbWVWaWV3ICYmIGZyYW1lVmlldy0+ZnJhbWUoKS5jb250ZW50UmVuZGVyZXIoKSkgewog
ICAgICAgICBnYy5zYXZlKCk7CiAgICAgICAgIGdjLnNjYWxlKEZsb2F0U2l6ZShzY2FsZUZhY3Rv
ciwgc2NhbGVGYWN0b3IpKTsKQEAgLTEyNzIsOSArMTI3Myw3IEBAIHZvaWQgV2ViVmlldzo6cGFp
bnRXaXRoRGlyZWN0MkQoKQogICAgICAgICAgICAgZ2MuZmlsbFJlY3QobG9naWNhbERpcnR5UmVj
dCwgQ29sb3I6OndoaXRlLCBDb21wb3NpdGVEaWZmZXJlbmNlKTsKICAgICB9CiAKLSAgICBIUkVT
VUxUIGhyID0gbV9yZW5kZXJUYXJnZXQtPkVuZERyYXcoKTsKLSAgICAvLyBGSVhNRTogUmVjb2du
aXplIGFuZCByZWNvdmVyIGZyb20gZXJyb3Igc3RhdGU6Ci0gICAgVU5VU0VEX1BBUkFNKGhyKTsK
KyAgICBoZWxwZXIuZW5kRHJhdygpOwogCiAgICAgOjpWYWxpZGF0ZVJlY3QobV92aWV3V2luZG93
LCAmY2xpZW50UmVjdCk7CiAjZWxzZQpAQCAtMzE1MSw2ICszMTUwLDcgQEAgSFJFU1VMVCBXZWJW
aWV3Ojppbml0V2l0aEZyYW1lKFJFQ1QgZnJhbQogICAgIG1fcGFnZS0+c2V0RGV2aWNlU2NhbGVG
YWN0b3IoZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAKICAgICBzZXRTbWFydEluc2VydERlbGV0ZUVu
YWJsZWQoVFJVRSk7CisKICAgICByZXR1cm4gaHI7CiB9CiAKSW5kZXg6IFNvdXJjZS9jbWFrZS9P
cHRpb25zQXBwbGVXaW4uY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2NtYWtlL09wdGlvbnNB
cHBsZVdpbi5jbWFrZQkocmV2aXNpb24gMjA3ODY1KQorKysgU291cmNlL2NtYWtlL09wdGlvbnNB
cHBsZVdpbi5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtNiw3ICs2LDcgQEAgc2V0KFVTRV9DRlVS
TENPTk5FQ1RJT04gMSkKIHNldChVU0VfSUNVX1VOSUNPREUgMSkKIAogIyBVbmNvbW1lbnQgdGhl
IGZvbGxvd2luZyBsaW5lIHRvIHRyeSB0aGUgRGlyZWN0MkQgYmFja2VuZC4KLSMgc2V0KFVTRV9E
SVJFQ1QyRCAxKQorc2V0KFVTRV9ESVJFQ1QyRCAxKQogCiBpZiAoJHtVU0VfRElSRUNUMkR9KQog
ICAgIGFkZF9kZWZpbml0aW9ucygtRFVTRV9ESVJFQ1QyRD0xKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292877</attachid>
            <date>2016-10-25 23:10:47 -0700</date>
            <delta_ts>2016-10-25 23:17:41 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>riaa_d2d_v2.patch</filename>
            <type>text/plain</type>
            <size>22570</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNzg2OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisyMDE2LTEwLTI1ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXaW5dW0RpcmVjdDJEXSBD
cmVhdGUgYSBSSUFBIEhlbHBlciBDbGFzcyBmb3IgdGhlIFJlbmRlciBUYXJnZXQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDAwNQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RlZCBieSBleGlzdGlu
ZyBTVkcsIGltYWdlLCBhbmQgQ2FudmFzIGxheW91dCB0ZXN0cy4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3dpbi9HcmFkaWVudERpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYWRpZW50
OjpmaWxsKTogVXNlIG5ldyBjb252ZW5pZW5jZSBoZWxwZXIgY2xhc3MuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZGlkQmVnaW5EcmF3KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6R3JhcGhpY3NDb250ZXh0UGxhdGZv
cm1Qcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJp
dmF0ZTo6fkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZSk6IEFkZCBhbgorICAgICAgICBh
c3NlcnRpb24gdGhhdCB3ZSBhcmUgaW4gYSB2YWxpZCBzdGF0ZSB3aGVuIGNsZWFuaW5nIHVwIHRo
ZSBncmFwaGljcyBjb250ZXh0LgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0UGxh
dGZvcm1Qcml2YXRlOjpjbGlwKTogQ2xpcHBpbmcgY2FuIG9ubHkgaGFwcGVuIGluIGEgRHJhdyBv
cGVyYXRpb24uCisgICAgICAgIE9wZW4gYSBuZXcgQmVnaW5EcmF3IGlmIGFza2VkIHRvIENsaXAu
IFRoZSBCZWdpbiBtdXN0IHN0YXkgYWN0aXZlIHdoZW4gdGhpcyBtZXRob2QgcmV0dXJucywKKyAg
ICAgICAgYXMgdGhlIENsaXAgbGF5ZXIgaXMgb25seSB2YWxpZCBkdXJpbmcgYSBEcmF3IG9wZXJh
dGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6
YmVnaW5EcmF3KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRQbGF0
Zm9ybVByaXZhdGU6OmVuZERyYXcpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6YmVnaW5EcmF3SWZOZWVkZWQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6ZW5kRHJhdyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpkcmF3V2l0aG91dFNoYWRvdyk6IFJldmlzZSB0byB1c2UgbmV3IFJlbmRlclRh
cmdldEhlbHBlciBjbGFzcy4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJh
d1dpdGhTaGFkb3cpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
cGxhdGZvcm1GaWxsUm91bmRlZFJlY3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RGlkQmVnaW5EcmF3KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRl
RGlyZWN0MkQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJp
dmF0ZTo6ZGlkQmVnaW5EcmF3KTogUmV2aXNlIHRvIHVzZSBjb3VudCBpbnN0ZWFkIG9mCisgICAg
ICAgIGEgc2VwYXJhdGUgYm9vbGVhbi4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VCdWZmZXJEYXRhRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXJEYXRhOjpnZXREYXRhKTogUmV2aXNlIHRvIHVzZSBuZXcgUmVuZGVyVGFyZ2V0SGVscGVyIGNs
YXNzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJbWFnZURpcmVjdDJE
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6IERpdHRvLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9SZW5kZXJUYXJnZXRIZWxwZXIuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYXJnZXRIZWxwZXI6OlJlbmRlclRhcmdldEhlbHBlcik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYXJnZXRIZWxwZXI6On5SZW5kZXJUYXJnZXRIZWxw
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFyZ2V0SGVscGVyOjplbmREcmF3KToKKyAg
ICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
SW1hZ2U6Om5hdGl2ZUltYWdlKTogUmV2aXNlIHRvIHVzZSBuZXcgUmVuZGVyVGFyZ2V0SGVscGVy
IGNsYXNzLgorCiAyMDE2LTEwLTI1ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29t
PgogCiAgICAgICAgIFtXaW5dIFVucmV2aWV3ZWQgYnVpbGQgZml4LgpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgJKHJldmlz
aW9uIDIwNzg2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NTIsOSArNTUyLDEwIEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSUQyRDFGYWN0b3J5KiBzeXN0ZW1GYWN0b3J5KCk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIElEMkQxUmVuZGVyVGFyZ2V0KiBkZWZhdWx0UmVuZGVy
VGFyZ2V0KCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldERpZEJlZ2luRHJhdyhib29s
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGJlZ2luRHJhd0lmTmVlZGVkKCk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBkaWRCZWdpbkRyYXcoKSBjb25zdDsKICAgICBEMkQxX0NPTE9SX0Yg
Y29sb3JXaXRoR2xvYmFsQWxwaGEoY29uc3QgQ29sb3ImKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGVuZERyYXcoKTsKIAogICAgIElEMkQxQnJ1c2gqIHNvbGlkU3Ryb2tlQnJ1c2go
KSBjb25zdDsKICAgICBJRDJEMUJydXNoKiBzb2xpZEZpbGxCcnVzaCgpIGNvbnN0OwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYWRpZW50RGlyZWN0MkQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFk
aWVudERpcmVjdDJELmNwcAkocmV2aXNpb24gMjA3ODY1KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0dyYWRpZW50RGlyZWN0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiUmVuZGVyVGFyZ2V0U2NvcGVkRHJhd2luZy5oIgog
I2luY2x1ZGUgPGQyZDEuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKQEAgLTEyMCwy
MCArMTIxLDEzIEBAIHZvaWQgR3JhZGllbnQ6OmZpbGwoR3JhcGhpY3NDb250ZXh0KiBjb24KICAg
ICBpZiAoIW1fY2FjaGVkSGFzaCB8fCAhbV9ncmFkaWVudCkKICAgICAgICAgZ2VuZXJhdGVHcmFk
aWVudChkMmRDb250ZXh0KTsKIAotICAgIGlmICghY29udGV4dC0+ZGlkQmVnaW5EcmF3KCkpCi0g
ICAgICAgIGQyZENvbnRleHQtPkJlZ2luRHJhdygpOworICAgIFJlbmRlclRhcmdldFNjb3BlZERy
YXdpbmcgaGVscGVyKCpjb250ZXh0KTsKIAogICAgIGQyZENvbnRleHQtPlNldFRhZ3MoR1JBRElF
TlRfRFJBV0lORywgX19MSU5FX18pOwogCiAgICAgY29uc3QgRDJEMV9SRUNUX0YgZDJkUmVjdCA9
IHJlY3Q7CiAgICAgZDJkQ29udGV4dC0+RmlsbFJlY3RhbmdsZSgmZDJkUmVjdCwgbV9ncmFkaWVu
dCk7CiAKLSAgICBpZiAoIWNvbnRleHQtPmRpZEJlZ2luRHJhdygpKSB7Ci0gICAgICAgIEQyRDFf
VEFHIGZpcnN0LCBzZWNvbmQ7Ci0gICAgICAgIEhSRVNVTFQgaHIgPSBkMmRDb250ZXh0LT5FbmRE
cmF3KCZmaXJzdCwgJnNlY29uZCk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKFNVQ0NFRURFRCho
cikpOwotICAgIH0KLQogICAgIGlmIChuZWVkU2NhbGluZykKICAgICAgICAgY29udGV4dC0+cmVz
dG9yZSgpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dy
YXBoaWNzQ29udGV4dERpcmVjdDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCShyZXZpc2lv
biAyMDc4NjUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhp
Y3NDb250ZXh0RGlyZWN0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAj
aW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAi
Tm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJSZW5kZXJUYXJnZXRTY29wZWREcmF3aW5nLmgi
CiAjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8ZDJkMS5oPgogI2luY2x1ZGUgPGQyZDFlZmZl
Y3RzLmg+CkBAIC05OCwxNSArOTksOSBAQCBJRDJEMVJlbmRlclRhcmdldCogR3JhcGhpY3NDb250
ZXh0OjpkZWZhCiAgICAgcmV0dXJuIGRlZmF1bHRSZW5kZXJUYXJnZXQ7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpzZXREaWRCZWdpbkRyYXcoYm9vbCBkaWRCZWdpbkRyYXcpCi17Ci0gICAg
UkVMRUFTRV9BU1NFUlQobV9kYXRhKTsKLSAgICBtX2RhdGEtPm1fZGlkQmVnaW5EcmF3ID0gZGlk
QmVnaW5EcmF3OwotfQotCiBib29sIEdyYXBoaWNzQ29udGV4dDo6ZGlkQmVnaW5EcmF3KCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbV9kYXRhLT5tX2RpZEJlZ2luRHJhdzsKKyAgICByZXR1cm4gbV9k
YXRhLT5kaWRCZWdpbkRyYXcoKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3Jt
SW5pdChIREMgaGRjLCBib29sIGhhc0FscGhhKQpAQCAtMjc5LDYgKzI3NCwxOSBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JEb2N1bWVuCiB7CiB9CiAKK0dyYXBoaWNzQ29udGV4
dFBsYXRmb3JtUHJpdmF0ZTo6R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKElEMkQxUmVu
ZGVyVGFyZ2V0KiByZW5kZXJUYXJnZXQpCisgICAgOiBtX3JlbmRlclRhcmdldChyZW5kZXJUYXJn
ZXQpCit7Cit9CisKK0dyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6fkdyYXBoaWNzQ29u
dGV4dFBsYXRmb3JtUHJpdmF0ZSgpCit7CisgICAgaWYgKCFtX3JlbmRlclRhcmdldCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgQVNTRVJUKCFtX2JlZ2luRHJhd0NvdW50LnVuc2FmZUdldCgpKTsK
K30KKwogQ09NUHRyPElEMkQxU29saWRDb2xvckJydXNoPiBHcmFwaGljc0NvbnRleHRQbGF0Zm9y
bVByaXZhdGU6OmJydXNoV2l0aENvbG9yKGNvbnN0IEQyRDFfQ09MT1JfRiYgY29sb3IpCiB7CiAg
ICAgUkdCQTMyIGNvbG9yS2V5ID0gbWFrZVJHQkEzMkZyb21GbG9hdHMoY29sb3IuciwgY29sb3Iu
ZywgY29sb3IuYiwgY29sb3IuYSk7CkBAIC0zMTEsNiArMzE5LDExIEBAIElEMkQxU29saWRDb2xv
ckJydXNoKiBHcmFwaGljc0NvbnRleHQ6OmIKIAogdm9pZCBHcmFwaGljc0NvbnRleHRQbGF0Zm9y
bVByaXZhdGU6OmNsaXAoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogeworICAgIC8vIEluIEQyRCwg
d2UgY2FuIG9ubHkgY2xpcCBpbiB0aGUgY29udGV4dCBvZiBhICdCZWdpbkRyYXcnLCBhbmQgdGhl
IGNsaXAgY2FuCisgICAgLy8gb25seSBsaXZlIGFzIGxvbmcgYXMgdGhlIGRyYXcgaXMgaGFwcGVu
aW5nLgorICAgIGlmICghZGlkQmVnaW5EcmF3KCkpCisgICAgICAgIGJlZ2luRHJhdygpOworCiAg
ICAgaWYgKG1fcmVuZGVyU3RhdGVzLmlzRW1wdHkoKSkKICAgICAgICAgc2F2ZSgpOwogCkBAIC0z
MjUsNiArMzM4LDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjpjbGkK
IAogdm9pZCBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6OmNsaXAoSUQyRDFHZW9tZXRy
eSogcGF0aCkKIHsKKyAgICAvLyBJbiBEMkQsIHdlIGNhbiBvbmx5IGNsaXAgaW4gdGhlIGNvbnRl
eHQgb2YgYSAnQmVnaW5EcmF3JywgYW5kIHRoZSBjbGlwIGNhbgorICAgIC8vIG9ubHkgbGl2ZSBh
cyBsb25nIGFzIHRoZSBkcmF3IGlzIGhhcHBlbmluZy4KKyAgICBpZiAoIWRpZEJlZ2luRHJhdygp
KQorICAgICAgICBiZWdpbkRyYXcoKTsKKwogICAgIEFTU0VSVChtX3JlbmRlclN0YXRlcy5zaXpl
KCkpOwogICAgIGlmICghbV9yZW5kZXJTdGF0ZXMuc2l6ZSgpKQogICAgICAgICByZXR1cm47CkBA
IC0zNjAsNiArMzc4LDE3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjpm
bHUKICAgICBSRUxFQVNFX0FTU0VSVChTVUNDRUVERUQoaHIpKTsKIH0KIAordm9pZCBHcmFwaGlj
c0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6OmJlZ2luRHJhdygpCit7CisgICAgQVNTRVJUKG1fcmVu
ZGVyVGFyZ2V0LmdldCgpKTsKKyAgICBpZiAoZGlkQmVnaW5EcmF3KCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fcmVuZGVyVGFyZ2V0LT5CZWdpbkRyYXcoKTsKKworICAgICsrbV9iZWdpbkRy
YXdDb3VudDsKK30KKwogdm9pZCBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6OmVuZERy
YXcoKQogewogICAgIEFTU0VSVChtX3JlbmRlclRhcmdldC5nZXQoKSk7CkBAIC0zNjgsNiArMzk3
LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6OmVuZAogCiAgICAgaWYg
KCFTVUNDRUVERUQoaHIpKQogICAgICAgICBXVEZMb2dBbHdheXMoIkZhaWxlZCBpbiBHcmFwaGlj
c0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6OmVuZERyYXc6IGhyPSVsZCwgZmlyc3Q9JWxkLCBzZWNv
bmQ9JWxkIiwgaHIsIGZpcnN0LCBzZWNvbmQpOworCisgICAgLS1tX2JlZ2luRHJhd0NvdW50Owog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6cmVzdG9yZSgpCkBAIC00
NjQsNiArNDk1LDIwIEBAIElEMkQxQnJ1c2gqIEdyYXBoaWNzQ29udGV4dDo6cGF0dGVybkZpbGwK
ICAgICByZXR1cm4gbV9kYXRhLT5tX3BhdHRlcm5GaWxsQnJ1c2guZ2V0KCk7CiB9CiAKK2Jvb2wg
R3JhcGhpY3NDb250ZXh0OjpiZWdpbkRyYXdJZk5lZWRlZCgpCit7CisgICAgaWYgKG1fZGF0YS0+
ZGlkQmVnaW5EcmF3KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fZGF0YS0+YmVn
aW5EcmF3KCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0Ojpl
bmREcmF3KCkKK3sKKyAgICBtX2RhdGEtPmVuZERyYXcoKTsKK30KKwogdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0
ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBz
cGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKICAg
ICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFwYXR0ZXJuVHJhbnNmb3JtLmlzSW52ZXJ0aWJs
ZSgpKQpAQCAtODQ4LDE5ICs4OTMsMTQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXRo
KGNvbnN0IFBhdAogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1dpdGhvdXRTaGFkb3coY29u
c3QgRmxvYXRSZWN0JiAvKmJvdW5kaW5nUmVjdCovLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQo
SUQyRDFSZW5kZXJUYXJnZXQqKT4mIGRyYXdDb21tYW5kcykKIHsKLSAgICBhdXRvIGNvbnRleHQg
PSBwbGF0Zm9ybUNvbnRleHQoKTsKLQotICAgIGlmICghZGlkQmVnaW5EcmF3KCkpCi0gICAgICAg
IGNvbnRleHQtPkJlZ2luRHJhdygpOwotCi0gICAgZHJhd0NvbW1hbmRzKGNvbnRleHQpOwotCi0g
ICAgaWYgKCFkaWRCZWdpbkRyYXcoKSkKLSAgICAgICAgbV9kYXRhLT5lbmREcmF3KCk7CisgICAg
UmVuZGVyVGFyZ2V0U2NvcGVkRHJhd2luZyBoZWxwZXIoKnRoaXMpOworICAgIGRyYXdDb21tYW5k
cyhwbGF0Zm9ybUNvbnRleHQoKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3V2l0
aFNoYWRvdyhjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nUmVjdCwgY29uc3Qgc3RkOjpmdW5jdGlv
bjx2b2lkKElEMkQxUmVuZGVyVGFyZ2V0Kik+JiBkcmF3Q29tbWFuZHMpCiB7CisgICAgUmVuZGVy
VGFyZ2V0U2NvcGVkRHJhd2luZyBoZWxwZXIoKnRoaXMpOworCiAgICAgYXV0byBjb250ZXh0ID0g
cGxhdGZvcm1Db250ZXh0KCk7CiAKICAgICAvLyBSZW5kZXIgdGhlIGN1cnJlbnQgZ2VvbWV0cnkg
dG8gYSBiaXRtYXAgY29udGV4dApAQCAtOTEzLDEwICs5NTMsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd1dpdGhTaGFkb3coY29uCiAgICAgYXV0byBmbGlwID0gRDJEMTo6TWF0cml4M3gy
Rjo6U2NhbGUoRDJEMTo6U2l6ZUYoMS4wZiwgLTEuMGYpKTsKICAgICBkZXZpY2VDb250ZXh0LT5T
ZXRUcmFuc2Zvcm0oY3RtICogZmxpcCAqIHRyYW5zbGF0ZSk7CiAKLSAgICBkZXZpY2VDb250ZXh0
LT5CZWdpbkRyYXcoKTsKICAgICBkZXZpY2VDb250ZXh0LT5EcmF3SW1hZ2UoY29tcG9zaXRvci5n
ZXQoKSwgRDJEMV9JTlRFUlBPTEFUSU9OX01PREVfTElORUFSKTsKLSAgICBociA9IGRldmljZUNv
bnRleHQtPkVuZERyYXcoKTsKLSAgICBBU1NFUlQoU1VDQ0VFREVEKGhyKSk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0aChjb25zdCBQYXRoJiBwYXRoKQpAQCAtMTEwNyw5ICsx
MTQ0LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRmlsbFJvdW5kZQogICAgICAg
ICBub3RJbXBsZW1lbnRlZCgpOwogICAgIH0KIAotICAgIGlmICghZGlkQmVnaW5EcmF3KCkpCi0g
ICAgICAgIGNvbnRleHQtPkJlZ2luRHJhdygpOwotICAgIAorICAgIFJlbmRlclRhcmdldFNjb3Bl
ZERyYXdpbmcgaGVscGVyKCp0aGlzKTsKKwogICAgIGNvbnRleHQtPlNldFRhZ3MoMSwgX19MSU5F
X18pOwogCiAgICAgY29uc3QgRmxvYXRSZWN0JiByID0gcmVjdC5yZWN0KCk7CkBAIC0xMTI5LDkg
KzExNjUsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1GaWxsUm91bmRlCiAgICAg
ICAgIGZpbGxQYXRoKHBhdGgpOwogICAgIH0KIAotICAgIGlmICghZGlkQmVnaW5EcmF3KCkpCi0g
ICAgICAgIG1fZGF0YS0+ZW5kRHJhdygpOwotCiAgICAgaWYgKGRyYXdPd25TaGFkb3cpCiAgICAg
ICAgIHN0YXRlU2F2ZXIucmVzdG9yZSgpOwogfQpAQCAtMTE0OCw4ICsxMTgxLDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZQogCiAgICAgYXV0byBjb250ZXh0ID0g
cGxhdGZvcm1Db250ZXh0KCk7CiAKLSAgICBpZiAoIWRpZEJlZ2luRHJhdygpKQotICAgICAgICBj
b250ZXh0LT5CZWdpbkRyYXcoKTsKKyAgICBSZW5kZXJUYXJnZXRTY29wZWREcmF3aW5nIGhlbHBl
cigqdGhpcyk7CiAKICAgICBjb250ZXh0LT5TZXRUYWdzKDEsIF9fTElORV9fKTsKIApAQCAtMTE3
OSw5ICsxMjExLDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZQog
CiAgICAgZmlsbFBhdGgocGF0aCk7CiAKLSAgICBpZiAoIWRpZEJlZ2luRHJhdygpKQotICAgICAg
ICBtX2RhdGEtPmVuZERyYXcoKTsKLQogICAgIGlmIChkcmF3T3duU2hhZG93KQogICAgICAgICBz
dGF0ZVNhdmVyLnJlc3RvcmUoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZURpcmVjdDJELmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29u
dGV4dFBsYXRmb3JtUHJpdmF0ZURpcmVjdDJELmgJKHJldmlzaW9uIDIwNzg2NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVBy
aXZhdGVEaXJlY3QyRC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVk
ZSA8ZDJkMWVmZmVjdHMuaD4KICNpbmNsdWRlIDxkMmQxaGVscGVyLmg+CiAjaW5jbHVkZSA8d2lu
ZG93cy5oPgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0
Zi9UaW55TFJVQ2FjaGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzksMTYgKzQwLDE1
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJp
dmF0ZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgR3JhcGhp
Y3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKElEMkQxUmVuZGVyVGFyZ2V0KiByZW5kZXJUYXJnZXQp
Ci0gICAgICAgIDogbV9yZW5kZXJUYXJnZXQocmVuZGVyVGFyZ2V0KQotICAgIHsKLSAgICB9Cisg
ICAgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKElEMkQxUmVuZGVyVGFyZ2V0Kik7Cisg
ICAgfkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZSgpOwogCiAgICAgZW51bSBEaXJlY3Qy
RExheWVyVHlwZSB7IEF4aXNBbGlnbmVkQ2xpcCwgTGF5ZXJDbGlwIH07CiAKICAgICB2b2lkIGNs
aXAoY29uc3QgRmxvYXRSZWN0Jik7CiAgICAgdm9pZCBjbGlwKGNvbnN0IFBhdGgmKTsKICAgICB2
b2lkIGNsaXAoSUQyRDFHZW9tZXRyeSopOworICAgIHZvaWQgYmVnaW5EcmF3KCk7CiAgICAgdm9p
ZCBlbmREcmF3KCk7CiAgICAgdm9pZCBmbHVzaCgpOwogICAgIHZvaWQgc2F2ZSgpOwpAQCAtNzUs
MTEgKzc1LDEzIEBAIHB1YmxpYzoKIAogICAgIENPTVB0cjxJRDJEMVNvbGlkQ29sb3JCcnVzaD4g
YnJ1c2hXaXRoQ29sb3IoY29uc3QgRDJEMV9DT0xPUl9GJik7CiAKKyAgICBib29sIGRpZEJlZ2lu
RHJhdygpIGNvbnN0IHsgcmV0dXJuIG1fYmVnaW5EcmF3Q291bnQudW5zYWZlR2V0KCk7IH0KKwog
ICAgIEhEQyBtX2hkYyB7IG51bGxwdHIgfTsKICAgICBEMkQxX0JMRU5EX01PREUgbV9ibGVuZE1v
ZGUgeyBEMkQxX0JMRU5EX01PREVfTVVMVElQTFkgfTsKICAgICBEMkQxX0NPTVBPU0lURV9NT0RF
IG1fY29tcG9zaXRlTW9kZSB7IEQyRDFfQ09NUE9TSVRFX01PREVfU09VUkNFX09WRVIgfTsKKyAg
ICBDaGVja2VkPHVuc2lnbmVkPiBtX2JlZ2luRHJhd0NvdW50IHsgMCB9OwogICAgIGJvb2wgbV9z
aG91bGRJbmNsdWRlQ2hpbGRXaW5kb3dzIHsgZmFsc2UgfTsKLSAgICBib29sIG1fZGlkQmVnaW5E
cmF3IHsgZmFsc2UgfTsKICAgICBib29sIG1fc3Ryb2tlU3lsZUlzRGlydHkgeyBmYWxzZSB9Owog
CiAgICAgQ09NUHRyPElEMkQxU29saWRDb2xvckJydXNoPiBtX3NvbGlkU3Ryb2tlQnJ1c2g7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEYXRh
RGlyZWN0MkQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9JbWFnZUJ1ZmZlckRhdGFEaXJlY3QyRC5jcHAJKHJldmlzaW9uIDIwNzg2NSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRhdGFEaXJl
Y3QyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJIV25k
REMuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIK
KyNpbmNsdWRlICJSZW5kZXJUYXJnZXRTY29wZWREcmF3aW5nLmgiCiAjaW5jbHVkZSA8ZDJkMS5o
PgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvVHlw
ZWRBcnJheUlubGluZXMuaD4KQEAgLTcwLDcgKzcxLDcgQEAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFy
cmF5PiBJbWFnZUJ1ZmZlckRhdAogICAgIGlmIChGQUlMRUQoaHIpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIHBsYXRmb3JtQ29udGV4dC0+QmVnaW5EcmF3KCk7CisgICAgUmVuZGVy
VGFyZ2V0U2NvcGVkRHJhd2luZyBoZWxwZXIoKmNvbnRleHQpOwogCiAgICAgSERDIGhkYyA9IG51
bGxwdHI7CiAgICAgaHIgPSBnZGlSZW5kZXJUYXJnZXQtPkdldERDKEQyRDFfRENfSU5JVElBTEla
RV9NT0RFX0NPUFksICZoZGMpOwpAQCAtODEsNiArODIsOCBAQCBSZWZQdHI8VWludDhDbGFtcGVk
QXJyYXk+IEltYWdlQnVmZmVyRGF0CiAKICAgICBociA9IHBsYXRmb3JtQ29udGV4dC0+RW5kRHJh
dygpOwogCisgICAgaGVscGVyLmVuZERyYXcoKTsKKwogICAgIGlmICghb2spCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vTmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL05hdGl2ZUltYWdlRGlyZWN0MkQuY3BwCShyZXZpc2lvbiAy
MDc4NjUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTmF0aXZlSW1h
Z2VEaXJlY3QyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiTm90
SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJSZW5kZXJUYXJnZXRTY29wZWREcmF3aW5nLmgiCiAj
aW5jbHVkZSA8ZDJkMS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04NSwxNCArODYsMTMg
QEAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdAogCiAgICAgZmxvYXQg
b3BhY2l0eSA9IDEuMGY7CiAKLSAgICBpZiAoIWNvbnRleHQuZGlkQmVnaW5EcmF3KCkpCi0gICAg
ICAgIHBsYXRmb3JtQ29udGV4dC0+QmVnaW5EcmF3KCk7CisgICAgYm9vbCB0ZW1wb3JhcnlEcmF3
ID0gY29udGV4dC5iZWdpbkRyYXdJZk5lZWRlZCgpOwogCiAgICAgcGxhdGZvcm1Db250ZXh0LT5E
cmF3Qml0bWFwKGltYWdlLmdldCgpLCBkZXN0UmVjdCwgb3BhY2l0eSwgRDJEMV9CSVRNQVBfSU5U
RVJQT0xBVElPTl9NT0RFX05FQVJFU1RfTkVJR0hCT1IsIGFkanVzdGVkU3JjUmVjdCk7CiAKICAg
ICBIUkVTVUxUIGhyID0gU19PSzsKLSAgICBpZiAoIWNvbnRleHQuZGlkQmVnaW5EcmF3KCkpCi0g
ICAgICAgIGhyID0gcGxhdGZvcm1Db250ZXh0LT5FbmREcmF3KCk7CisgICAgaWYgKHRlbXBvcmFy
eURyYXcpCisgICAgICAgIGNvbnRleHQuZW5kRHJhdygpOwogICAgIGVsc2UKICAgICAgICAgaHIg
PSBwbGF0Zm9ybUNvbnRleHQtPkZsdXNoKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9SZW5kZXJUYXJnZXRTY29wZWREcmF3aW5nLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1JlbmRlclRhcmdldFNjb3Bl
ZERyYXdpbmcuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vUmVuZGVyVGFyZ2V0U2NvcGVkRHJhd2luZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlbmRlclRhcmdldFNjb3BlZERyYXdpbmcgeworICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFJlbmRlclRhcmdldFNjb3BlZERyYXdpbmcpOworcHVibGljOgor
ICAgIFJlbmRlclRhcmdldFNjb3BlZERyYXdpbmcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQor
ICAgICAgICA6IG1fY29udGV4dChjb250ZXh0KQorICAgIHsKKyAgICAgICAgbV9kcmF3SXNTY29w
ZWQgPSBjb250ZXh0LmJlZ2luRHJhd0lmTmVlZGVkKCk7CisgICAgfQorCisgICAgflJlbmRlclRh
cmdldFNjb3BlZERyYXdpbmcoKQorICAgIHsKKyAgICAgICAgZW5kRHJhdygpOworICAgIH0KKwor
ICAgIHZvaWQgZW5kRHJhdygpCisgICAgeworICAgICAgICBpZiAobV9kcmF3SXNTY29wZWQpIHsK
KyAgICAgICAgICAgIG1fY29udGV4dC5lbmREcmF3KCk7CisgICAgICAgICAgICBtX2RyYXdJc1Nj
b3BlZCA9IGZhbHNlOworICAgICAgICB9CisgICAgfQorCitwcml2YXRlOgorICAgIEdyYXBoaWNz
Q29udGV4dCYgbV9jb250ZXh0OworICAgIGJvb2wgbV9kcmF3SXNTY29wZWQ7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJ
bWFnZS5jcHAJKHJldmlzaW9uIDIwNzg2NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9TVkdJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDA2IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+Ci0gKiBDb3B5cmln
aHQgKEMpIDIwMDgsIDIwMDksIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMDksIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVk
IDIwMTEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC00Myw2ICs0
Myw3IEBACiAjaW5jbHVkZSAiUGFnZUNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJSZW5kZXJT
VkdSb290LmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKKyNpbmNsdWRlICJSZW5kZXJUYXJn
ZXRTY29wZWREcmF3aW5nLmgiCiAjaW5jbHVkZSAiU1ZHRG9jdW1lbnQuaCIKICNpbmNsdWRlICJT
VkdGRUltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR0ZvcmVpZ25PYmplY3RFbGVtZW50Lmgi
CkBAIC0yMjQsMTQgKzIyNSwxMiBAQCBOYXRpdmVJbWFnZVB0ciBTVkdJbWFnZTo6bmF0aXZlSW1h
Z2UoY29uCiAgICAgSFJFU1VMVCBociA9IHBsYXRmb3JtQ29udGV4dC0+Q3JlYXRlQ29tcGF0aWJs
ZVJlbmRlclRhcmdldChJbnRTaXplKHJlY3QoKS5zaXplKCkpLCAmbmF0aXZlSW1hZ2VUYXJnZXQp
OwogICAgIEFTU0VSVChTVUNDRUVERUQoaHIpKTsKIAotICAgIG5hdGl2ZUltYWdlVGFyZ2V0LT5C
ZWdpbkRyYXcoKTsKICAgICBHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KG5hdGl2ZUltYWdl
VGFyZ2V0LmdldCgpKTsKLSAgICBsb2NhbENvbnRleHQuc2V0RGlkQmVnaW5EcmF3KHRydWUpOwog
CisgICAgeworICAgIFJlbmRlclRhcmdldFNjb3BlZERyYXdpbmcgaGVscGVyKGxvY2FsQ29udGV4
dCk7CiAgICAgZHJhdyhsb2NhbENvbnRleHQsIHJlY3QoKSwgcmVjdCgpLCBDb21wb3NpdGVTb3Vy
Y2VPdmVyLCBCbGVuZE1vZGVOb3JtYWwsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsK
LQotICAgIGhyID0gbmF0aXZlSW1hZ2VUYXJnZXQtPkZsdXNoKCk7Ci0gICAgQVNTRVJUKFNVQ0NF
RURFRChocikpOworICAgIH0KIAogICAgIENPTVB0cjxJRDJEMUJpdG1hcD4gbmF0aXZlSW1hZ2U7
CiAgICAgaHIgPSBuYXRpdmVJbWFnZVRhcmdldC0+R2V0Qml0bWFwKCZuYXRpdmVJbWFnZSk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDc4NjUpCisrKyBTb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxNi0xMC0yNSAg
QnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBbV2luXVtEaXJl
Y3QyRF0gQ3JlYXRlIGEgUklBQSBIZWxwZXIgQ2xhc3MgZm9yIHRoZSBSZW5kZXIgVGFyZ2V0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQwMDUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcu
Y3BwOgorICAgICAgICAoV2ViVmlldzo6c2l6ZUNoYW5nZWQpOiBDb25zdHJ1Y3QgUmVuZGVyVGFy
Z2V0IHdpdGggaGlnaGVyLXJlc29sdXRpb24gZGlzcGxheSB0aW1lci4KKyAgICAgICAgKFdlYlZp
ZXc6OnBhaW50V2l0aERpcmVjdDJEKTogUmV2aXNlIHRvIHVzZSBuZXcgUmVuZGVyVGFyZ2V0SGVs
cGVyIGNsYXNzLgorCiAyMDE2LTEwLTE5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2ZXJ0IHIyMDcxNTEKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZp
ZXcuY3BwCShyZXZpc2lvbiAyMDc4NjUpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTQyLDYgKzE0Miw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Q
b3B1cE1lbnVXaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Byb2dyZXNzVHJhY2tlci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVuZGVyTGF5ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlclRh
cmdldFNjb3BlZERyYXdpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlclRoZW1lLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJUcmVlQXNUZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9S
ZW5kZXJWaWV3Lmg+CkBAIC0xNjQsNiArMTY1LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRv
d01lc3NhZ2VCcm9hZGNhc3Rlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2luZG93c1RvdWNoLmg+
CiAjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KKyNpbmNsdWRlIDxjb21kZWYuaD4K
ICNpbmNsdWRlIDxkMmQxLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRl
IDx3dGYvUkFNU2l6ZS5oPgpAQCAtMTA2Myw3ICsxMDY1LDcgQEAgdm9pZCBXZWJWaWV3OjpzaXpl
Q2hhbmdlZChjb25zdCBJbnRTaXplJgogICAgIC8vIENyZWF0ZSBhIERpcmVjdDJEIHJlbmRlciB0
YXJnZXQuCiAgICAgYXV0byByZW5kZXJUYXJnZXRQcm9wZXJ0aWVzID0gRDJEMTo6UmVuZGVyVGFy
Z2V0UHJvcGVydGllcygpOwogICAgIHJlbmRlclRhcmdldFByb3BlcnRpZXMudXNhZ2UgPSBEMkQx
X1JFTkRFUl9UQVJHRVRfVVNBR0VfR0RJX0NPTVBBVElCTEU7Ci0gICAgYXV0byBod25kUmVuZGVy
VGFyZ2V0UHJvcGVydGllcyA9IEQyRDE6Okh3bmRSZW5kZXJUYXJnZXRQcm9wZXJ0aWVzKG1fdmll
d1dpbmRvdywgbmV3U2l6ZSk7CisgICAgYXV0byBod25kUmVuZGVyVGFyZ2V0UHJvcGVydGllcyA9
IEQyRDE6Okh3bmRSZW5kZXJUYXJnZXRQcm9wZXJ0aWVzKG1fdmlld1dpbmRvdywgbmV3U2l6ZSwg
RDJEMV9QUkVTRU5UX09QVElPTlNfSU1NRURJQVRFTFkpOwogICAgIEhSRVNVTFQgaHIgPSBHcmFw
aGljc0NvbnRleHQ6OnN5c3RlbUZhY3RvcnkoKS0+Q3JlYXRlSHduZFJlbmRlclRhcmdldCgmcmVu
ZGVyVGFyZ2V0UHJvcGVydGllcywgJmh3bmRSZW5kZXJUYXJnZXRQcm9wZXJ0aWVzLCAmbV9yZW5k
ZXJUYXJnZXQpOwogICAgIEFTU0VSVChTVUNDRUVERUQoaHIpKTsKICNlbmRpZgpAQCAtMTIzNiwx
MyArMTIzOCwxNSBAQCB2b2lkIFdlYlZpZXc6OnBhaW50V2l0aERpcmVjdDJEKCkKIAogICAgICAg
ICBhdXRvIHBpeGVsU2l6ZSA9IEQyRDE6OlNpemVVKGNsaWVudFJlY3Qud2lkdGgoKSwgY2xpZW50
UmVjdC5oZWlnaHQoKSk7CiAKLSAgICAgICAgYXV0byBod25kUmVuZGVyVGFyZ2V0UHJvcGVydGll
cyA9IEQyRDE6Okh3bmRSZW5kZXJUYXJnZXRQcm9wZXJ0aWVzKG1fdmlld1dpbmRvdywgcGl4ZWxT
aXplKTsKKyAgICAgICAgYXV0byBod25kUmVuZGVyVGFyZ2V0UHJvcGVydGllcyA9IEQyRDE6Okh3
bmRSZW5kZXJUYXJnZXRQcm9wZXJ0aWVzKG1fdmlld1dpbmRvdywgcGl4ZWxTaXplLCBEMkQxX1BS
RVNFTlRfT1BUSU9OU19JTU1FRElBVEVMWSk7CiAgICAgICAgIEhSRVNVTFQgaHIgPSBHcmFwaGlj
c0NvbnRleHQ6OnN5c3RlbUZhY3RvcnkoKS0+Q3JlYXRlSHduZFJlbmRlclRhcmdldCgmcmVuZGVy
VGFyZ2V0UHJvcGVydGllcywgJmh3bmRSZW5kZXJUYXJnZXRQcm9wZXJ0aWVzLCAmbV9yZW5kZXJU
YXJnZXQpOwogICAgICAgICBpZiAoIVNVQ0NFRURFRChocikpCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgbV9yZW5kZXJUYXJnZXQtPkJlZ2luRHJhdygpOworICAgIEdyYXBoaWNz
Q29udGV4dCBnYyhtX3JlbmRlclRhcmdldC5nZXQoKSk7CisKKyAgICBXZWJDb3JlOjpSZW5kZXJU
YXJnZXRTY29wZWREcmF3aW5nIGhlbHBlcihnYyk7CiAKICAgICBtX3JlbmRlclRhcmdldC0+U2V0
VGFncyhXRUJLSVRfRFJBV0lORywgX19MSU5FX18pOwogICAgIG1fcmVuZGVyVGFyZ2V0LT5DbGVh
cigpOwpAQCAtMTI1MSw3ICsxMjU1LDcgQEAgdm9pZCBXZWJWaWV3OjpwYWludFdpdGhEaXJlY3Qy
RCgpCiAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSAxLjBmOwogICAgIGZsb2F0IGludmVyc2VTY2Fs
ZUZhY3RvciA9IDEuMGYgLyBzY2FsZUZhY3RvcjsKIAotICAgIFJFQ1QgY2xpZW50UmVjdDsKKyAg
ICBSRUNUIGNsaWVudFJlY3QgPSB7fTsKICAgICBHZXRDbGllbnRSZWN0KG1fdmlld1dpbmRvdywg
JmNsaWVudFJlY3QpOwogCiAgICAgSW50UmVjdCBkaXJ0eVJlY3RQaXhlbHMoMCwgMCwgY2xpZW50
UmVjdC5yaWdodCwgY2xpZW50UmVjdC5ib3R0b20pOwpAQCAtMTI1OSw5ICsxMjYzLDYgQEAgdm9p
ZCBXZWJWaWV3OjpwYWludFdpdGhEaXJlY3QyRCgpCiAgICAgbG9naWNhbERpcnR5UmVjdEZsb2F0
LnNjYWxlKGludmVyc2VTY2FsZUZhY3Rvcik7CiAgICAgSW50UmVjdCBsb2dpY2FsRGlydHlSZWN0
KGVuY2xvc2luZ0ludFJlY3QobG9naWNhbERpcnR5UmVjdEZsb2F0KSk7CiAKLSAgICBHcmFwaGlj
c0NvbnRleHQgZ2MobV9yZW5kZXJUYXJnZXQuZ2V0KCkpOwotICAgIGdjLnNldERpZEJlZ2luRHJh
dyh0cnVlKTsKLQogICAgIGlmIChmcmFtZVZpZXcgJiYgZnJhbWVWaWV3LT5mcmFtZSgpLmNvbnRl
bnRSZW5kZXJlcigpKSB7CiAgICAgICAgIGdjLnNhdmUoKTsKICAgICAgICAgZ2Muc2NhbGUoRmxv
YXRTaXplKHNjYWxlRmFjdG9yLCBzY2FsZUZhY3RvcikpOwpAQCAtMTI3Miw5ICsxMjczLDcgQEAg
dm9pZCBXZWJWaWV3OjpwYWludFdpdGhEaXJlY3QyRCgpCiAgICAgICAgICAgICBnYy5maWxsUmVj
dChsb2dpY2FsRGlydHlSZWN0LCBDb2xvcjo6d2hpdGUsIENvbXBvc2l0ZURpZmZlcmVuY2UpOwog
ICAgIH0KIAotICAgIEhSRVNVTFQgaHIgPSBtX3JlbmRlclRhcmdldC0+RW5kRHJhdygpOwotICAg
IC8vIEZJWE1FOiBSZWNvZ25pemUgYW5kIHJlY292ZXIgZnJvbSBlcnJvciBzdGF0ZToKLSAgICBV
TlVTRURfUEFSQU0oaHIpOworICAgIGhlbHBlci5lbmREcmF3KCk7CiAKICAgICA6OlZhbGlkYXRl
UmVjdChtX3ZpZXdXaW5kb3csICZjbGllbnRSZWN0KTsKICNlbHNlCkBAIC0zMTUxLDYgKzMxNTAs
NyBAQCBIUkVTVUxUIFdlYlZpZXc6OmluaXRXaXRoRnJhbWUoUkVDVCBmcmFtCiAgICAgbV9wYWdl
LT5zZXREZXZpY2VTY2FsZUZhY3RvcihkZXZpY2VTY2FsZUZhY3RvcigpKTsKIAogICAgIHNldFNt
YXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChUUlVFKTsKKwogICAgIHJldHVybiBocjsKIH0KIApJbmRl
eDogU291cmNlL2NtYWtlL09wdGlvbnNBcHBsZVdpbi5jbWFrZQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvY21ha2UvT3B0aW9uc0FwcGxlV2luLmNtYWtlCShyZXZpc2lvbiAyMDc4NjUpCisrKyBTb3Vy
Y2UvY21ha2UvT3B0aW9uc0FwcGxlV2luLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC02LDcgKzYs
NyBAQCBzZXQoVVNFX0NGVVJMQ09OTkVDVElPTiAxKQogc2V0KFVTRV9JQ1VfVU5JQ09ERSAxKQog
CiAjIFVuY29tbWVudCB0aGUgZm9sbG93aW5nIGxpbmUgdG8gdHJ5IHRoZSBEaXJlY3QyRCBiYWNr
ZW5kLgotIyBzZXQoVVNFX0RJUkVDVDJEIDEpCitzZXQoVVNFX0RJUkVDVDJEIDEpCiAKIGlmICgk
e1VTRV9ESVJFQ1QyRH0pCiAgICAgYWRkX2RlZmluaXRpb25zKC1EVVNFX0RJUkVDVDJEPTEpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292878</attachid>
            <date>2016-10-25 23:17:41 -0700</date>
            <delta_ts>2016-10-27 14:33:35 -0700</delta_ts>
            <desc>Patch v3</desc>
            <filename>riaa_d2d_v3.patch</filename>
            <type>text/plain</type>
            <size>22586</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNzg2OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisyMDE2LTEwLTI1ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXaW5dW0RpcmVjdDJEXSBD
cmVhdGUgYSBSSUFBIEhlbHBlciBDbGFzcyBmb3IgdGhlIFJlbmRlciBUYXJnZXQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDAwNQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RlZCBieSBleGlzdGlu
ZyBTVkcsIGltYWdlLCBhbmQgQ2FudmFzIGxheW91dCB0ZXN0cy4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3dpbi9HcmFkaWVudERpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYWRpZW50
OjpmaWxsKTogVXNlIG5ldyBjb252ZW5pZW5jZSBoZWxwZXIgY2xhc3MuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZGlkQmVnaW5EcmF3KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6R3JhcGhpY3NDb250ZXh0UGxhdGZv
cm1Qcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJp
dmF0ZTo6fkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZSk6IEFkZCBhbgorICAgICAgICBh
c3NlcnRpb24gdGhhdCB3ZSBhcmUgaW4gYSB2YWxpZCBzdGF0ZSB3aGVuIGNsZWFuaW5nIHVwIHRo
ZSBncmFwaGljcyBjb250ZXh0LgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0UGxh
dGZvcm1Qcml2YXRlOjpjbGlwKTogQ2xpcHBpbmcgY2FuIG9ubHkgaGFwcGVuIGluIGEgRHJhdyBv
cGVyYXRpb24uCisgICAgICAgIE9wZW4gYSBuZXcgQmVnaW5EcmF3IGlmIGFza2VkIHRvIENsaXAu
IFRoZSBCZWdpbiBtdXN0IHN0YXkgYWN0aXZlIHdoZW4gdGhpcyBtZXRob2QgcmV0dXJucywKKyAg
ICAgICAgYXMgdGhlIENsaXAgbGF5ZXIgaXMgb25seSB2YWxpZCBkdXJpbmcgYSBEcmF3IG9wZXJh
dGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6
YmVnaW5EcmF3KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRQbGF0
Zm9ybVByaXZhdGU6OmVuZERyYXcpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6YmVnaW5EcmF3SWZOZWVkZWQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6ZW5kRHJhdyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpkcmF3V2l0aG91dFNoYWRvdyk6IFJldmlzZSB0byB1c2UgbmV3IFJlbmRlclRh
cmdldEhlbHBlciBjbGFzcy4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJh
d1dpdGhTaGFkb3cpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
cGxhdGZvcm1GaWxsUm91bmRlZFJlY3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RGlkQmVnaW5EcmF3KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRl
RGlyZWN0MkQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJp
dmF0ZTo6ZGlkQmVnaW5EcmF3KTogUmV2aXNlIHRvIHVzZSBjb3VudCBpbnN0ZWFkIG9mCisgICAg
ICAgIGEgc2VwYXJhdGUgYm9vbGVhbi4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VCdWZmZXJEYXRhRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXJEYXRhOjpnZXREYXRhKTogUmV2aXNlIHRvIHVzZSBuZXcgUmVuZGVyVGFyZ2V0SGVscGVyIGNs
YXNzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJbWFnZURpcmVjdDJE
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6IERpdHRvLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9SZW5kZXJUYXJnZXRIZWxwZXIuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYXJnZXRIZWxwZXI6OlJlbmRlclRhcmdldEhlbHBlcik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYXJnZXRIZWxwZXI6On5SZW5kZXJUYXJnZXRIZWxw
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFyZ2V0SGVscGVyOjplbmREcmF3KToKKyAg
ICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
SW1hZ2U6Om5hdGl2ZUltYWdlKTogUmV2aXNlIHRvIHVzZSBuZXcgUmVuZGVyVGFyZ2V0SGVscGVy
IGNsYXNzLgorCiAyMDE2LTEwLTI1ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29t
PgogCiAgICAgICAgIFtXaW5dIFVucmV2aWV3ZWQgYnVpbGQgZml4LgpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgJKHJldmlz
aW9uIDIwNzg2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NTIsOSArNTUyLDEwIEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSUQyRDFGYWN0b3J5KiBzeXN0ZW1GYWN0b3J5KCk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIElEMkQxUmVuZGVyVGFyZ2V0KiBkZWZhdWx0UmVuZGVy
VGFyZ2V0KCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldERpZEJlZ2luRHJhdyhib29s
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGJlZ2luRHJhd0lmTmVlZGVkKCk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBkaWRCZWdpbkRyYXcoKSBjb25zdDsKICAgICBEMkQxX0NPTE9SX0Yg
Y29sb3JXaXRoR2xvYmFsQWxwaGEoY29uc3QgQ29sb3ImKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGVuZERyYXcoKTsKIAogICAgIElEMkQxQnJ1c2gqIHNvbGlkU3Ryb2tlQnJ1c2go
KSBjb25zdDsKICAgICBJRDJEMUJydXNoKiBzb2xpZEZpbGxCcnVzaCgpIGNvbnN0OwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYWRpZW50RGlyZWN0MkQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFk
aWVudERpcmVjdDJELmNwcAkocmV2aXNpb24gMjA3ODY1KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0dyYWRpZW50RGlyZWN0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiUmVuZGVyVGFyZ2V0U2NvcGVkRHJhd2luZy5oIgog
I2luY2x1ZGUgPGQyZDEuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKQEAgLTEyMCwy
MCArMTIxLDEzIEBAIHZvaWQgR3JhZGllbnQ6OmZpbGwoR3JhcGhpY3NDb250ZXh0KiBjb24KICAg
ICBpZiAoIW1fY2FjaGVkSGFzaCB8fCAhbV9ncmFkaWVudCkKICAgICAgICAgZ2VuZXJhdGVHcmFk
aWVudChkMmRDb250ZXh0KTsKIAotICAgIGlmICghY29udGV4dC0+ZGlkQmVnaW5EcmF3KCkpCi0g
ICAgICAgIGQyZENvbnRleHQtPkJlZ2luRHJhdygpOworICAgIFJlbmRlclRhcmdldFNjb3BlZERy
YXdpbmcgaGVscGVyKCpjb250ZXh0KTsKIAogICAgIGQyZENvbnRleHQtPlNldFRhZ3MoR1JBRElF
TlRfRFJBV0lORywgX19MSU5FX18pOwogCiAgICAgY29uc3QgRDJEMV9SRUNUX0YgZDJkUmVjdCA9
IHJlY3Q7CiAgICAgZDJkQ29udGV4dC0+RmlsbFJlY3RhbmdsZSgmZDJkUmVjdCwgbV9ncmFkaWVu
dCk7CiAKLSAgICBpZiAoIWNvbnRleHQtPmRpZEJlZ2luRHJhdygpKSB7Ci0gICAgICAgIEQyRDFf
VEFHIGZpcnN0LCBzZWNvbmQ7Ci0gICAgICAgIEhSRVNVTFQgaHIgPSBkMmRDb250ZXh0LT5FbmRE
cmF3KCZmaXJzdCwgJnNlY29uZCk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKFNVQ0NFRURFRCho
cikpOwotICAgIH0KLQogICAgIGlmIChuZWVkU2NhbGluZykKICAgICAgICAgY29udGV4dC0+cmVz
dG9yZSgpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dy
YXBoaWNzQ29udGV4dERpcmVjdDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCShyZXZpc2lv
biAyMDc4NjUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhp
Y3NDb250ZXh0RGlyZWN0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAj
aW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAi
Tm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJSZW5kZXJUYXJnZXRTY29wZWREcmF3aW5nLmgi
CiAjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8ZDJkMS5oPgogI2luY2x1ZGUgPGQyZDFlZmZl
Y3RzLmg+CkBAIC05OCwxNSArOTksOSBAQCBJRDJEMVJlbmRlclRhcmdldCogR3JhcGhpY3NDb250
ZXh0OjpkZWZhCiAgICAgcmV0dXJuIGRlZmF1bHRSZW5kZXJUYXJnZXQ7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpzZXREaWRCZWdpbkRyYXcoYm9vbCBkaWRCZWdpbkRyYXcpCi17Ci0gICAg
UkVMRUFTRV9BU1NFUlQobV9kYXRhKTsKLSAgICBtX2RhdGEtPm1fZGlkQmVnaW5EcmF3ID0gZGlk
QmVnaW5EcmF3OwotfQotCiBib29sIEdyYXBoaWNzQ29udGV4dDo6ZGlkQmVnaW5EcmF3KCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbV9kYXRhLT5tX2RpZEJlZ2luRHJhdzsKKyAgICByZXR1cm4gbV9k
YXRhLT5kaWRCZWdpbkRyYXcoKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3Jt
SW5pdChIREMgaGRjLCBib29sIGhhc0FscGhhKQpAQCAtMjc5LDYgKzI3NCwxOSBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JEb2N1bWVuCiB7CiB9CiAKK0dyYXBoaWNzQ29udGV4
dFBsYXRmb3JtUHJpdmF0ZTo6R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKElEMkQxUmVu
ZGVyVGFyZ2V0KiByZW5kZXJUYXJnZXQpCisgICAgOiBtX3JlbmRlclRhcmdldChyZW5kZXJUYXJn
ZXQpCit7Cit9CisKK0dyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6fkdyYXBoaWNzQ29u
dGV4dFBsYXRmb3JtUHJpdmF0ZSgpCit7CisgICAgaWYgKCFtX3JlbmRlclRhcmdldCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgQVNTRVJUKCFtX2JlZ2luRHJhd0NvdW50LnVuc2FmZUdldCgpKTsK
K30KKwogQ09NUHRyPElEMkQxU29saWRDb2xvckJydXNoPiBHcmFwaGljc0NvbnRleHRQbGF0Zm9y
bVByaXZhdGU6OmJydXNoV2l0aENvbG9yKGNvbnN0IEQyRDFfQ09MT1JfRiYgY29sb3IpCiB7CiAg
ICAgUkdCQTMyIGNvbG9yS2V5ID0gbWFrZVJHQkEzMkZyb21GbG9hdHMoY29sb3IuciwgY29sb3Iu
ZywgY29sb3IuYiwgY29sb3IuYSk7CkBAIC0zMTEsNiArMzE5LDExIEBAIElEMkQxU29saWRDb2xv
ckJydXNoKiBHcmFwaGljc0NvbnRleHQ6OmIKIAogdm9pZCBHcmFwaGljc0NvbnRleHRQbGF0Zm9y
bVByaXZhdGU6OmNsaXAoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogeworICAgIC8vIEluIEQyRCwg
d2UgY2FuIG9ubHkgY2xpcCBpbiB0aGUgY29udGV4dCBvZiBhICdCZWdpbkRyYXcnLCBhbmQgdGhl
IGNsaXAgY2FuCisgICAgLy8gb25seSBsaXZlIGFzIGxvbmcgYXMgdGhlIGRyYXcgaXMgaGFwcGVu
aW5nLgorICAgIGlmICghZGlkQmVnaW5EcmF3KCkpCisgICAgICAgIGJlZ2luRHJhdygpOworCiAg
ICAgaWYgKG1fcmVuZGVyU3RhdGVzLmlzRW1wdHkoKSkKICAgICAgICAgc2F2ZSgpOwogCkBAIC0z
MjUsNiArMzM4LDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjpjbGkK
IAogdm9pZCBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6OmNsaXAoSUQyRDFHZW9tZXRy
eSogcGF0aCkKIHsKKyAgICAvLyBJbiBEMkQsIHdlIGNhbiBvbmx5IGNsaXAgaW4gdGhlIGNvbnRl
eHQgb2YgYSAnQmVnaW5EcmF3JywgYW5kIHRoZSBjbGlwIGNhbgorICAgIC8vIG9ubHkgbGl2ZSBh
cyBsb25nIGFzIHRoZSBkcmF3IGlzIGhhcHBlbmluZy4KKyAgICBpZiAoIWRpZEJlZ2luRHJhdygp
KQorICAgICAgICBiZWdpbkRyYXcoKTsKKwogICAgIEFTU0VSVChtX3JlbmRlclN0YXRlcy5zaXpl
KCkpOwogICAgIGlmICghbV9yZW5kZXJTdGF0ZXMuc2l6ZSgpKQogICAgICAgICByZXR1cm47CkBA
IC0zNjAsNiArMzc4LDE3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjpm
bHUKICAgICBSRUxFQVNFX0FTU0VSVChTVUNDRUVERUQoaHIpKTsKIH0KIAordm9pZCBHcmFwaGlj
c0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6OmJlZ2luRHJhdygpCit7CisgICAgQVNTRVJUKG1fcmVu
ZGVyVGFyZ2V0LmdldCgpKTsKKyAgICBpZiAoZGlkQmVnaW5EcmF3KCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fcmVuZGVyVGFyZ2V0LT5CZWdpbkRyYXcoKTsKKworICAgICsrbV9iZWdpbkRy
YXdDb3VudDsKK30KKwogdm9pZCBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6OmVuZERy
YXcoKQogewogICAgIEFTU0VSVChtX3JlbmRlclRhcmdldC5nZXQoKSk7CkBAIC0zNjgsNiArMzk3
LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6OmVuZAogCiAgICAgaWYg
KCFTVUNDRUVERUQoaHIpKQogICAgICAgICBXVEZMb2dBbHdheXMoIkZhaWxlZCBpbiBHcmFwaGlj
c0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6OmVuZERyYXc6IGhyPSVsZCwgZmlyc3Q9JWxkLCBzZWNv
bmQ9JWxkIiwgaHIsIGZpcnN0LCBzZWNvbmQpOworCisgICAgLS1tX2JlZ2luRHJhd0NvdW50Owog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6cmVzdG9yZSgpCkBAIC00
NjQsNiArNDk1LDIwIEBAIElEMkQxQnJ1c2gqIEdyYXBoaWNzQ29udGV4dDo6cGF0dGVybkZpbGwK
ICAgICByZXR1cm4gbV9kYXRhLT5tX3BhdHRlcm5GaWxsQnJ1c2guZ2V0KCk7CiB9CiAKK2Jvb2wg
R3JhcGhpY3NDb250ZXh0OjpiZWdpbkRyYXdJZk5lZWRlZCgpCit7CisgICAgaWYgKG1fZGF0YS0+
ZGlkQmVnaW5EcmF3KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fZGF0YS0+YmVn
aW5EcmF3KCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0Ojpl
bmREcmF3KCkKK3sKKyAgICBtX2RhdGEtPmVuZERyYXcoKTsKK30KKwogdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0
ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBz
cGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKICAg
ICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFwYXR0ZXJuVHJhbnNmb3JtLmlzSW52ZXJ0aWJs
ZSgpKQpAQCAtODQ4LDE5ICs4OTMsMTQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXRo
KGNvbnN0IFBhdAogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1dpdGhvdXRTaGFkb3coY29u
c3QgRmxvYXRSZWN0JiAvKmJvdW5kaW5nUmVjdCovLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQo
SUQyRDFSZW5kZXJUYXJnZXQqKT4mIGRyYXdDb21tYW5kcykKIHsKLSAgICBhdXRvIGNvbnRleHQg
PSBwbGF0Zm9ybUNvbnRleHQoKTsKLQotICAgIGlmICghZGlkQmVnaW5EcmF3KCkpCi0gICAgICAg
IGNvbnRleHQtPkJlZ2luRHJhdygpOwotCi0gICAgZHJhd0NvbW1hbmRzKGNvbnRleHQpOwotCi0g
ICAgaWYgKCFkaWRCZWdpbkRyYXcoKSkKLSAgICAgICAgbV9kYXRhLT5lbmREcmF3KCk7CisgICAg
UmVuZGVyVGFyZ2V0U2NvcGVkRHJhd2luZyBoZWxwZXIoKnRoaXMpOworICAgIGRyYXdDb21tYW5k
cyhwbGF0Zm9ybUNvbnRleHQoKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3V2l0
aFNoYWRvdyhjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nUmVjdCwgY29uc3Qgc3RkOjpmdW5jdGlv
bjx2b2lkKElEMkQxUmVuZGVyVGFyZ2V0Kik+JiBkcmF3Q29tbWFuZHMpCiB7CisgICAgUmVuZGVy
VGFyZ2V0U2NvcGVkRHJhd2luZyBoZWxwZXIoKnRoaXMpOworCiAgICAgYXV0byBjb250ZXh0ID0g
cGxhdGZvcm1Db250ZXh0KCk7CiAKICAgICAvLyBSZW5kZXIgdGhlIGN1cnJlbnQgZ2VvbWV0cnkg
dG8gYSBiaXRtYXAgY29udGV4dApAQCAtOTEzLDEwICs5NTMsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd1dpdGhTaGFkb3coY29uCiAgICAgYXV0byBmbGlwID0gRDJEMTo6TWF0cml4M3gy
Rjo6U2NhbGUoRDJEMTo6U2l6ZUYoMS4wZiwgLTEuMGYpKTsKICAgICBkZXZpY2VDb250ZXh0LT5T
ZXRUcmFuc2Zvcm0oY3RtICogZmxpcCAqIHRyYW5zbGF0ZSk7CiAKLSAgICBkZXZpY2VDb250ZXh0
LT5CZWdpbkRyYXcoKTsKICAgICBkZXZpY2VDb250ZXh0LT5EcmF3SW1hZ2UoY29tcG9zaXRvci5n
ZXQoKSwgRDJEMV9JTlRFUlBPTEFUSU9OX01PREVfTElORUFSKTsKLSAgICBociA9IGRldmljZUNv
bnRleHQtPkVuZERyYXcoKTsKLSAgICBBU1NFUlQoU1VDQ0VFREVEKGhyKSk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0aChjb25zdCBQYXRoJiBwYXRoKQpAQCAtMTEwNyw5ICsx
MTQ0LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRmlsbFJvdW5kZQogICAgICAg
ICBub3RJbXBsZW1lbnRlZCgpOwogICAgIH0KIAotICAgIGlmICghZGlkQmVnaW5EcmF3KCkpCi0g
ICAgICAgIGNvbnRleHQtPkJlZ2luRHJhdygpOwotICAgIAorICAgIFJlbmRlclRhcmdldFNjb3Bl
ZERyYXdpbmcgaGVscGVyKCp0aGlzKTsKKwogICAgIGNvbnRleHQtPlNldFRhZ3MoMSwgX19MSU5F
X18pOwogCiAgICAgY29uc3QgRmxvYXRSZWN0JiByID0gcmVjdC5yZWN0KCk7CkBAIC0xMTI5LDkg
KzExNjUsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1GaWxsUm91bmRlCiAgICAg
ICAgIGZpbGxQYXRoKHBhdGgpOwogICAgIH0KIAotICAgIGlmICghZGlkQmVnaW5EcmF3KCkpCi0g
ICAgICAgIG1fZGF0YS0+ZW5kRHJhdygpOwotCiAgICAgaWYgKGRyYXdPd25TaGFkb3cpCiAgICAg
ICAgIHN0YXRlU2F2ZXIucmVzdG9yZSgpOwogfQpAQCAtMTE0OCw4ICsxMTgxLDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZQogCiAgICAgYXV0byBjb250ZXh0ID0g
cGxhdGZvcm1Db250ZXh0KCk7CiAKLSAgICBpZiAoIWRpZEJlZ2luRHJhdygpKQotICAgICAgICBj
b250ZXh0LT5CZWdpbkRyYXcoKTsKKyAgICBSZW5kZXJUYXJnZXRTY29wZWREcmF3aW5nIGhlbHBl
cigqdGhpcyk7CiAKICAgICBjb250ZXh0LT5TZXRUYWdzKDEsIF9fTElORV9fKTsKIApAQCAtMTE3
OSw5ICsxMjExLDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZQog
CiAgICAgZmlsbFBhdGgocGF0aCk7CiAKLSAgICBpZiAoIWRpZEJlZ2luRHJhdygpKQotICAgICAg
ICBtX2RhdGEtPmVuZERyYXcoKTsKLQogICAgIGlmIChkcmF3T3duU2hhZG93KQogICAgICAgICBz
dGF0ZVNhdmVyLnJlc3RvcmUoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZURpcmVjdDJELmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29u
dGV4dFBsYXRmb3JtUHJpdmF0ZURpcmVjdDJELmgJKHJldmlzaW9uIDIwNzg2NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVBy
aXZhdGVEaXJlY3QyRC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVk
ZSA8ZDJkMWVmZmVjdHMuaD4KICNpbmNsdWRlIDxkMmQxaGVscGVyLmg+CiAjaW5jbHVkZSA8d2lu
ZG93cy5oPgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0
Zi9UaW55TFJVQ2FjaGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzksMTYgKzQwLDE1
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJp
dmF0ZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgR3JhcGhp
Y3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKElEMkQxUmVuZGVyVGFyZ2V0KiByZW5kZXJUYXJnZXQp
Ci0gICAgICAgIDogbV9yZW5kZXJUYXJnZXQocmVuZGVyVGFyZ2V0KQotICAgIHsKLSAgICB9Cisg
ICAgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKElEMkQxUmVuZGVyVGFyZ2V0Kik7Cisg
ICAgfkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZSgpOwogCiAgICAgZW51bSBEaXJlY3Qy
RExheWVyVHlwZSB7IEF4aXNBbGlnbmVkQ2xpcCwgTGF5ZXJDbGlwIH07CiAKICAgICB2b2lkIGNs
aXAoY29uc3QgRmxvYXRSZWN0Jik7CiAgICAgdm9pZCBjbGlwKGNvbnN0IFBhdGgmKTsKICAgICB2
b2lkIGNsaXAoSUQyRDFHZW9tZXRyeSopOworICAgIHZvaWQgYmVnaW5EcmF3KCk7CiAgICAgdm9p
ZCBlbmREcmF3KCk7CiAgICAgdm9pZCBmbHVzaCgpOwogICAgIHZvaWQgc2F2ZSgpOwpAQCAtNzUs
MTEgKzc1LDEzIEBAIHB1YmxpYzoKIAogICAgIENPTVB0cjxJRDJEMVNvbGlkQ29sb3JCcnVzaD4g
YnJ1c2hXaXRoQ29sb3IoY29uc3QgRDJEMV9DT0xPUl9GJik7CiAKKyAgICBib29sIGRpZEJlZ2lu
RHJhdygpIGNvbnN0IHsgcmV0dXJuIG1fYmVnaW5EcmF3Q291bnQudW5zYWZlR2V0KCk7IH0KKwog
ICAgIEhEQyBtX2hkYyB7IG51bGxwdHIgfTsKICAgICBEMkQxX0JMRU5EX01PREUgbV9ibGVuZE1v
ZGUgeyBEMkQxX0JMRU5EX01PREVfTVVMVElQTFkgfTsKICAgICBEMkQxX0NPTVBPU0lURV9NT0RF
IG1fY29tcG9zaXRlTW9kZSB7IEQyRDFfQ09NUE9TSVRFX01PREVfU09VUkNFX09WRVIgfTsKKyAg
ICBDaGVja2VkPHVuc2lnbmVkPiBtX2JlZ2luRHJhd0NvdW50IHsgMCB9OwogICAgIGJvb2wgbV9z
aG91bGRJbmNsdWRlQ2hpbGRXaW5kb3dzIHsgZmFsc2UgfTsKLSAgICBib29sIG1fZGlkQmVnaW5E
cmF3IHsgZmFsc2UgfTsKICAgICBib29sIG1fc3Ryb2tlU3lsZUlzRGlydHkgeyBmYWxzZSB9Owog
CiAgICAgQ09NUHRyPElEMkQxU29saWRDb2xvckJydXNoPiBtX3NvbGlkU3Ryb2tlQnJ1c2g7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEYXRh
RGlyZWN0MkQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9JbWFnZUJ1ZmZlckRhdGFEaXJlY3QyRC5jcHAJKHJldmlzaW9uIDIwNzg2NSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRhdGFEaXJl
Y3QyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJIV25k
REMuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIK
KyNpbmNsdWRlICJSZW5kZXJUYXJnZXRTY29wZWREcmF3aW5nLmgiCiAjaW5jbHVkZSA8ZDJkMS5o
PgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvVHlw
ZWRBcnJheUlubGluZXMuaD4KQEAgLTcwLDcgKzcxLDcgQEAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFy
cmF5PiBJbWFnZUJ1ZmZlckRhdAogICAgIGlmIChGQUlMRUQoaHIpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIHBsYXRmb3JtQ29udGV4dC0+QmVnaW5EcmF3KCk7CisgICAgUmVuZGVy
VGFyZ2V0U2NvcGVkRHJhd2luZyBoZWxwZXIoKmNvbnRleHQpOwogCiAgICAgSERDIGhkYyA9IG51
bGxwdHI7CiAgICAgaHIgPSBnZGlSZW5kZXJUYXJnZXQtPkdldERDKEQyRDFfRENfSU5JVElBTEla
RV9NT0RFX0NPUFksICZoZGMpOwpAQCAtODEsNiArODIsOCBAQCBSZWZQdHI8VWludDhDbGFtcGVk
QXJyYXk+IEltYWdlQnVmZmVyRGF0CiAKICAgICBociA9IHBsYXRmb3JtQ29udGV4dC0+RW5kRHJh
dygpOwogCisgICAgaGVscGVyLmVuZERyYXcoKTsKKwogICAgIGlmICghb2spCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vTmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL05hdGl2ZUltYWdlRGlyZWN0MkQuY3BwCShyZXZpc2lvbiAy
MDc4NjUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTmF0aXZlSW1h
Z2VEaXJlY3QyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiTm90
SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJSZW5kZXJUYXJnZXRTY29wZWREcmF3aW5nLmgiCiAj
aW5jbHVkZSA8ZDJkMS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04NSwxNCArODYsMTMg
QEAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdAogCiAgICAgZmxvYXQg
b3BhY2l0eSA9IDEuMGY7CiAKLSAgICBpZiAoIWNvbnRleHQuZGlkQmVnaW5EcmF3KCkpCi0gICAg
ICAgIHBsYXRmb3JtQ29udGV4dC0+QmVnaW5EcmF3KCk7CisgICAgYm9vbCB0ZW1wb3JhcnlEcmF3
ID0gY29udGV4dC5iZWdpbkRyYXdJZk5lZWRlZCgpOwogCiAgICAgcGxhdGZvcm1Db250ZXh0LT5E
cmF3Qml0bWFwKGltYWdlLmdldCgpLCBkZXN0UmVjdCwgb3BhY2l0eSwgRDJEMV9CSVRNQVBfSU5U
RVJQT0xBVElPTl9NT0RFX05FQVJFU1RfTkVJR0hCT1IsIGFkanVzdGVkU3JjUmVjdCk7CiAKICAg
ICBIUkVTVUxUIGhyID0gU19PSzsKLSAgICBpZiAoIWNvbnRleHQuZGlkQmVnaW5EcmF3KCkpCi0g
ICAgICAgIGhyID0gcGxhdGZvcm1Db250ZXh0LT5FbmREcmF3KCk7CisgICAgaWYgKHRlbXBvcmFy
eURyYXcpCisgICAgICAgIGNvbnRleHQuZW5kRHJhdygpOwogICAgIGVsc2UKICAgICAgICAgaHIg
PSBwbGF0Zm9ybUNvbnRleHQtPkZsdXNoKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9SZW5kZXJUYXJnZXRTY29wZWREcmF3aW5nLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1JlbmRlclRhcmdldFNjb3Bl
ZERyYXdpbmcuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vUmVuZGVyVGFyZ2V0U2NvcGVkRHJhd2luZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlbmRlclRhcmdldFNjb3BlZERyYXdpbmcgeworICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFJlbmRlclRhcmdldFNjb3BlZERyYXdpbmcpOworcHVibGljOgor
ICAgIFJlbmRlclRhcmdldFNjb3BlZERyYXdpbmcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQor
ICAgICAgICA6IG1fY29udGV4dChjb250ZXh0KQorICAgIHsKKyAgICAgICAgbV9kcmF3SXNTY29w
ZWQgPSBjb250ZXh0LmJlZ2luRHJhd0lmTmVlZGVkKCk7CisgICAgfQorCisgICAgflJlbmRlclRh
cmdldFNjb3BlZERyYXdpbmcoKQorICAgIHsKKyAgICAgICAgZW5kRHJhdygpOworICAgIH0KKwor
ICAgIHZvaWQgZW5kRHJhdygpCisgICAgeworICAgICAgICBpZiAoIW1fZHJhd0lzU2NvcGVkKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgCisgICAgICAgIG1fY29udGV4dC5lbmRE
cmF3KCk7CisgICAgICAgIG1fZHJhd0lzU2NvcGVkID0gZmFsc2U7CisgICAgfQorCitwcml2YXRl
OgorICAgIEdyYXBoaWNzQ29udGV4dCYgbV9jb250ZXh0OworICAgIGJvb2wgbV9kcmF3SXNTY29w
ZWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAJKHJldmlzaW9uIDIwNzg2NSkKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5v
cmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMDksIDIwMTUtMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIElu
IE1vdGlvbiBMaW1pdGVkIDIwMTEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiUGFnZUNvbmZpZ3VyYXRpb24uaCIKICNp
bmNsdWRlICJSZW5kZXJTVkdSb290LmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKKyNpbmNs
dWRlICJSZW5kZXJUYXJnZXRTY29wZWREcmF3aW5nLmgiCiAjaW5jbHVkZSAiU1ZHRG9jdW1lbnQu
aCIKICNpbmNsdWRlICJTVkdGRUltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR0ZvcmVpZ25P
YmplY3RFbGVtZW50LmgiCkBAIC0yMjQsMTQgKzIyNSwxMiBAQCBOYXRpdmVJbWFnZVB0ciBTVkdJ
bWFnZTo6bmF0aXZlSW1hZ2UoY29uCiAgICAgSFJFU1VMVCBociA9IHBsYXRmb3JtQ29udGV4dC0+
Q3JlYXRlQ29tcGF0aWJsZVJlbmRlclRhcmdldChJbnRTaXplKHJlY3QoKS5zaXplKCkpLCAmbmF0
aXZlSW1hZ2VUYXJnZXQpOwogICAgIEFTU0VSVChTVUNDRUVERUQoaHIpKTsKIAotICAgIG5hdGl2
ZUltYWdlVGFyZ2V0LT5CZWdpbkRyYXcoKTsKICAgICBHcmFwaGljc0NvbnRleHQgbG9jYWxDb250
ZXh0KG5hdGl2ZUltYWdlVGFyZ2V0LmdldCgpKTsKLSAgICBsb2NhbENvbnRleHQuc2V0RGlkQmVn
aW5EcmF3KHRydWUpOwogCisgICAgeworICAgIFJlbmRlclRhcmdldFNjb3BlZERyYXdpbmcgaGVs
cGVyKGxvY2FsQ29udGV4dCk7CiAgICAgZHJhdyhsb2NhbENvbnRleHQsIHJlY3QoKSwgcmVjdCgp
LCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGVOb3JtYWwsIEltYWdlT3JpZW50YXRpb25E
ZXNjcmlwdGlvbigpKTsKLQotICAgIGhyID0gbmF0aXZlSW1hZ2VUYXJnZXQtPkZsdXNoKCk7Ci0g
ICAgQVNTRVJUKFNVQ0NFRURFRChocikpOworICAgIH0KIAogICAgIENPTVB0cjxJRDJEMUJpdG1h
cD4gbmF0aXZlSW1hZ2U7CiAgICAgaHIgPSBuYXRpdmVJbWFnZVRhcmdldC0+R2V0Qml0bWFwKCZu
YXRpdmVJbWFnZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDc4NjUpCisrKyBT
b3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBA
QAorMjAxNi0xMC0yNSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAg
ICAgICBbV2luXVtEaXJlY3QyRF0gQ3JlYXRlIGEgUklBQSBIZWxwZXIgQ2xhc3MgZm9yIHRoZSBS
ZW5kZXIgVGFyZ2V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjQwMDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6c2l6ZUNoYW5nZWQpOiBDb25z
dHJ1Y3QgUmVuZGVyVGFyZ2V0IHdpdGggaGlnaGVyLXJlc29sdXRpb24gZGlzcGxheSB0aW1lci4K
KyAgICAgICAgKFdlYlZpZXc6OnBhaW50V2l0aERpcmVjdDJEKTogUmV2aXNlIHRvIHVzZSBuZXcg
UmVuZGVyVGFyZ2V0SGVscGVyIGNsYXNzLgorCiAyMDE2LTEwLTE5ICBBbGV4IENocmlzdGVuc2Vu
ICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2ZXJ0IHIyMDcxNTEKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiAyMDc4NjUpCisrKyBTb3VyY2UvV2ViS2l0
L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQyLDYgKzE0Miw3IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9Qb3B1cE1lbnVXaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Byb2dyZXNz
VHJhY2tlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyTGF5ZXIuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1JlbmRlclRhcmdldFNjb3BlZERyYXdpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jl
bmRlclRoZW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJUcmVlQXNUZXh0Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9SZW5kZXJWaWV3Lmg+CkBAIC0xNjQsNiArMTY1LDcgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL1dpbmRvd01lc3NhZ2VCcm9hZGNhc3Rlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
V2luZG93c1RvdWNoLmg+CiAjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KKyNpbmNs
dWRlIDxjb21kZWYuaD4KICNpbmNsdWRlIDxkMmQxLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KICNpbmNsdWRlIDx3dGYvUkFNU2l6ZS5oPgpAQCAtMTA2Myw3ICsxMDY1LDcgQEAgdm9p
ZCBXZWJWaWV3OjpzaXplQ2hhbmdlZChjb25zdCBJbnRTaXplJgogICAgIC8vIENyZWF0ZSBhIERp
cmVjdDJEIHJlbmRlciB0YXJnZXQuCiAgICAgYXV0byByZW5kZXJUYXJnZXRQcm9wZXJ0aWVzID0g
RDJEMTo6UmVuZGVyVGFyZ2V0UHJvcGVydGllcygpOwogICAgIHJlbmRlclRhcmdldFByb3BlcnRp
ZXMudXNhZ2UgPSBEMkQxX1JFTkRFUl9UQVJHRVRfVVNBR0VfR0RJX0NPTVBBVElCTEU7Ci0gICAg
YXV0byBod25kUmVuZGVyVGFyZ2V0UHJvcGVydGllcyA9IEQyRDE6Okh3bmRSZW5kZXJUYXJnZXRQ
cm9wZXJ0aWVzKG1fdmlld1dpbmRvdywgbmV3U2l6ZSk7CisgICAgYXV0byBod25kUmVuZGVyVGFy
Z2V0UHJvcGVydGllcyA9IEQyRDE6Okh3bmRSZW5kZXJUYXJnZXRQcm9wZXJ0aWVzKG1fdmlld1dp
bmRvdywgbmV3U2l6ZSwgRDJEMV9QUkVTRU5UX09QVElPTlNfSU1NRURJQVRFTFkpOwogICAgIEhS
RVNVTFQgaHIgPSBHcmFwaGljc0NvbnRleHQ6OnN5c3RlbUZhY3RvcnkoKS0+Q3JlYXRlSHduZFJl
bmRlclRhcmdldCgmcmVuZGVyVGFyZ2V0UHJvcGVydGllcywgJmh3bmRSZW5kZXJUYXJnZXRQcm9w
ZXJ0aWVzLCAmbV9yZW5kZXJUYXJnZXQpOwogICAgIEFTU0VSVChTVUNDRUVERUQoaHIpKTsKICNl
bmRpZgpAQCAtMTIzNiwxMyArMTIzOCwxNSBAQCB2b2lkIFdlYlZpZXc6OnBhaW50V2l0aERpcmVj
dDJEKCkKIAogICAgICAgICBhdXRvIHBpeGVsU2l6ZSA9IEQyRDE6OlNpemVVKGNsaWVudFJlY3Qu
d2lkdGgoKSwgY2xpZW50UmVjdC5oZWlnaHQoKSk7CiAKLSAgICAgICAgYXV0byBod25kUmVuZGVy
VGFyZ2V0UHJvcGVydGllcyA9IEQyRDE6Okh3bmRSZW5kZXJUYXJnZXRQcm9wZXJ0aWVzKG1fdmll
d1dpbmRvdywgcGl4ZWxTaXplKTsKKyAgICAgICAgYXV0byBod25kUmVuZGVyVGFyZ2V0UHJvcGVy
dGllcyA9IEQyRDE6Okh3bmRSZW5kZXJUYXJnZXRQcm9wZXJ0aWVzKG1fdmlld1dpbmRvdywgcGl4
ZWxTaXplLCBEMkQxX1BSRVNFTlRfT1BUSU9OU19JTU1FRElBVEVMWSk7CiAgICAgICAgIEhSRVNV
TFQgaHIgPSBHcmFwaGljc0NvbnRleHQ6OnN5c3RlbUZhY3RvcnkoKS0+Q3JlYXRlSHduZFJlbmRl
clRhcmdldCgmcmVuZGVyVGFyZ2V0UHJvcGVydGllcywgJmh3bmRSZW5kZXJUYXJnZXRQcm9wZXJ0
aWVzLCAmbV9yZW5kZXJUYXJnZXQpOwogICAgICAgICBpZiAoIVNVQ0NFRURFRChocikpCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9yZW5kZXJUYXJnZXQtPkJlZ2luRHJhdygp
OworICAgIEdyYXBoaWNzQ29udGV4dCBnYyhtX3JlbmRlclRhcmdldC5nZXQoKSk7CisKKyAgICBX
ZWJDb3JlOjpSZW5kZXJUYXJnZXRTY29wZWREcmF3aW5nIGhlbHBlcihnYyk7CiAKICAgICBtX3Jl
bmRlclRhcmdldC0+U2V0VGFncyhXRUJLSVRfRFJBV0lORywgX19MSU5FX18pOwogICAgIG1fcmVu
ZGVyVGFyZ2V0LT5DbGVhcigpOwpAQCAtMTI1MSw3ICsxMjU1LDcgQEAgdm9pZCBXZWJWaWV3Ojpw
YWludFdpdGhEaXJlY3QyRCgpCiAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSAxLjBmOwogICAgIGZs
b2F0IGludmVyc2VTY2FsZUZhY3RvciA9IDEuMGYgLyBzY2FsZUZhY3RvcjsKIAotICAgIFJFQ1Qg
Y2xpZW50UmVjdDsKKyAgICBSRUNUIGNsaWVudFJlY3QgPSB7IH07CiAgICAgR2V0Q2xpZW50UmVj
dChtX3ZpZXdXaW5kb3csICZjbGllbnRSZWN0KTsKIAogICAgIEludFJlY3QgZGlydHlSZWN0UGl4
ZWxzKDAsIDAsIGNsaWVudFJlY3QucmlnaHQsIGNsaWVudFJlY3QuYm90dG9tKTsKQEAgLTEyNTks
OSArMTI2Myw2IEBAIHZvaWQgV2ViVmlldzo6cGFpbnRXaXRoRGlyZWN0MkQoKQogICAgIGxvZ2lj
YWxEaXJ0eVJlY3RGbG9hdC5zY2FsZShpbnZlcnNlU2NhbGVGYWN0b3IpOwogICAgIEludFJlY3Qg
bG9naWNhbERpcnR5UmVjdChlbmNsb3NpbmdJbnRSZWN0KGxvZ2ljYWxEaXJ0eVJlY3RGbG9hdCkp
OwogCi0gICAgR3JhcGhpY3NDb250ZXh0IGdjKG1fcmVuZGVyVGFyZ2V0LmdldCgpKTsKLSAgICBn
Yy5zZXREaWRCZWdpbkRyYXcodHJ1ZSk7Ci0KICAgICBpZiAoZnJhbWVWaWV3ICYmIGZyYW1lVmll
dy0+ZnJhbWUoKS5jb250ZW50UmVuZGVyZXIoKSkgewogICAgICAgICBnYy5zYXZlKCk7CiAgICAg
ICAgIGdjLnNjYWxlKEZsb2F0U2l6ZShzY2FsZUZhY3Rvciwgc2NhbGVGYWN0b3IpKTsKQEAgLTEy
NzIsOSArMTI3Myw3IEBAIHZvaWQgV2ViVmlldzo6cGFpbnRXaXRoRGlyZWN0MkQoKQogICAgICAg
ICAgICAgZ2MuZmlsbFJlY3QobG9naWNhbERpcnR5UmVjdCwgQ29sb3I6OndoaXRlLCBDb21wb3Np
dGVEaWZmZXJlbmNlKTsKICAgICB9CiAKLSAgICBIUkVTVUxUIGhyID0gbV9yZW5kZXJUYXJnZXQt
PkVuZERyYXcoKTsKLSAgICAvLyBGSVhNRTogUmVjb2duaXplIGFuZCByZWNvdmVyIGZyb20gZXJy
b3Igc3RhdGU6Ci0gICAgVU5VU0VEX1BBUkFNKGhyKTsKKyAgICBoZWxwZXIuZW5kRHJhdygpOwog
CiAgICAgOjpWYWxpZGF0ZVJlY3QobV92aWV3V2luZG93LCAmY2xpZW50UmVjdCk7CiAjZWxzZQpA
QCAtMzE1MSw2ICszMTUwLDcgQEAgSFJFU1VMVCBXZWJWaWV3Ojppbml0V2l0aEZyYW1lKFJFQ1Qg
ZnJhbQogICAgIG1fcGFnZS0+c2V0RGV2aWNlU2NhbGVGYWN0b3IoZGV2aWNlU2NhbGVGYWN0b3Io
KSk7CiAKICAgICBzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoVFJVRSk7CisKICAgICByZXR1
cm4gaHI7CiB9CiAKSW5kZXg6IFNvdXJjZS9jbWFrZS9PcHRpb25zQXBwbGVXaW4uY21ha2UKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL2NtYWtlL09wdGlvbnNBcHBsZVdpbi5jbWFrZQkocmV2aXNpb24g
MjA3ODY1KQorKysgU291cmNlL2NtYWtlL09wdGlvbnNBcHBsZVdpbi5jbWFrZQkod29ya2luZyBj
b3B5KQpAQCAtNiw3ICs2LDcgQEAgc2V0KFVTRV9DRlVSTENPTk5FQ1RJT04gMSkKIHNldChVU0Vf
SUNVX1VOSUNPREUgMSkKIAogIyBVbmNvbW1lbnQgdGhlIGZvbGxvd2luZyBsaW5lIHRvIHRyeSB0
aGUgRGlyZWN0MkQgYmFja2VuZC4KLSMgc2V0KFVTRV9ESVJFQ1QyRCAxKQorc2V0KFVTRV9ESVJF
Q1QyRCAxKQogCiBpZiAoJHtVU0VfRElSRUNUMkR9KQogICAgIGFkZF9kZWZpbml0aW9ucygtRFVT
RV9ESVJFQ1QyRD0xKQo=
</data>
<flag name="commit-queue"
          id="315863"
          type_id="3"
          status="-"
          setter="bfulgham"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293058</attachid>
            <date>2016-10-27 14:33:35 -0700</date>
            <delta_ts>2016-10-27 15:54:43 -0700</delta_ts>
            <desc>Patch v4</desc>
            <filename>riaa_d2d_v4.patch</filename>
            <type>text/plain</type>
            <size>23110</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwODAwNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisyMDE2LTEwLTI1ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXaW5dW0RpcmVjdDJEXSBD
cmVhdGUgYSBSSUFBIEhlbHBlciBDbGFzcyBmb3IgdGhlIFJlbmRlciBUYXJnZXQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDAwNQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RlZCBieSBleGlzdGlu
ZyBTVkcsIGltYWdlLCBhbmQgQ2FudmFzIGxheW91dCB0ZXN0cy4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3dpbi9HcmFkaWVudERpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYWRpZW50
OjpmaWxsKTogVXNlIG5ldyBjb252ZW5pZW5jZSBoZWxwZXIgY2xhc3MuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZGlkQmVnaW5EcmF3KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6R3JhcGhpY3NDb250ZXh0UGxhdGZv
cm1Qcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJp
dmF0ZTo6fkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZSk6IEFkZCBhbgorICAgICAgICBh
c3NlcnRpb24gdGhhdCB3ZSBhcmUgaW4gYSB2YWxpZCBzdGF0ZSB3aGVuIGNsZWFuaW5nIHVwIHRo
ZSBncmFwaGljcyBjb250ZXh0LgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0UGxh
dGZvcm1Qcml2YXRlOjpjbGlwKTogQ2xpcHBpbmcgY2FuIG9ubHkgaGFwcGVuIGluIGEgRHJhdyBv
cGVyYXRpb24uCisgICAgICAgIE9wZW4gYSBuZXcgQmVnaW5EcmF3IGlmIGFza2VkIHRvIENsaXAu
IFRoZSBCZWdpbiBtdXN0IHN0YXkgYWN0aXZlIHdoZW4gdGhpcyBtZXRob2QgcmV0dXJucywKKyAg
ICAgICAgYXMgdGhlIENsaXAgbGF5ZXIgaXMgb25seSB2YWxpZCBkdXJpbmcgYSBEcmF3IG9wZXJh
dGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6
YmVnaW5EcmF3KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRQbGF0
Zm9ybVByaXZhdGU6OmVuZERyYXcpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6YmVnaW5EcmF3SWZOZWVkZWQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6ZW5kRHJhdyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpkcmF3V2l0aG91dFNoYWRvdyk6IFJldmlzZSB0byB1c2UgbmV3IFJlbmRlclRh
cmdldEhlbHBlciBjbGFzcy4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJh
d1dpdGhTaGFkb3cpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
cGxhdGZvcm1GaWxsUm91bmRlZFJlY3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RGlkQmVnaW5EcmF3KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRl
RGlyZWN0MkQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJp
dmF0ZTo6ZGlkQmVnaW5EcmF3KTogUmV2aXNlIHRvIHVzZSBjb3VudCBpbnN0ZWFkIG9mCisgICAg
ICAgIGEgc2VwYXJhdGUgYm9vbGVhbi4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VCdWZmZXJEYXRhRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXJEYXRhOjpnZXREYXRhKTogUmV2aXNlIHRvIHVzZSBuZXcgUmVuZGVyVGFyZ2V0SGVscGVyIGNs
YXNzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJbWFnZURpcmVjdDJE
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6IERpdHRvLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9SZW5kZXJUYXJnZXRIZWxwZXIuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYXJnZXRIZWxwZXI6OlJlbmRlclRhcmdldEhlbHBlcik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYXJnZXRIZWxwZXI6On5SZW5kZXJUYXJnZXRIZWxw
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFyZ2V0SGVscGVyOjplbmREcmF3KToKKyAg
ICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
SW1hZ2U6Om5hdGl2ZUltYWdlKTogUmV2aXNlIHRvIHVzZSBuZXcgUmVuZGVyVGFyZ2V0SGVscGVy
IGNsYXNzLgorCiAyMDE2LTEwLTI1ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29t
PgogCiAgICAgICAgIFtXaW5dIFVucmV2aWV3ZWQgYnVpbGQgZml4LgpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgJKHJldmlz
aW9uIDIwODAwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NTIsOSArNTUyLDEwIEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSUQyRDFGYWN0b3J5KiBzeXN0ZW1GYWN0b3J5KCk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIElEMkQxUmVuZGVyVGFyZ2V0KiBkZWZhdWx0UmVuZGVy
VGFyZ2V0KCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldERpZEJlZ2luRHJhdyhib29s
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGJlZ2luRHJhd0lmTmVlZGVkKCk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBkaWRCZWdpbkRyYXcoKSBjb25zdDsKICAgICBEMkQxX0NPTE9SX0Yg
Y29sb3JXaXRoR2xvYmFsQWxwaGEoY29uc3QgQ29sb3ImKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGVuZERyYXcoKTsKIAogICAgIElEMkQxQnJ1c2gqIHNvbGlkU3Ryb2tlQnJ1c2go
KSBjb25zdDsKICAgICBJRDJEMUJydXNoKiBzb2xpZEZpbGxCcnVzaCgpIGNvbnN0OwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYWRpZW50RGlyZWN0MkQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFk
aWVudERpcmVjdDJELmNwcAkocmV2aXNpb24gMjA4MDA1KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0dyYWRpZW50RGlyZWN0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiUmVuZGVyVGFyZ2V0U2NvcGVkRHJhd2luZy5oIgog
I2luY2x1ZGUgPGQyZDEuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKQEAgLTEyMCwy
MCArMTIxLDEzIEBAIHZvaWQgR3JhZGllbnQ6OmZpbGwoR3JhcGhpY3NDb250ZXh0KiBjb24KICAg
ICBpZiAoIW1fY2FjaGVkSGFzaCB8fCAhbV9ncmFkaWVudCkKICAgICAgICAgZ2VuZXJhdGVHcmFk
aWVudChkMmRDb250ZXh0KTsKIAotICAgIGlmICghY29udGV4dC0+ZGlkQmVnaW5EcmF3KCkpCi0g
ICAgICAgIGQyZENvbnRleHQtPkJlZ2luRHJhdygpOworICAgIFJlbmRlclRhcmdldFNjb3BlZERy
YXdpbmcgaGVscGVyKCpjb250ZXh0KTsKIAogICAgIGQyZENvbnRleHQtPlNldFRhZ3MoR1JBRElF
TlRfRFJBV0lORywgX19MSU5FX18pOwogCiAgICAgY29uc3QgRDJEMV9SRUNUX0YgZDJkUmVjdCA9
IHJlY3Q7CiAgICAgZDJkQ29udGV4dC0+RmlsbFJlY3RhbmdsZSgmZDJkUmVjdCwgbV9ncmFkaWVu
dCk7CiAKLSAgICBpZiAoIWNvbnRleHQtPmRpZEJlZ2luRHJhdygpKSB7Ci0gICAgICAgIEQyRDFf
VEFHIGZpcnN0LCBzZWNvbmQ7Ci0gICAgICAgIEhSRVNVTFQgaHIgPSBkMmRDb250ZXh0LT5FbmRE
cmF3KCZmaXJzdCwgJnNlY29uZCk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKFNVQ0NFRURFRCho
cikpOwotICAgIH0KLQogICAgIGlmIChuZWVkU2NhbGluZykKICAgICAgICAgY29udGV4dC0+cmVz
dG9yZSgpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dy
YXBoaWNzQ29udGV4dERpcmVjdDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCShyZXZpc2lv
biAyMDgwMDUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhp
Y3NDb250ZXh0RGlyZWN0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAj
aW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAi
Tm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJSZW5kZXJUYXJnZXRTY29wZWREcmF3aW5nLmgi
CiAjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8ZDJkMS5oPgogI2luY2x1ZGUgPGQyZDFlZmZl
Y3RzLmg+CkBAIC05OCwxNSArOTksOSBAQCBJRDJEMVJlbmRlclRhcmdldCogR3JhcGhpY3NDb250
ZXh0OjpkZWZhCiAgICAgcmV0dXJuIGRlZmF1bHRSZW5kZXJUYXJnZXQ7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpzZXREaWRCZWdpbkRyYXcoYm9vbCBkaWRCZWdpbkRyYXcpCi17Ci0gICAg
UkVMRUFTRV9BU1NFUlQobV9kYXRhKTsKLSAgICBtX2RhdGEtPm1fZGlkQmVnaW5EcmF3ID0gZGlk
QmVnaW5EcmF3OwotfQotCiBib29sIEdyYXBoaWNzQ29udGV4dDo6ZGlkQmVnaW5EcmF3KCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbV9kYXRhLT5tX2RpZEJlZ2luRHJhdzsKKyAgICByZXR1cm4gbV9k
YXRhLT5kaWRCZWdpbkRyYXcoKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3Jt
SW5pdChIREMgaGRjLCBib29sIGhhc0FscGhhKQpAQCAtMjc5LDYgKzI3NCwxOSBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JEb2N1bWVuCiB7CiB9CiAKK0dyYXBoaWNzQ29udGV4
dFBsYXRmb3JtUHJpdmF0ZTo6R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKElEMkQxUmVu
ZGVyVGFyZ2V0KiByZW5kZXJUYXJnZXQpCisgICAgOiBtX3JlbmRlclRhcmdldChyZW5kZXJUYXJn
ZXQpCit7Cit9CisKK0dyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6fkdyYXBoaWNzQ29u
dGV4dFBsYXRmb3JtUHJpdmF0ZSgpCit7CisgICAgaWYgKCFtX3JlbmRlclRhcmdldCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgQVNTRVJUKCFtX2JlZ2luRHJhd0NvdW50LnVuc2FmZUdldCgpKTsK
K30KKwogQ09NUHRyPElEMkQxU29saWRDb2xvckJydXNoPiBHcmFwaGljc0NvbnRleHRQbGF0Zm9y
bVByaXZhdGU6OmJydXNoV2l0aENvbG9yKGNvbnN0IEQyRDFfQ09MT1JfRiYgY29sb3IpCiB7CiAg
ICAgUkdCQTMyIGNvbG9yS2V5ID0gbWFrZVJHQkEzMkZyb21GbG9hdHMoY29sb3IuciwgY29sb3Iu
ZywgY29sb3IuYiwgY29sb3IuYSk7CkBAIC0zMTEsNiArMzE5LDExIEBAIElEMkQxU29saWRDb2xv
ckJydXNoKiBHcmFwaGljc0NvbnRleHQ6OmIKIAogdm9pZCBHcmFwaGljc0NvbnRleHRQbGF0Zm9y
bVByaXZhdGU6OmNsaXAoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogeworICAgIC8vIEluIEQyRCwg
d2UgY2FuIG9ubHkgY2xpcCBpbiB0aGUgY29udGV4dCBvZiBhICdCZWdpbkRyYXcnLCBhbmQgdGhl
IGNsaXAgY2FuCisgICAgLy8gb25seSBsaXZlIGFzIGxvbmcgYXMgdGhlIGRyYXcgaXMgaGFwcGVu
aW5nLgorICAgIGlmICghZGlkQmVnaW5EcmF3KCkpCisgICAgICAgIGJlZ2luRHJhdygpOworCiAg
ICAgaWYgKG1fcmVuZGVyU3RhdGVzLmlzRW1wdHkoKSkKICAgICAgICAgc2F2ZSgpOwogCkBAIC0z
MjUsNiArMzM4LDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjpjbGkK
IAogdm9pZCBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6OmNsaXAoSUQyRDFHZW9tZXRy
eSogcGF0aCkKIHsKKyAgICAvLyBJbiBEMkQsIHdlIGNhbiBvbmx5IGNsaXAgaW4gdGhlIGNvbnRl
eHQgb2YgYSAnQmVnaW5EcmF3JywgYW5kIHRoZSBjbGlwIGNhbgorICAgIC8vIG9ubHkgbGl2ZSBh
cyBsb25nIGFzIHRoZSBkcmF3IGlzIGhhcHBlbmluZy4KKyAgICBpZiAoIWRpZEJlZ2luRHJhdygp
KQorICAgICAgICBiZWdpbkRyYXcoKTsKKwogICAgIEFTU0VSVChtX3JlbmRlclN0YXRlcy5zaXpl
KCkpOwogICAgIGlmICghbV9yZW5kZXJTdGF0ZXMuc2l6ZSgpKQogICAgICAgICByZXR1cm47CkBA
IC0zNjAsNiArMzc4LDE3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjpm
bHUKICAgICBSRUxFQVNFX0FTU0VSVChTVUNDRUVERUQoaHIpKTsKIH0KIAordm9pZCBHcmFwaGlj
c0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6OmJlZ2luRHJhdygpCit7CisgICAgQVNTRVJUKG1fcmVu
ZGVyVGFyZ2V0LmdldCgpKTsKKyAgICBpZiAoZGlkQmVnaW5EcmF3KCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fcmVuZGVyVGFyZ2V0LT5CZWdpbkRyYXcoKTsKKworICAgICsrbV9iZWdpbkRy
YXdDb3VudDsKK30KKwogdm9pZCBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6OmVuZERy
YXcoKQogewogICAgIEFTU0VSVChtX3JlbmRlclRhcmdldC5nZXQoKSk7CkBAIC0zNjgsNiArMzk3
LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6OmVuZAogCiAgICAgaWYg
KCFTVUNDRUVERUQoaHIpKQogICAgICAgICBXVEZMb2dBbHdheXMoIkZhaWxlZCBpbiBHcmFwaGlj
c0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6OmVuZERyYXc6IGhyPSVsZCwgZmlyc3Q9JWxkLCBzZWNv
bmQ9JWxkIiwgaHIsIGZpcnN0LCBzZWNvbmQpOworCisgICAgLS1tX2JlZ2luRHJhd0NvdW50Owog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6cmVzdG9yZSgpCkBAIC00
NjQsNiArNDk1LDIwIEBAIElEMkQxQnJ1c2gqIEdyYXBoaWNzQ29udGV4dDo6cGF0dGVybkZpbGwK
ICAgICByZXR1cm4gbV9kYXRhLT5tX3BhdHRlcm5GaWxsQnJ1c2guZ2V0KCk7CiB9CiAKK2Jvb2wg
R3JhcGhpY3NDb250ZXh0OjpiZWdpbkRyYXdJZk5lZWRlZCgpCit7CisgICAgaWYgKG1fZGF0YS0+
ZGlkQmVnaW5EcmF3KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fZGF0YS0+YmVn
aW5EcmF3KCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0Ojpl
bmREcmF3KCkKK3sKKyAgICBtX2RhdGEtPmVuZERyYXcoKTsKK30KKwogdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0
ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBz
cGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKICAg
ICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFwYXR0ZXJuVHJhbnNmb3JtLmlzSW52ZXJ0aWJs
ZSgpKQpAQCAtODQ4LDE5ICs4OTMsMTQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXRo
KGNvbnN0IFBhdAogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1dpdGhvdXRTaGFkb3coY29u
c3QgRmxvYXRSZWN0JiAvKmJvdW5kaW5nUmVjdCovLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQo
SUQyRDFSZW5kZXJUYXJnZXQqKT4mIGRyYXdDb21tYW5kcykKIHsKLSAgICBhdXRvIGNvbnRleHQg
PSBwbGF0Zm9ybUNvbnRleHQoKTsKLQotICAgIGlmICghZGlkQmVnaW5EcmF3KCkpCi0gICAgICAg
IGNvbnRleHQtPkJlZ2luRHJhdygpOwotCi0gICAgZHJhd0NvbW1hbmRzKGNvbnRleHQpOwotCi0g
ICAgaWYgKCFkaWRCZWdpbkRyYXcoKSkKLSAgICAgICAgbV9kYXRhLT5lbmREcmF3KCk7CisgICAg
UmVuZGVyVGFyZ2V0U2NvcGVkRHJhd2luZyBoZWxwZXIoKnRoaXMpOworICAgIGRyYXdDb21tYW5k
cyhwbGF0Zm9ybUNvbnRleHQoKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3V2l0
aFNoYWRvdyhjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nUmVjdCwgY29uc3Qgc3RkOjpmdW5jdGlv
bjx2b2lkKElEMkQxUmVuZGVyVGFyZ2V0Kik+JiBkcmF3Q29tbWFuZHMpCiB7CisgICAgUmVuZGVy
VGFyZ2V0U2NvcGVkRHJhd2luZyBoZWxwZXIoKnRoaXMpOworCiAgICAgYXV0byBjb250ZXh0ID0g
cGxhdGZvcm1Db250ZXh0KCk7CiAKICAgICAvLyBSZW5kZXIgdGhlIGN1cnJlbnQgZ2VvbWV0cnkg
dG8gYSBiaXRtYXAgY29udGV4dApAQCAtOTEzLDEwICs5NTMsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd1dpdGhTaGFkb3coY29uCiAgICAgYXV0byBmbGlwID0gRDJEMTo6TWF0cml4M3gy
Rjo6U2NhbGUoRDJEMTo6U2l6ZUYoMS4wZiwgLTEuMGYpKTsKICAgICBkZXZpY2VDb250ZXh0LT5T
ZXRUcmFuc2Zvcm0oY3RtICogZmxpcCAqIHRyYW5zbGF0ZSk7CiAKLSAgICBkZXZpY2VDb250ZXh0
LT5CZWdpbkRyYXcoKTsKICAgICBkZXZpY2VDb250ZXh0LT5EcmF3SW1hZ2UoY29tcG9zaXRvci5n
ZXQoKSwgRDJEMV9JTlRFUlBPTEFUSU9OX01PREVfTElORUFSKTsKLSAgICBociA9IGRldmljZUNv
bnRleHQtPkVuZERyYXcoKTsKLSAgICBBU1NFUlQoU1VDQ0VFREVEKGhyKSk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0aChjb25zdCBQYXRoJiBwYXRoKQpAQCAtMTEwNyw5ICsx
MTQ0LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRmlsbFJvdW5kZQogICAgICAg
ICBub3RJbXBsZW1lbnRlZCgpOwogICAgIH0KIAotICAgIGlmICghZGlkQmVnaW5EcmF3KCkpCi0g
ICAgICAgIGNvbnRleHQtPkJlZ2luRHJhdygpOwotICAgIAorICAgIFJlbmRlclRhcmdldFNjb3Bl
ZERyYXdpbmcgaGVscGVyKCp0aGlzKTsKKwogICAgIGNvbnRleHQtPlNldFRhZ3MoMSwgX19MSU5F
X18pOwogCiAgICAgY29uc3QgRmxvYXRSZWN0JiByID0gcmVjdC5yZWN0KCk7CkBAIC0xMTI5LDkg
KzExNjUsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1GaWxsUm91bmRlCiAgICAg
ICAgIGZpbGxQYXRoKHBhdGgpOwogICAgIH0KIAotICAgIGlmICghZGlkQmVnaW5EcmF3KCkpCi0g
ICAgICAgIG1fZGF0YS0+ZW5kRHJhdygpOwotCiAgICAgaWYgKGRyYXdPd25TaGFkb3cpCiAgICAg
ICAgIHN0YXRlU2F2ZXIucmVzdG9yZSgpOwogfQpAQCAtMTE0OCw4ICsxMTgxLDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZQogCiAgICAgYXV0byBjb250ZXh0ID0g
cGxhdGZvcm1Db250ZXh0KCk7CiAKLSAgICBpZiAoIWRpZEJlZ2luRHJhdygpKQotICAgICAgICBj
b250ZXh0LT5CZWdpbkRyYXcoKTsKKyAgICBSZW5kZXJUYXJnZXRTY29wZWREcmF3aW5nIGhlbHBl
cigqdGhpcyk7CiAKICAgICBjb250ZXh0LT5TZXRUYWdzKDEsIF9fTElORV9fKTsKIApAQCAtMTE3
OSw5ICsxMjExLDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZQog
CiAgICAgZmlsbFBhdGgocGF0aCk7CiAKLSAgICBpZiAoIWRpZEJlZ2luRHJhdygpKQotICAgICAg
ICBtX2RhdGEtPmVuZERyYXcoKTsKLQogICAgIGlmIChkcmF3T3duU2hhZG93KQogICAgICAgICBz
dGF0ZVNhdmVyLnJlc3RvcmUoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZURpcmVjdDJELmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29u
dGV4dFBsYXRmb3JtUHJpdmF0ZURpcmVjdDJELmgJKHJldmlzaW9uIDIwODAwNSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVBy
aXZhdGVEaXJlY3QyRC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVk
ZSA8ZDJkMWVmZmVjdHMuaD4KICNpbmNsdWRlIDxkMmQxaGVscGVyLmg+CiAjaW5jbHVkZSA8d2lu
ZG93cy5oPgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0
Zi9UaW55TFJVQ2FjaGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzksMTYgKzQwLDE1
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJp
dmF0ZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgR3JhcGhp
Y3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKElEMkQxUmVuZGVyVGFyZ2V0KiByZW5kZXJUYXJnZXQp
Ci0gICAgICAgIDogbV9yZW5kZXJUYXJnZXQocmVuZGVyVGFyZ2V0KQotICAgIHsKLSAgICB9Cisg
ICAgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKElEMkQxUmVuZGVyVGFyZ2V0Kik7Cisg
ICAgfkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZSgpOwogCiAgICAgZW51bSBEaXJlY3Qy
RExheWVyVHlwZSB7IEF4aXNBbGlnbmVkQ2xpcCwgTGF5ZXJDbGlwIH07CiAKICAgICB2b2lkIGNs
aXAoY29uc3QgRmxvYXRSZWN0Jik7CiAgICAgdm9pZCBjbGlwKGNvbnN0IFBhdGgmKTsKICAgICB2
b2lkIGNsaXAoSUQyRDFHZW9tZXRyeSopOworICAgIHZvaWQgYmVnaW5EcmF3KCk7CiAgICAgdm9p
ZCBlbmREcmF3KCk7CiAgICAgdm9pZCBmbHVzaCgpOwogICAgIHZvaWQgc2F2ZSgpOwpAQCAtNzUs
MTEgKzc1LDEzIEBAIHB1YmxpYzoKIAogICAgIENPTVB0cjxJRDJEMVNvbGlkQ29sb3JCcnVzaD4g
YnJ1c2hXaXRoQ29sb3IoY29uc3QgRDJEMV9DT0xPUl9GJik7CiAKKyAgICBib29sIGRpZEJlZ2lu
RHJhdygpIGNvbnN0IHsgcmV0dXJuIG1fYmVnaW5EcmF3Q291bnQudW5zYWZlR2V0KCk7IH0KKwog
ICAgIEhEQyBtX2hkYyB7IG51bGxwdHIgfTsKICAgICBEMkQxX0JMRU5EX01PREUgbV9ibGVuZE1v
ZGUgeyBEMkQxX0JMRU5EX01PREVfTVVMVElQTFkgfTsKICAgICBEMkQxX0NPTVBPU0lURV9NT0RF
IG1fY29tcG9zaXRlTW9kZSB7IEQyRDFfQ09NUE9TSVRFX01PREVfU09VUkNFX09WRVIgfTsKKyAg
ICBDaGVja2VkPHVuc2lnbmVkPiBtX2JlZ2luRHJhd0NvdW50IHsgMCB9OwogICAgIGJvb2wgbV9z
aG91bGRJbmNsdWRlQ2hpbGRXaW5kb3dzIHsgZmFsc2UgfTsKLSAgICBib29sIG1fZGlkQmVnaW5E
cmF3IHsgZmFsc2UgfTsKICAgICBib29sIG1fc3Ryb2tlU3lsZUlzRGlydHkgeyBmYWxzZSB9Owog
CiAgICAgQ09NUHRyPElEMkQxU29saWRDb2xvckJydXNoPiBtX3NvbGlkU3Ryb2tlQnJ1c2g7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEYXRh
RGlyZWN0MkQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9JbWFnZUJ1ZmZlckRhdGFEaXJlY3QyRC5jcHAJKHJldmlzaW9uIDIwODAwNSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRhdGFEaXJl
Y3QyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJIV25k
REMuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIK
KyNpbmNsdWRlICJSZW5kZXJUYXJnZXRTY29wZWREcmF3aW5nLmgiCiAjaW5jbHVkZSA8ZDJkMS5o
PgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvVHlw
ZWRBcnJheUlubGluZXMuaD4KQEAgLTcwLDcgKzcxLDcgQEAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFy
cmF5PiBJbWFnZUJ1ZmZlckRhdAogICAgIGlmIChGQUlMRUQoaHIpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIHBsYXRmb3JtQ29udGV4dC0+QmVnaW5EcmF3KCk7CisgICAgUmVuZGVy
VGFyZ2V0U2NvcGVkRHJhd2luZyBoZWxwZXIoKmNvbnRleHQpOwogCiAgICAgSERDIGhkYyA9IG51
bGxwdHI7CiAgICAgaHIgPSBnZGlSZW5kZXJUYXJnZXQtPkdldERDKEQyRDFfRENfSU5JVElBTEla
RV9NT0RFX0NPUFksICZoZGMpOwpAQCAtODEsNiArODIsOCBAQCBSZWZQdHI8VWludDhDbGFtcGVk
QXJyYXk+IEltYWdlQnVmZmVyRGF0CiAKICAgICBociA9IHBsYXRmb3JtQ29udGV4dC0+RW5kRHJh
dygpOwogCisgICAgaGVscGVyLmVuZERyYXcoKTsKKwogICAgIGlmICghb2spCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vTmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL05hdGl2ZUltYWdlRGlyZWN0MkQuY3BwCShyZXZpc2lvbiAy
MDgwMDUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTmF0aXZlSW1h
Z2VEaXJlY3QyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiTm90
SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJSZW5kZXJUYXJnZXRTY29wZWREcmF3aW5nLmgiCiAj
aW5jbHVkZSA8ZDJkMS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04NSwxNCArODYsMTMg
QEAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdAogCiAgICAgZmxvYXQg
b3BhY2l0eSA9IDEuMGY7CiAKLSAgICBpZiAoIWNvbnRleHQuZGlkQmVnaW5EcmF3KCkpCi0gICAg
ICAgIHBsYXRmb3JtQ29udGV4dC0+QmVnaW5EcmF3KCk7CisgICAgYm9vbCB0ZW1wb3JhcnlEcmF3
ID0gY29udGV4dC5iZWdpbkRyYXdJZk5lZWRlZCgpOwogCiAgICAgcGxhdGZvcm1Db250ZXh0LT5E
cmF3Qml0bWFwKGltYWdlLmdldCgpLCBkZXN0UmVjdCwgb3BhY2l0eSwgRDJEMV9CSVRNQVBfSU5U
RVJQT0xBVElPTl9NT0RFX05FQVJFU1RfTkVJR0hCT1IsIGFkanVzdGVkU3JjUmVjdCk7CiAKICAg
ICBIUkVTVUxUIGhyID0gU19PSzsKLSAgICBpZiAoIWNvbnRleHQuZGlkQmVnaW5EcmF3KCkpCi0g
ICAgICAgIGhyID0gcGxhdGZvcm1Db250ZXh0LT5FbmREcmF3KCk7CisgICAgaWYgKHRlbXBvcmFy
eURyYXcpCisgICAgICAgIGNvbnRleHQuZW5kRHJhdygpOwogICAgIGVsc2UKICAgICAgICAgaHIg
PSBwbGF0Zm9ybUNvbnRleHQtPkZsdXNoKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9SZW5kZXJUYXJnZXRTY29wZWREcmF3aW5nLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1JlbmRlclRhcmdldFNjb3Bl
ZERyYXdpbmcuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vUmVuZGVyVGFyZ2V0U2NvcGVkRHJhd2luZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlbmRlclRhcmdldFNjb3BlZERyYXdpbmcgeworICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFJlbmRlclRhcmdldFNjb3BlZERyYXdpbmcpOworcHVibGljOgor
ICAgIFJlbmRlclRhcmdldFNjb3BlZERyYXdpbmcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQor
ICAgICAgICA6IG1fY29udGV4dChjb250ZXh0KQorICAgIHsKKyAgICAgICAgbV9kcmF3SXNTY29w
ZWQgPSBjb250ZXh0LmJlZ2luRHJhd0lmTmVlZGVkKCk7CisgICAgfQorCisgICAgflJlbmRlclRh
cmdldFNjb3BlZERyYXdpbmcoKQorICAgIHsKKyAgICAgICAgZW5kRHJhdygpOworICAgIH0KKwor
ICAgIHZvaWQgZW5kRHJhdygpCisgICAgeworICAgICAgICBpZiAoIW1fZHJhd0lzU2NvcGVkKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgCisgICAgICAgIG1fY29udGV4dC5lbmRE
cmF3KCk7CisgICAgICAgIG1fZHJhd0lzU2NvcGVkID0gZmFsc2U7CisgICAgfQorCitwcml2YXRl
OgorICAgIEdyYXBoaWNzQ29udGV4dCYgbV9jb250ZXh0OworICAgIGJvb2wgbV9kcmF3SXNTY29w
ZWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAJKHJldmlzaW9uIDIwODAwNSkKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5v
cmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMDksIDIwMTUtMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIElu
IE1vdGlvbiBMaW1pdGVkIDIwMTEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CkBAIC01Niw2ICs1Niw3IEBACiAKICNpZiBVU0UoRElSRUNUMkQpCiAjaW5jbHVkZSAiQ09N
UHRyLmgiCisjaW5jbHVkZSAiUmVuZGVyVGFyZ2V0U2NvcGVkRHJhd2luZy5oIgogI2luY2x1ZGUg
PGQyZDEuaD4KICNlbmRpZgogCkBAIC0yMjQsMTQgKzIyNSwxMiBAQCBOYXRpdmVJbWFnZVB0ciBT
VkdJbWFnZTo6bmF0aXZlSW1hZ2UoY29uCiAgICAgSFJFU1VMVCBociA9IHBsYXRmb3JtQ29udGV4
dC0+Q3JlYXRlQ29tcGF0aWJsZVJlbmRlclRhcmdldChJbnRTaXplKHJlY3QoKS5zaXplKCkpLCAm
bmF0aXZlSW1hZ2VUYXJnZXQpOwogICAgIEFTU0VSVChTVUNDRUVERUQoaHIpKTsKIAotICAgIG5h
dGl2ZUltYWdlVGFyZ2V0LT5CZWdpbkRyYXcoKTsKICAgICBHcmFwaGljc0NvbnRleHQgbG9jYWxD
b250ZXh0KG5hdGl2ZUltYWdlVGFyZ2V0LmdldCgpKTsKLSAgICBsb2NhbENvbnRleHQuc2V0RGlk
QmVnaW5EcmF3KHRydWUpOwogCisgICAgeworICAgIFJlbmRlclRhcmdldFNjb3BlZERyYXdpbmcg
aGVscGVyKGxvY2FsQ29udGV4dCk7CiAgICAgZHJhdyhsb2NhbENvbnRleHQsIHJlY3QoKSwgcmVj
dCgpLCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGVOb3JtYWwsIEltYWdlT3JpZW50YXRp
b25EZXNjcmlwdGlvbigpKTsKLQotICAgIGhyID0gbmF0aXZlSW1hZ2VUYXJnZXQtPkZsdXNoKCk7
Ci0gICAgQVNTRVJUKFNVQ0NFRURFRChocikpOworICAgIH0KIAogICAgIENPTVB0cjxJRDJEMUJp
dG1hcD4gbmF0aXZlSW1hZ2U7CiAgICAgaHIgPSBuYXRpdmVJbWFnZVRhcmdldC0+R2V0Qml0bWFw
KCZuYXRpdmVJbWFnZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDgwMDUpCisr
KyBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NCBAQAorMjAxNi0xMC0yNSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbV2luXVtEaXJlY3QyRF0gQ3JlYXRlIGEgUklBQSBIZWxwZXIgQ2xhc3MgZm9yIHRo
ZSBSZW5kZXIgVGFyZ2V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjQwMDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6c2l6ZUNoYW5nZWQpOiBD
b25zdHJ1Y3QgUmVuZGVyVGFyZ2V0IHdpdGggaGlnaGVyLXJlc29sdXRpb24gZGlzcGxheSB0aW1l
ci4KKyAgICAgICAgKFdlYlZpZXc6OnBhaW50V2l0aERpcmVjdDJEKTogUmV2aXNlIHRvIHVzZSBu
ZXcgUmVuZGVyVGFyZ2V0SGVscGVyIGNsYXNzLgorCiAyMDE2LTEwLTI2ICBCcmlhbiBCdXJnICA8
YmJ1cmdAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlbW92ZSB1bnVzZWQg
Ym9vbCByZXR1cm4gdmFsdWUgZnJvbSBGcm9udGVuZENoYW5uZWw6OnNlbmRNZXNzYWdlVG9Gcm9u
dGVuZApJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAJKHJldmlzaW9uIDIwODAwNSkKKysrIFNvdXJj
ZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDIsNiArMTQyLDcg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL1BvcHVwTWVudVdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UHJvZ3Jlc3NUcmFja2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJMYXllci5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVuZGVyVGFyZ2V0U2NvcGVkRHJhd2luZy5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUmVuZGVyVGhlbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlclRyZWVBc1RleHQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlclZpZXcuaD4KQEAgLTE2NCw2ICsxNjUsNyBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvV2luZG93TWVzc2FnZUJyb2FkY2FzdGVyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9XaW5kb3dzVG91Y2guaD4KICNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5o
PgorI2luY2x1ZGUgPGNvbWRlZi5oPgogI2luY2x1ZGUgPGQyZDEuaD4KICNpbmNsdWRlIDx3dGYv
TWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9SQU1TaXplLmg+CkBAIC0xMDYzLDcgKzEwNjUs
NyBAQCB2b2lkIFdlYlZpZXc6OnNpemVDaGFuZ2VkKGNvbnN0IEludFNpemUmCiAgICAgLy8gQ3Jl
YXRlIGEgRGlyZWN0MkQgcmVuZGVyIHRhcmdldC4KICAgICBhdXRvIHJlbmRlclRhcmdldFByb3Bl
cnRpZXMgPSBEMkQxOjpSZW5kZXJUYXJnZXRQcm9wZXJ0aWVzKCk7CiAgICAgcmVuZGVyVGFyZ2V0
UHJvcGVydGllcy51c2FnZSA9IEQyRDFfUkVOREVSX1RBUkdFVF9VU0FHRV9HRElfQ09NUEFUSUJM
RTsKLSAgICBhdXRvIGh3bmRSZW5kZXJUYXJnZXRQcm9wZXJ0aWVzID0gRDJEMTo6SHduZFJlbmRl
clRhcmdldFByb3BlcnRpZXMobV92aWV3V2luZG93LCBuZXdTaXplKTsKKyAgICBhdXRvIGh3bmRS
ZW5kZXJUYXJnZXRQcm9wZXJ0aWVzID0gRDJEMTo6SHduZFJlbmRlclRhcmdldFByb3BlcnRpZXMo
bV92aWV3V2luZG93LCBuZXdTaXplLCBEMkQxX1BSRVNFTlRfT1BUSU9OU19JTU1FRElBVEVMWSk7
CiAgICAgSFJFU1VMVCBociA9IEdyYXBoaWNzQ29udGV4dDo6c3lzdGVtRmFjdG9yeSgpLT5DcmVh
dGVId25kUmVuZGVyVGFyZ2V0KCZyZW5kZXJUYXJnZXRQcm9wZXJ0aWVzLCAmaHduZFJlbmRlclRh
cmdldFByb3BlcnRpZXMsICZtX3JlbmRlclRhcmdldCk7CiAgICAgQVNTRVJUKFNVQ0NFRURFRCho
cikpOwogI2VuZGlmCkBAIC0xMjM2LDEzICsxMjM4LDE1IEBAIHZvaWQgV2ViVmlldzo6cGFpbnRX
aXRoRGlyZWN0MkQoKQogCiAgICAgICAgIGF1dG8gcGl4ZWxTaXplID0gRDJEMTo6U2l6ZVUoY2xp
ZW50UmVjdC53aWR0aCgpLCBjbGllbnRSZWN0LmhlaWdodCgpKTsKIAotICAgICAgICBhdXRvIGh3
bmRSZW5kZXJUYXJnZXRQcm9wZXJ0aWVzID0gRDJEMTo6SHduZFJlbmRlclRhcmdldFByb3BlcnRp
ZXMobV92aWV3V2luZG93LCBwaXhlbFNpemUpOworICAgICAgICBhdXRvIGh3bmRSZW5kZXJUYXJn
ZXRQcm9wZXJ0aWVzID0gRDJEMTo6SHduZFJlbmRlclRhcmdldFByb3BlcnRpZXMobV92aWV3V2lu
ZG93LCBwaXhlbFNpemUsIEQyRDFfUFJFU0VOVF9PUFRJT05TX0lNTUVESUFURUxZKTsKICAgICAg
ICAgSFJFU1VMVCBociA9IEdyYXBoaWNzQ29udGV4dDo6c3lzdGVtRmFjdG9yeSgpLT5DcmVhdGVI
d25kUmVuZGVyVGFyZ2V0KCZyZW5kZXJUYXJnZXRQcm9wZXJ0aWVzLCAmaHduZFJlbmRlclRhcmdl
dFByb3BlcnRpZXMsICZtX3JlbmRlclRhcmdldCk7CiAgICAgICAgIGlmICghU1VDQ0VFREVEKGhy
KSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3JlbmRlclRhcmdldC0+QmVn
aW5EcmF3KCk7CisgICAgR3JhcGhpY3NDb250ZXh0IGdjKG1fcmVuZGVyVGFyZ2V0LmdldCgpKTsK
KworICAgIFdlYkNvcmU6OlJlbmRlclRhcmdldFNjb3BlZERyYXdpbmcgaGVscGVyKGdjKTsKIAog
ICAgIG1fcmVuZGVyVGFyZ2V0LT5TZXRUYWdzKFdFQktJVF9EUkFXSU5HLCBfX0xJTkVfXyk7CiAg
ICAgbV9yZW5kZXJUYXJnZXQtPkNsZWFyKCk7CkBAIC0xMjUxLDcgKzEyNTUsNyBAQCB2b2lkIFdl
YlZpZXc6OnBhaW50V2l0aERpcmVjdDJEKCkKICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IDEuMGY7
CiAgICAgZmxvYXQgaW52ZXJzZVNjYWxlRmFjdG9yID0gMS4wZiAvIHNjYWxlRmFjdG9yOwogCi0g
ICAgUkVDVCBjbGllbnRSZWN0OworICAgIFJFQ1QgY2xpZW50UmVjdCA9IHsgfTsKICAgICBHZXRD
bGllbnRSZWN0KG1fdmlld1dpbmRvdywgJmNsaWVudFJlY3QpOwogCiAgICAgSW50UmVjdCBkaXJ0
eVJlY3RQaXhlbHMoMCwgMCwgY2xpZW50UmVjdC5yaWdodCwgY2xpZW50UmVjdC5ib3R0b20pOwpA
QCAtMTI1OSw5ICsxMjYzLDYgQEAgdm9pZCBXZWJWaWV3OjpwYWludFdpdGhEaXJlY3QyRCgpCiAg
ICAgbG9naWNhbERpcnR5UmVjdEZsb2F0LnNjYWxlKGludmVyc2VTY2FsZUZhY3Rvcik7CiAgICAg
SW50UmVjdCBsb2dpY2FsRGlydHlSZWN0KGVuY2xvc2luZ0ludFJlY3QobG9naWNhbERpcnR5UmVj
dEZsb2F0KSk7CiAKLSAgICBHcmFwaGljc0NvbnRleHQgZ2MobV9yZW5kZXJUYXJnZXQuZ2V0KCkp
OwotICAgIGdjLnNldERpZEJlZ2luRHJhdyh0cnVlKTsKLQogICAgIGlmIChmcmFtZVZpZXcgJiYg
ZnJhbWVWaWV3LT5mcmFtZSgpLmNvbnRlbnRSZW5kZXJlcigpKSB7CiAgICAgICAgIGdjLnNhdmUo
KTsKICAgICAgICAgZ2Muc2NhbGUoRmxvYXRTaXplKHNjYWxlRmFjdG9yLCBzY2FsZUZhY3Rvcikp
OwpAQCAtMTI3Miw5ICsxMjczLDcgQEAgdm9pZCBXZWJWaWV3OjpwYWludFdpdGhEaXJlY3QyRCgp
CiAgICAgICAgICAgICBnYy5maWxsUmVjdChsb2dpY2FsRGlydHlSZWN0LCBDb2xvcjo6d2hpdGUs
IENvbXBvc2l0ZURpZmZlcmVuY2UpOwogICAgIH0KIAotICAgIEhSRVNVTFQgaHIgPSBtX3JlbmRl
clRhcmdldC0+RW5kRHJhdygpOwotICAgIC8vIEZJWE1FOiBSZWNvZ25pemUgYW5kIHJlY292ZXIg
ZnJvbSBlcnJvciBzdGF0ZToKLSAgICBVTlVTRURfUEFSQU0oaHIpOworICAgIGhlbHBlci5lbmRE
cmF3KCk7CiAKICAgICA6OlZhbGlkYXRlUmVjdChtX3ZpZXdXaW5kb3csICZjbGllbnRSZWN0KTsK
ICNlbHNlCkBAIC0zMTUxLDYgKzMxNTAsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OmluaXRXaXRoRnJh
bWUoUkVDVCBmcmFtCiAgICAgbV9wYWdlLT5zZXREZXZpY2VTY2FsZUZhY3RvcihkZXZpY2VTY2Fs
ZUZhY3RvcigpKTsKIAogICAgIHNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChUUlVFKTsKKwog
ICAgIHJldHVybiBocjsKIH0KIApJbmRleDogU291cmNlL2NtYWtlL09wdGlvbnNBcHBsZVdpbi5j
bWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvY21ha2UvT3B0aW9uc0FwcGxlV2luLmNtYWtlCShy
ZXZpc2lvbiAyMDgwMDUpCisrKyBTb3VyY2UvY21ha2UvT3B0aW9uc0FwcGxlV2luLmNtYWtlCSh3
b3JraW5nIGNvcHkpCkBAIC02LDcgKzYsNyBAQCBzZXQoVVNFX0NGVVJMQ09OTkVDVElPTiAxKQog
c2V0KFVTRV9JQ1VfVU5JQ09ERSAxKQogCiAjIFVuY29tbWVudCB0aGUgZm9sbG93aW5nIGxpbmUg
dG8gdHJ5IHRoZSBEaXJlY3QyRCBiYWNrZW5kLgotIyBzZXQoVVNFX0RJUkVDVDJEIDEpCitzZXQo
VVNFX0RJUkVDVDJEIDEpCiAKIGlmICgke1VTRV9ESVJFQ1QyRH0pCiAgICAgYWRkX2RlZmluaXRp
b25zKC1EVVNFX0RJUkVDVDJEPTEpCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3Jt
V2luLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XaW4u
Y21ha2UJKHJldmlzaW9uIDIwODAwNSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1X
aW4uY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDggQEAgYWRkX2RlZmluaXRpb25z
KC1EV0VCQ09SRV9FWFBPUlQ9KQogc2V0KHRlc3Rfd2ViY29yZV9MSUJSQVJJRVMKICAgICBDcnlw
dDMyCiAgICAgRDJkMQorICAgIER3cml0ZQorICAgIGR4Z3VpZAogICAgIElwaGxwYXBpCiAgICAg
UHNhcGkKICAgICBTaGx3YXBpCkBAIC0zNSw2ICszNyw3IEBAIHNldCh0ZXN0X3dlYmNvcmVfTElC
UkFSSUVTCiAgICAgV2ViQ29yZSR7REVCVUdfU1VGRklYfQogICAgIFdlYkNvcmVEZXJpdmVkU291
cmNlcyR7REVCVUdfU1VGRklYfQogICAgIFdlYktpdCR7REVCVUdfU1VGRklYfQorICAgIFdpbmRv
d3NDb2RlY3MKICAgICBndGVzdAogKQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293072</attachid>
            <date>2016-10-27 15:54:43 -0700</date>
            <delta_ts>2016-10-27 16:53:20 -0700</delta_ts>
            <desc>Patch v5</desc>
            <filename>riaa_d2d_v5.patch</filename>
            <type>text/plain</type>
            <size>23161</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwODAxMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisyMDE2LTEwLTI1ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXaW5dW0RpcmVjdDJEXSBD
cmVhdGUgYSBSSUFBIEhlbHBlciBDbGFzcyBmb3IgdGhlIFJlbmRlciBUYXJnZXQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDAwNQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RlZCBieSBleGlzdGlu
ZyBTVkcsIGltYWdlLCBhbmQgQ2FudmFzIGxheW91dCB0ZXN0cy4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3dpbi9HcmFkaWVudERpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYWRpZW50
OjpmaWxsKTogVXNlIG5ldyBjb252ZW5pZW5jZSBoZWxwZXIgY2xhc3MuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZGlkQmVnaW5EcmF3KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6R3JhcGhpY3NDb250ZXh0UGxhdGZv
cm1Qcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJp
dmF0ZTo6fkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZSk6IEFkZCBhbgorICAgICAgICBh
c3NlcnRpb24gdGhhdCB3ZSBhcmUgaW4gYSB2YWxpZCBzdGF0ZSB3aGVuIGNsZWFuaW5nIHVwIHRo
ZSBncmFwaGljcyBjb250ZXh0LgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0UGxh
dGZvcm1Qcml2YXRlOjpjbGlwKTogQ2xpcHBpbmcgY2FuIG9ubHkgaGFwcGVuIGluIGEgRHJhdyBv
cGVyYXRpb24uCisgICAgICAgIE9wZW4gYSBuZXcgQmVnaW5EcmF3IGlmIGFza2VkIHRvIENsaXAu
IFRoZSBCZWdpbiBtdXN0IHN0YXkgYWN0aXZlIHdoZW4gdGhpcyBtZXRob2QgcmV0dXJucywKKyAg
ICAgICAgYXMgdGhlIENsaXAgbGF5ZXIgaXMgb25seSB2YWxpZCBkdXJpbmcgYSBEcmF3IG9wZXJh
dGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6
YmVnaW5EcmF3KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRQbGF0
Zm9ybVByaXZhdGU6OmVuZERyYXcpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6YmVnaW5EcmF3SWZOZWVkZWQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6ZW5kRHJhdyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpkcmF3V2l0aG91dFNoYWRvdyk6IFJldmlzZSB0byB1c2UgbmV3IFJlbmRlclRh
cmdldEhlbHBlciBjbGFzcy4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJh
d1dpdGhTaGFkb3cpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
cGxhdGZvcm1GaWxsUm91bmRlZFJlY3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RGlkQmVnaW5EcmF3KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRl
RGlyZWN0MkQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJp
dmF0ZTo6ZGlkQmVnaW5EcmF3KTogUmV2aXNlIHRvIHVzZSBjb3VudCBpbnN0ZWFkIG9mCisgICAg
ICAgIGEgc2VwYXJhdGUgYm9vbGVhbi4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VCdWZmZXJEYXRhRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXJEYXRhOjpnZXREYXRhKTogUmV2aXNlIHRvIHVzZSBuZXcgUmVuZGVyVGFyZ2V0SGVscGVyIGNs
YXNzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJbWFnZURpcmVjdDJE
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6IERpdHRvLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9SZW5kZXJUYXJnZXRIZWxwZXIuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYXJnZXRIZWxwZXI6OlJlbmRlclRhcmdldEhlbHBlcik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYXJnZXRIZWxwZXI6On5SZW5kZXJUYXJnZXRIZWxw
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFyZ2V0SGVscGVyOjplbmREcmF3KToKKyAg
ICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
SW1hZ2U6Om5hdGl2ZUltYWdlKTogUmV2aXNlIHRvIHVzZSBuZXcgUmVuZGVyVGFyZ2V0SGVscGVy
IGNsYXNzLgorCiAyMDE2LTEwLTI1ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29t
PgogCiAgICAgICAgIFtXaW5dIFVucmV2aWV3ZWQgYnVpbGQgZml4LgpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgJKHJldmlz
aW9uIDIwODAxMykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NTIsOSArNTUyLDEwIEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSUQyRDFGYWN0b3J5KiBzeXN0ZW1GYWN0b3J5KCk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIElEMkQxUmVuZGVyVGFyZ2V0KiBkZWZhdWx0UmVuZGVy
VGFyZ2V0KCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldERpZEJlZ2luRHJhdyhib29s
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGJlZ2luRHJhd0lmTmVlZGVkKCk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBkaWRCZWdpbkRyYXcoKSBjb25zdDsKICAgICBEMkQxX0NPTE9SX0Yg
Y29sb3JXaXRoR2xvYmFsQWxwaGEoY29uc3QgQ29sb3ImKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGVuZERyYXcoKTsKIAogICAgIElEMkQxQnJ1c2gqIHNvbGlkU3Ryb2tlQnJ1c2go
KSBjb25zdDsKICAgICBJRDJEMUJydXNoKiBzb2xpZEZpbGxCcnVzaCgpIGNvbnN0OwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYWRpZW50RGlyZWN0MkQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFk
aWVudERpcmVjdDJELmNwcAkocmV2aXNpb24gMjA4MDEzKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0dyYWRpZW50RGlyZWN0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiUmVuZGVyVGFyZ2V0U2NvcGVkRHJhd2luZy5oIgog
I2luY2x1ZGUgPGQyZDEuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKQEAgLTEyMCwy
MCArMTIxLDEzIEBAIHZvaWQgR3JhZGllbnQ6OmZpbGwoR3JhcGhpY3NDb250ZXh0KiBjb24KICAg
ICBpZiAoIW1fY2FjaGVkSGFzaCB8fCAhbV9ncmFkaWVudCkKICAgICAgICAgZ2VuZXJhdGVHcmFk
aWVudChkMmRDb250ZXh0KTsKIAotICAgIGlmICghY29udGV4dC0+ZGlkQmVnaW5EcmF3KCkpCi0g
ICAgICAgIGQyZENvbnRleHQtPkJlZ2luRHJhdygpOworICAgIFJlbmRlclRhcmdldFNjb3BlZERy
YXdpbmcgaGVscGVyKCpjb250ZXh0KTsKIAogICAgIGQyZENvbnRleHQtPlNldFRhZ3MoR1JBRElF
TlRfRFJBV0lORywgX19MSU5FX18pOwogCiAgICAgY29uc3QgRDJEMV9SRUNUX0YgZDJkUmVjdCA9
IHJlY3Q7CiAgICAgZDJkQ29udGV4dC0+RmlsbFJlY3RhbmdsZSgmZDJkUmVjdCwgbV9ncmFkaWVu
dCk7CiAKLSAgICBpZiAoIWNvbnRleHQtPmRpZEJlZ2luRHJhdygpKSB7Ci0gICAgICAgIEQyRDFf
VEFHIGZpcnN0LCBzZWNvbmQ7Ci0gICAgICAgIEhSRVNVTFQgaHIgPSBkMmRDb250ZXh0LT5FbmRE
cmF3KCZmaXJzdCwgJnNlY29uZCk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKFNVQ0NFRURFRCho
cikpOwotICAgIH0KLQogICAgIGlmIChuZWVkU2NhbGluZykKICAgICAgICAgY29udGV4dC0+cmVz
dG9yZSgpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dy
YXBoaWNzQ29udGV4dERpcmVjdDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCShyZXZpc2lv
biAyMDgwMTMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhp
Y3NDb250ZXh0RGlyZWN0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAj
aW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAi
Tm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJSZW5kZXJUYXJnZXRTY29wZWREcmF3aW5nLmgi
CiAjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8ZDJkMS5oPgogI2luY2x1ZGUgPGQyZDFlZmZl
Y3RzLmg+CkBAIC05OCwxNSArOTksOSBAQCBJRDJEMVJlbmRlclRhcmdldCogR3JhcGhpY3NDb250
ZXh0OjpkZWZhCiAgICAgcmV0dXJuIGRlZmF1bHRSZW5kZXJUYXJnZXQ7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpzZXREaWRCZWdpbkRyYXcoYm9vbCBkaWRCZWdpbkRyYXcpCi17Ci0gICAg
UkVMRUFTRV9BU1NFUlQobV9kYXRhKTsKLSAgICBtX2RhdGEtPm1fZGlkQmVnaW5EcmF3ID0gZGlk
QmVnaW5EcmF3OwotfQotCiBib29sIEdyYXBoaWNzQ29udGV4dDo6ZGlkQmVnaW5EcmF3KCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbV9kYXRhLT5tX2RpZEJlZ2luRHJhdzsKKyAgICByZXR1cm4gbV9k
YXRhLT5kaWRCZWdpbkRyYXcoKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3Jt
SW5pdChIREMgaGRjLCBib29sIGhhc0FscGhhKQpAQCAtMjc3LDE0ICsyNzIsOSBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6cmVsZWFzZVdpbmRvd3NDb250CiAgICAgSFJFU1VMVCBociA9IHBsYXRm
b3JtQ29udGV4dCgpLT5DcmVhdGVCaXRtYXAocGl4ZWxEYXRhLnNpemUoKSwgcGl4ZWxEYXRhLmJ1
ZmZlcigpLCBwaXhlbERhdGEuYnl0ZXNQZXJSb3coKSwgJmJpdG1hcFByb3BlcnRpZXMsICZiaXRt
YXApOwogICAgIEFTU0VSVChTVUNDRUVERUQoaHIpKTsKIAotICAgIGlmICghZGlkQmVnaW5EcmF3
KCkpCi0gICAgICAgIHBsYXRmb3JtQ29udGV4dCgpLT5CZWdpbkRyYXcoKTsKLQorICAgIFJlbmRl
clRhcmdldFNjb3BlZERyYXdpbmcgaGVscGVyKCp0aGlzKTsKICAgICBwbGF0Zm9ybUNvbnRleHQo
KS0+RHJhd0JpdG1hcChiaXRtYXAuZ2V0KCksIGRzdFJlY3QpOwogCi0gICAgaWYgKCFkaWRCZWdp
bkRyYXcoKSkKLSAgICAgICAgaHIgPSBwbGF0Zm9ybUNvbnRleHQoKS0+RW5kRHJhdygpOwotCiAg
ICAgOjpEZWxldGVEQyhoZGMpOwogfQogCkBAIC0zMDgsNiArMjk4LDE5IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpkcmF3TGluZUZvckRvY3VtZW4KIHsKIH0KIAorR3JhcGhpY3NDb250ZXh0UGxh
dGZvcm1Qcml2YXRlOjpHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUoSUQyRDFSZW5kZXJU
YXJnZXQqIHJlbmRlclRhcmdldCkKKyAgICA6IG1fcmVuZGVyVGFyZ2V0KHJlbmRlclRhcmdldCkK
K3sKK30KKworR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjp+R3JhcGhpY3NDb250ZXh0
UGxhdGZvcm1Qcml2YXRlKCkKK3sKKyAgICBpZiAoIW1fcmVuZGVyVGFyZ2V0KQorICAgICAgICBy
ZXR1cm47CisKKyAgICBBU1NFUlQoIW1fYmVnaW5EcmF3Q291bnQudW5zYWZlR2V0KCkpOworfQor
CiBDT01QdHI8SUQyRDFTb2xpZENvbG9yQnJ1c2g+IEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJp
dmF0ZTo6YnJ1c2hXaXRoQ29sb3IoY29uc3QgRDJEMV9DT0xPUl9GJiBjb2xvcikKIHsKICAgICBS
R0JBMzIgY29sb3JLZXkgPSBtYWtlUkdCQTMyRnJvbUZsb2F0cyhjb2xvci5yLCBjb2xvci5nLCBj
b2xvci5iLCBjb2xvci5hKTsKQEAgLTM0MCw2ICszNDMsMTEgQEAgSUQyRDFTb2xpZENvbG9yQnJ1
c2gqIEdyYXBoaWNzQ29udGV4dDo6YgogCiB2b2lkIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJp
dmF0ZTo6Y2xpcChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7CisgICAgLy8gSW4gRDJELCB3ZSBj
YW4gb25seSBjbGlwIGluIHRoZSBjb250ZXh0IG9mIGEgJ0JlZ2luRHJhdycsIGFuZCB0aGUgY2xp
cCBjYW4KKyAgICAvLyBvbmx5IGxpdmUgYXMgbG9uZyBhcyB0aGUgZHJhdyBpcyBoYXBwZW5pbmcu
CisgICAgaWYgKCFkaWRCZWdpbkRyYXcoKSkKKyAgICAgICAgYmVnaW5EcmF3KCk7CisKICAgICBp
ZiAobV9yZW5kZXJTdGF0ZXMuaXNFbXB0eSgpKQogICAgICAgICBzYXZlKCk7CiAKQEAgLTM1NCw2
ICszNjIsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6OmNsaQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6Y2xpcChJRDJEMUdlb21ldHJ5KiBw
YXRoKQogeworICAgIC8vIEluIEQyRCwgd2UgY2FuIG9ubHkgY2xpcCBpbiB0aGUgY29udGV4dCBv
ZiBhICdCZWdpbkRyYXcnLCBhbmQgdGhlIGNsaXAgY2FuCisgICAgLy8gb25seSBsaXZlIGFzIGxv
bmcgYXMgdGhlIGRyYXcgaXMgaGFwcGVuaW5nLgorICAgIGlmICghZGlkQmVnaW5EcmF3KCkpCisg
ICAgICAgIGJlZ2luRHJhdygpOworCiAgICAgQVNTRVJUKG1fcmVuZGVyU3RhdGVzLnNpemUoKSk7
CiAgICAgaWYgKCFtX3JlbmRlclN0YXRlcy5zaXplKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTM4
OSw2ICs0MDIsMTcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6OmZsdQog
ICAgIFJFTEVBU0VfQVNTRVJUKFNVQ0NFRURFRChocikpOwogfQogCit2b2lkIEdyYXBoaWNzQ29u
dGV4dFBsYXRmb3JtUHJpdmF0ZTo6YmVnaW5EcmF3KCkKK3sKKyAgICBBU1NFUlQobV9yZW5kZXJU
YXJnZXQuZ2V0KCkpOworICAgIGlmIChkaWRCZWdpbkRyYXcoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9yZW5kZXJUYXJnZXQtPkJlZ2luRHJhdygpOworCisgICAgKyttX2JlZ2luRHJhd0Nv
dW50OworfQorCiB2b2lkIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6ZW5kRHJhdygp
CiB7CiAgICAgQVNTRVJUKG1fcmVuZGVyVGFyZ2V0LmdldCgpKTsKQEAgLTM5Nyw2ICs0MjEsOCBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6ZW5kCiAKICAgICBpZiAoIVNV
Q0NFRURFRChocikpCiAgICAgICAgIFdURkxvZ0Fsd2F5cygiRmFpbGVkIGluIEdyYXBoaWNzQ29u
dGV4dFBsYXRmb3JtUHJpdmF0ZTo6ZW5kRHJhdzogaHI9JWxkLCBmaXJzdD0lbGQsIHNlY29uZD0l
bGQiLCBociwgZmlyc3QsIHNlY29uZCk7CisKKyAgICAtLW1fYmVnaW5EcmF3Q291bnQ7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjpyZXN0b3JlKCkKQEAgLTQ5Myw2
ICs1MTksMjAgQEAgSUQyRDFCcnVzaCogR3JhcGhpY3NDb250ZXh0OjpwYXR0ZXJuRmlsbAogICAg
IHJldHVybiBtX2RhdGEtPm1fcGF0dGVybkZpbGxCcnVzaC5nZXQoKTsKIH0KIAorYm9vbCBHcmFw
aGljc0NvbnRleHQ6OmJlZ2luRHJhd0lmTmVlZGVkKCkKK3sKKyAgICBpZiAobV9kYXRhLT5kaWRC
ZWdpbkRyYXcoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9kYXRhLT5iZWdpbkRy
YXcoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQ6OmVuZERy
YXcoKQoreworICAgIG1fZGF0YS0+ZW5kRHJhdygpOworfQorCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5U
cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNp
bmcsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewogICAgIGlm
IChwYWludGluZ0Rpc2FibGVkKCkgfHwgIXBhdHRlcm5UcmFuc2Zvcm0uaXNJbnZlcnRpYmxlKCkp
CkBAIC04NzcsMTkgKzkxNywxNCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdGgoY29u
c3QgUGF0CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3V2l0aG91dFNoYWRvdyhjb25zdCBG
bG9hdFJlY3QmIC8qYm91bmRpbmdSZWN0Ki8sIGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZChJRDJE
MVJlbmRlclRhcmdldCopPiYgZHJhd0NvbW1hbmRzKQogewotICAgIGF1dG8gY29udGV4dCA9IHBs
YXRmb3JtQ29udGV4dCgpOwotCi0gICAgaWYgKCFkaWRCZWdpbkRyYXcoKSkKLSAgICAgICAgY29u
dGV4dC0+QmVnaW5EcmF3KCk7Ci0KLSAgICBkcmF3Q29tbWFuZHMoY29udGV4dCk7Ci0KLSAgICBp
ZiAoIWRpZEJlZ2luRHJhdygpKQotICAgICAgICBtX2RhdGEtPmVuZERyYXcoKTsKKyAgICBSZW5k
ZXJUYXJnZXRTY29wZWREcmF3aW5nIGhlbHBlcigqdGhpcyk7CisgICAgZHJhd0NvbW1hbmRzKHBs
YXRmb3JtQ29udGV4dCgpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdXaXRoU2hh
ZG93KGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdSZWN0LCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHZv
aWQoSUQyRDFSZW5kZXJUYXJnZXQqKT4mIGRyYXdDb21tYW5kcykKIHsKKyAgICBSZW5kZXJUYXJn
ZXRTY29wZWREcmF3aW5nIGhlbHBlcigqdGhpcyk7CisKICAgICBhdXRvIGNvbnRleHQgPSBwbGF0
Zm9ybUNvbnRleHQoKTsKIAogICAgIC8vIFJlbmRlciB0aGUgY3VycmVudCBnZW9tZXRyeSB0byBh
IGJpdG1hcCBjb250ZXh0CkBAIC05NDIsMTAgKzk3Nyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3V2l0aFNoYWRvdyhjb24KICAgICBhdXRvIGZsaXAgPSBEMkQxOjpNYXRyaXgzeDJGOjpT
Y2FsZShEMkQxOjpTaXplRigxLjBmLCAtMS4wZikpOwogICAgIGRldmljZUNvbnRleHQtPlNldFRy
YW5zZm9ybShjdG0gKiBmbGlwICogdHJhbnNsYXRlKTsKIAotICAgIGRldmljZUNvbnRleHQtPkJl
Z2luRHJhdygpOwogICAgIGRldmljZUNvbnRleHQtPkRyYXdJbWFnZShjb21wb3NpdG9yLmdldCgp
LCBEMkQxX0lOVEVSUE9MQVRJT05fTU9ERV9MSU5FQVIpOwotICAgIGhyID0gZGV2aWNlQ29udGV4
dC0+RW5kRHJhdygpOwotICAgIEFTU0VSVChTVUNDRUVERUQoaHIpKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmZpbGxQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCkBAIC0xMTM2LDkgKzExNjgs
OCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1GaWxsUm91bmRlCiAgICAgICAgIG5v
dEltcGxlbWVudGVkKCk7CiAgICAgfQogCi0gICAgaWYgKCFkaWRCZWdpbkRyYXcoKSkKLSAgICAg
ICAgY29udGV4dC0+QmVnaW5EcmF3KCk7Ci0gICAgCisgICAgUmVuZGVyVGFyZ2V0U2NvcGVkRHJh
d2luZyBoZWxwZXIoKnRoaXMpOworCiAgICAgY29udGV4dC0+U2V0VGFncygxLCBfX0xJTkVfXyk7
CiAKICAgICBjb25zdCBGbG9hdFJlY3QmIHIgPSByZWN0LnJlY3QoKTsKQEAgLTExNTgsOSArMTE4
OSw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUZpbGxSb3VuZGUKICAgICAgICAg
ZmlsbFBhdGgocGF0aCk7CiAgICAgfQogCi0gICAgaWYgKCFkaWRCZWdpbkRyYXcoKSkKLSAgICAg
ICAgbV9kYXRhLT5lbmREcmF3KCk7Ci0KICAgICBpZiAoZHJhd093blNoYWRvdykKICAgICAgICAg
c3RhdGVTYXZlci5yZXN0b3JlKCk7CiB9CkBAIC0xMTc3LDggKzEyMDUsNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlCiAKICAgICBhdXRvIGNvbnRleHQgPSBwbGF0
Zm9ybUNvbnRleHQoKTsKIAotICAgIGlmICghZGlkQmVnaW5EcmF3KCkpCi0gICAgICAgIGNvbnRl
eHQtPkJlZ2luRHJhdygpOworICAgIFJlbmRlclRhcmdldFNjb3BlZERyYXdpbmcgaGVscGVyKCp0
aGlzKTsKIAogICAgIGNvbnRleHQtPlNldFRhZ3MoMSwgX19MSU5FX18pOwogCkBAIC0xMjA4LDkg
KzEyMzUsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlCiAKICAg
ICBmaWxsUGF0aChwYXRoKTsKIAotICAgIGlmICghZGlkQmVnaW5EcmF3KCkpCi0gICAgICAgIG1f
ZGF0YS0+ZW5kRHJhdygpOwotCiAgICAgaWYgKGRyYXdPd25TaGFkb3cpCiAgICAgICAgIHN0YXRl
U2F2ZXIucmVzdG9yZSgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlRGlyZWN0MkQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0
UGxhdGZvcm1Qcml2YXRlRGlyZWN0MkQuaAkocmV2aXNpb24gMjA4MDEzKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0
ZURpcmVjdDJELmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlIDxk
MmQxZWZmZWN0cy5oPgogI2luY2x1ZGUgPGQyZDFoZWxwZXIuaD4KICNpbmNsdWRlIDx3aW5kb3dz
Lmg+CisjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAjaW5jbHVkZSA8d3RmL1Rp
bnlMUlVDYWNoZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOSwxNiArNDAsMTUgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRl
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBHcmFwaGljc0Nv
bnRleHRQbGF0Zm9ybVByaXZhdGUoSUQyRDFSZW5kZXJUYXJnZXQqIHJlbmRlclRhcmdldCkKLSAg
ICAgICAgOiBtX3JlbmRlclRhcmdldChyZW5kZXJUYXJnZXQpCi0gICAgewotICAgIH0KKyAgICBH
cmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUoSUQyRDFSZW5kZXJUYXJnZXQqKTsKKyAgICB+
R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKCk7CiAKICAgICBlbnVtIERpcmVjdDJETGF5
ZXJUeXBlIHsgQXhpc0FsaWduZWRDbGlwLCBMYXllckNsaXAgfTsKIAogICAgIHZvaWQgY2xpcChj
b25zdCBGbG9hdFJlY3QmKTsKICAgICB2b2lkIGNsaXAoY29uc3QgUGF0aCYpOwogICAgIHZvaWQg
Y2xpcChJRDJEMUdlb21ldHJ5Kik7CisgICAgdm9pZCBiZWdpbkRyYXcoKTsKICAgICB2b2lkIGVu
ZERyYXcoKTsKICAgICB2b2lkIGZsdXNoKCk7CiAgICAgdm9pZCBzYXZlKCk7CkBAIC03NSwxMSAr
NzUsMTMgQEAgcHVibGljOgogCiAgICAgQ09NUHRyPElEMkQxU29saWRDb2xvckJydXNoPiBicnVz
aFdpdGhDb2xvcihjb25zdCBEMkQxX0NPTE9SX0YmKTsKIAorICAgIGJvb2wgZGlkQmVnaW5EcmF3
KCkgY29uc3QgeyByZXR1cm4gbV9iZWdpbkRyYXdDb3VudC51bnNhZmVHZXQoKTsgfQorCiAgICAg
SERDIG1faGRjIHsgbnVsbHB0ciB9OwogICAgIEQyRDFfQkxFTkRfTU9ERSBtX2JsZW5kTW9kZSB7
IEQyRDFfQkxFTkRfTU9ERV9NVUxUSVBMWSB9OwogICAgIEQyRDFfQ09NUE9TSVRFX01PREUgbV9j
b21wb3NpdGVNb2RlIHsgRDJEMV9DT01QT1NJVEVfTU9ERV9TT1VSQ0VfT1ZFUiB9OworICAgIENo
ZWNrZWQ8dW5zaWduZWQ+IG1fYmVnaW5EcmF3Q291bnQgeyAwIH07CiAgICAgYm9vbCBtX3Nob3Vs
ZEluY2x1ZGVDaGlsZFdpbmRvd3MgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9kaWRCZWdpbkRyYXcg
eyBmYWxzZSB9OwogICAgIGJvb2wgbV9zdHJva2VTeWxlSXNEaXJ0eSB7IGZhbHNlIH07CiAKICAg
ICBDT01QdHI8SUQyRDFTb2xpZENvbG9yQnJ1c2g+IG1fc29saWRTdHJva2VCcnVzaDsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRhdGFEaXJl
Y3QyRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlQnVmZmVyRGF0YURpcmVjdDJELmNwcAkocmV2aXNpb24gMjA4MDEzKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGF0YURpcmVjdDJE
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkhXbmREQy5o
IgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2lu
Y2x1ZGUgIlJlbmRlclRhcmdldFNjb3BlZERyYXdpbmcuaCIKICNpbmNsdWRlIDxkMmQxLmg+CiAj
aW5jbHVkZSA8cnVudGltZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8cnVudGltZS9UeXBlZEFy
cmF5SW5saW5lcy5oPgpAQCAtNzAsNyArNzEsNyBAQCBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+
IEltYWdlQnVmZmVyRGF0CiAgICAgaWYgKEZBSUxFRChocikpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgcGxhdGZvcm1Db250ZXh0LT5CZWdpbkRyYXcoKTsKKyAgICBSZW5kZXJUYXJn
ZXRTY29wZWREcmF3aW5nIGhlbHBlcigqY29udGV4dCk7CiAKICAgICBIREMgaGRjID0gbnVsbHB0
cjsKICAgICBociA9IGdkaVJlbmRlclRhcmdldC0+R2V0REMoRDJEMV9EQ19JTklUSUFMSVpFX01P
REVfQ09QWSwgJmhkYyk7CkBAIC04MSw2ICs4Miw4IEBAIFJlZlB0cjxVaW50OENsYW1wZWRBcnJh
eT4gSW1hZ2VCdWZmZXJEYXQKIAogICAgIGhyID0gcGxhdGZvcm1Db250ZXh0LT5FbmREcmF3KCk7
CiAKKyAgICBoZWxwZXIuZW5kRHJhdygpOworCiAgICAgaWYgKCFvaykKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9O
YXRpdmVJbWFnZURpcmVjdDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vTmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHAJKHJldmlzaW9uIDIwODAx
MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJbWFnZURp
cmVjdDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJOb3RJbXBs
ZW1lbnRlZC5oIgorI2luY2x1ZGUgIlJlbmRlclRhcmdldFNjb3BlZERyYXdpbmcuaCIKICNpbmNs
dWRlIDxkMmQxLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTg1LDE0ICs4NiwxMyBAQCB2
b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0CiAKICAgICBmbG9hdCBvcGFj
aXR5ID0gMS4wZjsKIAotICAgIGlmICghY29udGV4dC5kaWRCZWdpbkRyYXcoKSkKLSAgICAgICAg
cGxhdGZvcm1Db250ZXh0LT5CZWdpbkRyYXcoKTsKKyAgICBib29sIHRlbXBvcmFyeURyYXcgPSBj
b250ZXh0LmJlZ2luRHJhd0lmTmVlZGVkKCk7CiAKICAgICBwbGF0Zm9ybUNvbnRleHQtPkRyYXdC
aXRtYXAoaW1hZ2UuZ2V0KCksIGRlc3RSZWN0LCBvcGFjaXR5LCBEMkQxX0JJVE1BUF9JTlRFUlBP
TEFUSU9OX01PREVfTkVBUkVTVF9ORUlHSEJPUiwgYWRqdXN0ZWRTcmNSZWN0KTsKIAogICAgIEhS
RVNVTFQgaHIgPSBTX09LOwotICAgIGlmICghY29udGV4dC5kaWRCZWdpbkRyYXcoKSkKLSAgICAg
ICAgaHIgPSBwbGF0Zm9ybUNvbnRleHQtPkVuZERyYXcoKTsKKyAgICBpZiAodGVtcG9yYXJ5RHJh
dykKKyAgICAgICAgY29udGV4dC5lbmREcmF3KCk7CiAgICAgZWxzZQogICAgICAgICBociA9IHBs
YXRmb3JtQ29udGV4dC0+Rmx1c2goKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL1JlbmRlclRhcmdldFNjb3BlZERyYXdpbmcuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUmVuZGVyVGFyZ2V0U2NvcGVkRHJh
d2luZy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9SZW5kZXJUYXJnZXRTY29wZWREcmF3aW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgUmVuZGVyVGFyZ2V0U2NvcGVkRHJhd2luZyB7CisgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoUmVuZGVyVGFyZ2V0U2NvcGVkRHJhd2luZyk7CitwdWJsaWM6CisgICAg
UmVuZGVyVGFyZ2V0U2NvcGVkRHJhd2luZyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCisgICAg
ICAgIDogbV9jb250ZXh0KGNvbnRleHQpCisgICAgeworICAgICAgICBtX2RyYXdJc1Njb3BlZCA9
IGNvbnRleHQuYmVnaW5EcmF3SWZOZWVkZWQoKTsKKyAgICB9CisKKyAgICB+UmVuZGVyVGFyZ2V0
U2NvcGVkRHJhd2luZygpCisgICAgeworICAgICAgICBlbmREcmF3KCk7CisgICAgfQorCisgICAg
dm9pZCBlbmREcmF3KCkKKyAgICB7CisgICAgICAgIGlmICghbV9kcmF3SXNTY29wZWQpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAgICAgbV9jb250ZXh0LmVuZERyYXco
KTsKKyAgICAgICAgbV9kcmF3SXNTY29wZWQgPSBmYWxzZTsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgR3JhcGhpY3NDb250ZXh0JiBtX2NvbnRleHQ7CisgICAgYm9vbCBtX2RyYXdJc1Njb3BlZDsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmNwcAkocmV2aXNpb24gMjA4MDEzKQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4K
LSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAwOSwgMjAxNS0yMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90
aW9uIExpbWl0ZWQgMjAxMS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
QEAgLTU2LDYgKzU2LDcgQEAKIAogI2lmIFVTRShESVJFQ1QyRCkKICNpbmNsdWRlICJDT01QdHIu
aCIKKyNpbmNsdWRlICJSZW5kZXJUYXJnZXRTY29wZWREcmF3aW5nLmgiCiAjaW5jbHVkZSA8ZDJk
MS5oPgogI2VuZGlmCiAKQEAgLTIyNCwxNCArMjI1LDEyIEBAIE5hdGl2ZUltYWdlUHRyIFNWR0lt
YWdlOjpuYXRpdmVJbWFnZShjb24KICAgICBIUkVTVUxUIGhyID0gcGxhdGZvcm1Db250ZXh0LT5D
cmVhdGVDb21wYXRpYmxlUmVuZGVyVGFyZ2V0KEludFNpemUocmVjdCgpLnNpemUoKSksICZuYXRp
dmVJbWFnZVRhcmdldCk7CiAgICAgQVNTRVJUKFNVQ0NFRURFRChocikpOwogCi0gICAgbmF0aXZl
SW1hZ2VUYXJnZXQtPkJlZ2luRHJhdygpOwogICAgIEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRl
eHQobmF0aXZlSW1hZ2VUYXJnZXQuZ2V0KCkpOwotICAgIGxvY2FsQ29udGV4dC5zZXREaWRCZWdp
bkRyYXcodHJ1ZSk7CiAKKyAgICB7CisgICAgUmVuZGVyVGFyZ2V0U2NvcGVkRHJhd2luZyBoZWxw
ZXIobG9jYWxDb250ZXh0KTsKICAgICBkcmF3KGxvY2FsQ29udGV4dCwgcmVjdCgpLCByZWN0KCks
IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZU5vcm1hbCwgSW1hZ2VPcmllbnRhdGlvbkRl
c2NyaXB0aW9uKCkpOwotCi0gICAgaHIgPSBuYXRpdmVJbWFnZVRhcmdldC0+Rmx1c2goKTsKLSAg
ICBBU1NFUlQoU1VDQ0VFREVEKGhyKSk7CisgICAgfQogCiAgICAgQ09NUHRyPElEMkQxQml0bWFw
PiBuYXRpdmVJbWFnZTsKICAgICBociA9IG5hdGl2ZUltYWdlVGFyZ2V0LT5HZXRCaXRtYXAoJm5h
dGl2ZUltYWdlKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwODAxMykKKysrIFNv
dXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBA
CisyMDE2LTEwLTI1ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAg
ICAgIFtXaW5dW0RpcmVjdDJEXSBDcmVhdGUgYSBSSUFBIEhlbHBlciBDbGFzcyBmb3IgdGhlIFJl
bmRlciBUYXJnZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2NDAwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3OjpzaXplQ2hhbmdlZCk6IENvbnN0
cnVjdCBSZW5kZXJUYXJnZXQgd2l0aCBoaWdoZXItcmVzb2x1dGlvbiBkaXNwbGF5IHRpbWVyLgor
ICAgICAgICAoV2ViVmlldzo6cGFpbnRXaXRoRGlyZWN0MkQpOiBSZXZpc2UgdG8gdXNlIG5ldyBS
ZW5kZXJUYXJnZXRIZWxwZXIgY2xhc3MuCisKIDIwMTYtMTAtMjYgIEJyaWFuIEJ1cmcgIDxiYnVy
Z0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogcmVtb3ZlIHVudXNlZCBib29s
IHJldHVybiB2YWx1ZSBmcm9tIEZyb250ZW5kQ2hhbm5lbDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5k
CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkocmV2aXNpb24gMjA4MDEzKQorKysgU291cmNlL1dl
YktpdC93aW4vV2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Miw2ICsxNDIsNyBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvUG9wdXBNZW51V2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9n
cmVzc1RyYWNrZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlckxheWVyLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9SZW5kZXJUYXJnZXRTY29wZWREcmF3aW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9SZW5kZXJUaGVtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyVHJlZUFzVGV4dC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyVmlldy5oPgpAQCAtMTY0LDYgKzE2NSw3IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9XaW5kb3dNZXNzYWdlQnJvYWRjYXN0ZXIuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1dpbmRvd3NUb3VjaC5oPgogI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+Cisj
aW5jbHVkZSA8Y29tZGVmLmg+CiAjaW5jbHVkZSA8ZDJkMS5oPgogI2luY2x1ZGUgPHd0Zi9NYWlu
VGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1JBTVNpemUuaD4KQEAgLTEwNjMsNyArMTA2NSw3IEBA
IHZvaWQgV2ViVmlldzo6c2l6ZUNoYW5nZWQoY29uc3QgSW50U2l6ZSYKICAgICAvLyBDcmVhdGUg
YSBEaXJlY3QyRCByZW5kZXIgdGFyZ2V0LgogICAgIGF1dG8gcmVuZGVyVGFyZ2V0UHJvcGVydGll
cyA9IEQyRDE6OlJlbmRlclRhcmdldFByb3BlcnRpZXMoKTsKICAgICByZW5kZXJUYXJnZXRQcm9w
ZXJ0aWVzLnVzYWdlID0gRDJEMV9SRU5ERVJfVEFSR0VUX1VTQUdFX0dESV9DT01QQVRJQkxFOwot
ICAgIGF1dG8gaHduZFJlbmRlclRhcmdldFByb3BlcnRpZXMgPSBEMkQxOjpId25kUmVuZGVyVGFy
Z2V0UHJvcGVydGllcyhtX3ZpZXdXaW5kb3csIG5ld1NpemUpOworICAgIGF1dG8gaHduZFJlbmRl
clRhcmdldFByb3BlcnRpZXMgPSBEMkQxOjpId25kUmVuZGVyVGFyZ2V0UHJvcGVydGllcyhtX3Zp
ZXdXaW5kb3csIG5ld1NpemUsIEQyRDFfUFJFU0VOVF9PUFRJT05TX0lNTUVESUFURUxZKTsKICAg
ICBIUkVTVUxUIGhyID0gR3JhcGhpY3NDb250ZXh0OjpzeXN0ZW1GYWN0b3J5KCktPkNyZWF0ZUh3
bmRSZW5kZXJUYXJnZXQoJnJlbmRlclRhcmdldFByb3BlcnRpZXMsICZod25kUmVuZGVyVGFyZ2V0
UHJvcGVydGllcywgJm1fcmVuZGVyVGFyZ2V0KTsKICAgICBBU1NFUlQoU1VDQ0VFREVEKGhyKSk7
CiAjZW5kaWYKQEAgLTEyMzYsMTMgKzEyMzgsMTUgQEAgdm9pZCBXZWJWaWV3OjpwYWludFdpdGhE
aXJlY3QyRCgpCiAKICAgICAgICAgYXV0byBwaXhlbFNpemUgPSBEMkQxOjpTaXplVShjbGllbnRS
ZWN0LndpZHRoKCksIGNsaWVudFJlY3QuaGVpZ2h0KCkpOwogCi0gICAgICAgIGF1dG8gaHduZFJl
bmRlclRhcmdldFByb3BlcnRpZXMgPSBEMkQxOjpId25kUmVuZGVyVGFyZ2V0UHJvcGVydGllcyht
X3ZpZXdXaW5kb3csIHBpeGVsU2l6ZSk7CisgICAgICAgIGF1dG8gaHduZFJlbmRlclRhcmdldFBy
b3BlcnRpZXMgPSBEMkQxOjpId25kUmVuZGVyVGFyZ2V0UHJvcGVydGllcyhtX3ZpZXdXaW5kb3cs
IHBpeGVsU2l6ZSwgRDJEMV9QUkVTRU5UX09QVElPTlNfSU1NRURJQVRFTFkpOwogICAgICAgICBI
UkVTVUxUIGhyID0gR3JhcGhpY3NDb250ZXh0OjpzeXN0ZW1GYWN0b3J5KCktPkNyZWF0ZUh3bmRS
ZW5kZXJUYXJnZXQoJnJlbmRlclRhcmdldFByb3BlcnRpZXMsICZod25kUmVuZGVyVGFyZ2V0UHJv
cGVydGllcywgJm1fcmVuZGVyVGFyZ2V0KTsKICAgICAgICAgaWYgKCFTVUNDRUVERUQoaHIpKQog
ICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fcmVuZGVyVGFyZ2V0LT5CZWdpbkRy
YXcoKTsKKyAgICBHcmFwaGljc0NvbnRleHQgZ2MobV9yZW5kZXJUYXJnZXQuZ2V0KCkpOworCisg
ICAgV2ViQ29yZTo6UmVuZGVyVGFyZ2V0U2NvcGVkRHJhd2luZyBoZWxwZXIoZ2MpOwogCiAgICAg
bV9yZW5kZXJUYXJnZXQtPlNldFRhZ3MoV0VCS0lUX0RSQVdJTkcsIF9fTElORV9fKTsKICAgICBt
X3JlbmRlclRhcmdldC0+Q2xlYXIoKTsKQEAgLTEyNTEsNyArMTI1NSw3IEBAIHZvaWQgV2ViVmll
dzo6cGFpbnRXaXRoRGlyZWN0MkQoKQogICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gMS4wZjsKICAg
ICBmbG9hdCBpbnZlcnNlU2NhbGVGYWN0b3IgPSAxLjBmIC8gc2NhbGVGYWN0b3I7CiAKLSAgICBS
RUNUIGNsaWVudFJlY3Q7CisgICAgUkVDVCBjbGllbnRSZWN0ID0geyB9OwogICAgIEdldENsaWVu
dFJlY3QobV92aWV3V2luZG93LCAmY2xpZW50UmVjdCk7CiAKICAgICBJbnRSZWN0IGRpcnR5UmVj
dFBpeGVscygwLCAwLCBjbGllbnRSZWN0LnJpZ2h0LCBjbGllbnRSZWN0LmJvdHRvbSk7CkBAIC0x
MjU5LDkgKzEyNjMsNiBAQCB2b2lkIFdlYlZpZXc6OnBhaW50V2l0aERpcmVjdDJEKCkKICAgICBs
b2dpY2FsRGlydHlSZWN0RmxvYXQuc2NhbGUoaW52ZXJzZVNjYWxlRmFjdG9yKTsKICAgICBJbnRS
ZWN0IGxvZ2ljYWxEaXJ0eVJlY3QoZW5jbG9zaW5nSW50UmVjdChsb2dpY2FsRGlydHlSZWN0Rmxv
YXQpKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dCBnYyhtX3JlbmRlclRhcmdldC5nZXQoKSk7Ci0g
ICAgZ2Muc2V0RGlkQmVnaW5EcmF3KHRydWUpOwotCiAgICAgaWYgKGZyYW1lVmlldyAmJiBmcmFt
ZVZpZXctPmZyYW1lKCkuY29udGVudFJlbmRlcmVyKCkpIHsKICAgICAgICAgZ2Muc2F2ZSgpOwog
ICAgICAgICBnYy5zY2FsZShGbG9hdFNpemUoc2NhbGVGYWN0b3IsIHNjYWxlRmFjdG9yKSk7CkBA
IC0xMjcyLDkgKzEyNzMsNyBAQCB2b2lkIFdlYlZpZXc6OnBhaW50V2l0aERpcmVjdDJEKCkKICAg
ICAgICAgICAgIGdjLmZpbGxSZWN0KGxvZ2ljYWxEaXJ0eVJlY3QsIENvbG9yOjp3aGl0ZSwgQ29t
cG9zaXRlRGlmZmVyZW5jZSk7CiAgICAgfQogCi0gICAgSFJFU1VMVCBociA9IG1fcmVuZGVyVGFy
Z2V0LT5FbmREcmF3KCk7Ci0gICAgLy8gRklYTUU6IFJlY29nbml6ZSBhbmQgcmVjb3ZlciBmcm9t
IGVycm9yIHN0YXRlOgotICAgIFVOVVNFRF9QQVJBTShocik7CisgICAgaGVscGVyLmVuZERyYXco
KTsKIAogICAgIDo6VmFsaWRhdGVSZWN0KG1fdmlld1dpbmRvdywgJmNsaWVudFJlY3QpOwogI2Vs
c2UKQEAgLTMxNTEsNiArMzE1MCw3IEBAIEhSRVNVTFQgV2ViVmlldzo6aW5pdFdpdGhGcmFtZShS
RUNUIGZyYW0KICAgICBtX3BhZ2UtPnNldERldmljZVNjYWxlRmFjdG9yKGRldmljZVNjYWxlRmFj
dG9yKCkpOwogCiAgICAgc2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKFRSVUUpOworCiAgICAg
cmV0dXJuIGhyOwogfQogCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2luLmNt
YWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XaW4uY21ha2UJ
KHJldmlzaW9uIDIwODAxMykKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XaW4uY21h
a2UJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDggQEAgYWRkX2RlZmluaXRpb25zKC1EV0VC
Q09SRV9FWFBPUlQ9KQogc2V0KHRlc3Rfd2ViY29yZV9MSUJSQVJJRVMKICAgICBDcnlwdDMyCiAg
ICAgRDJkMQorICAgIER3cml0ZQorICAgIGR4Z3VpZAogICAgIElwaGxwYXBpCiAgICAgUHNhcGkK
ICAgICBTaGx3YXBpCkBAIC0zNSw2ICszNyw3IEBAIHNldCh0ZXN0X3dlYmNvcmVfTElCUkFSSUVT
CiAgICAgV2ViQ29yZSR7REVCVUdfU1VGRklYfQogICAgIFdlYkNvcmVEZXJpdmVkU291cmNlcyR7
REVCVUdfU1VGRklYfQogICAgIFdlYktpdCR7REVCVUdfU1VGRklYfQorICAgIFdpbmRvd3NDb2Rl
Y3MKICAgICBndGVzdAogKQogCg==
</data>
<flag name="review"
          id="316012"
          type_id="1"
          status="+"
          setter="achristensen"
    />
    <flag name="commit-queue"
          id="316013"
          type_id="3"
          status="-"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>