<?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>141567</bug_id>
          
          <creation_ts>2015-02-13 10:44:02 -0800</creation_ts>
          <short_desc>WebGL: Destroy the GLContext when a GPU restart has been detected.</short_desc>
          <delta_ts>2015-02-26 14:41:25 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>142057</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Roger Fong">roger_fong</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>d-r</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>noam</cc>
    
    <cc>rniwa</cc>
    
    <cc>roger_fong</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1068957</commentid>
    <comment_count>0</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2015-02-13 10:44:02 -0800</bug_when>
    <thetext>rdar://problem/18507496</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1068963</commentid>
    <comment_count>1</comment_count>
      <attachid>246534</attachid>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2015-02-13 10:53:04 -0800</bug_when>
    <thetext>Created attachment 246534
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1068973</commentid>
    <comment_count>2</comment_count>
      <attachid>246534</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2015-02-13 11:12:21 -0800</bug_when>
    <thetext>Comment on attachment 246534
patch

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

&gt; Source/WebCore/platform/graphics/mac/WebGLLayer.mm:93
&gt; +    GLint restartStatus = 0;
&gt; +    CGLGetParameter(glContext, kCGLCPGPURestartStatus, &amp;restartStatus);
&gt; +    if (restartStatus == kCGLCPGPURestartStatusCaused || restartStatus == kCGLCPGPURestartStatusBlacklisted) {
&gt; +        CGLDestroyContext(glContext);
&gt; +        return;
&gt; +    }
&gt; +    

As discussed in IRC, I think we need a little more intelligence here.

1. Check that this triggers a WebGL context lost (or make sure that this does that)
2. Ensure a page doesn&apos;t keep recreating the context in this case and submitting the same bad data. Maybe allow 3 lost contexts before crashing the process?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1070540</commentid>
    <comment_count>3</comment_count>
      <attachid>246923</attachid>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2015-02-19 15:10:31 -0800</bug_when>
    <thetext>Created attachment 246923
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1070541</commentid>
    <comment_count>4</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2015-02-19 15:26:59 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Created attachment 246923 [details]
&gt; patch

I&apos;ve now triggered a context lost event and made sure that the context does not get restored.
It also adopts the same reload policy as all other webcontent crashes. 3 tries and an error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1070543</commentid>
    <comment_count>5</comment_count>
      <attachid>246923</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2015-02-19 15:38:41 -0800</bug_when>
    <thetext>Comment on attachment 246923
patch

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

&gt; Source/WebCore/platform/graphics/GraphicsContext3D.h:1445
&gt; +    
&gt; +    WebGLRenderingContextBase* m_webglContext;

Do we ever think there might be a time when the WebGL context goes away before the GC3D?

&gt; Source/WebCore/platform/graphics/mac/GraphicsContext3DMac.mm:202
&gt; +    GLint abortOnBlacklist = 0;
&gt; +    CGLSetParameter(m_contextObj, kCGLCPAbortOnGPURestartStatusBlacklisted, &amp;abortOnBlacklist);

You&apos;ll need to #if around these since they are only available on OS X 10.10+

&gt; Source/WebCore/platform/graphics/mac/WebGLLayer.mm:180
&gt; +    GLint restartStatus = 0;
&gt; +    CGLGetParameter(_context-&gt;platformGraphicsContext3D(), kCGLCPGPURestartStatus, &amp;restartStatus);
&gt; +    if (restartStatus == kCGLCPGPURestartStatusCaused || restartStatus == kCGLCPGPURestartStatusBlacklisted) {
&gt; +        CGLDestroyContext(_context-&gt;platformGraphicsContext3D());
&gt; +        _context-&gt;forceContextLost();
&gt; +    }

Similarly here.

One concern I have is that we&apos;re only doing this test on display. Which means you could hose the system if you executed a lot of draw calls before allowing the system to draw. We might want to have this code in the drawing entry points, drawElements and drawArrays, but only test every X iterations or something.

Anyway, if this makes an improvement on our hanging examples, let&apos;s stick with it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1070577</commentid>
    <comment_count>6</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2015-02-19 17:58:16 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 246923 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=246923&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/GraphicsContext3D.h:1445
&gt; &gt; +    
&gt; &gt; +    WebGLRenderingContextBase* m_webglContext;
&gt; 
&gt; Do we ever think there might be a time when the WebGL context goes away
&gt; before the GC3D?

Hmm, if the destructor for WebGLRenderingContextBase gets called we always also destroy the associated graphicsContext3D, so this shouldn&apos;t be an issue.
I believe I added a nullcheck to the forceContextLost call just in case. Maybe an assert would be more appropriate though.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/mac/GraphicsContext3DMac.mm:202
&gt; &gt; +    GLint abortOnBlacklist = 0;
&gt; &gt; +    CGLSetParameter(m_contextObj, kCGLCPAbortOnGPURestartStatusBlacklisted, &amp;abortOnBlacklist);
&gt; 
&gt; You&apos;ll need to #if around these since they are only available on OS X 10.10+
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/mac/WebGLLayer.mm:180
&gt; &gt; +    GLint restartStatus = 0;
&gt; &gt; +    CGLGetParameter(_context-&gt;platformGraphicsContext3D(), kCGLCPGPURestartStatus, &amp;restartStatus);
&gt; &gt; +    if (restartStatus == kCGLCPGPURestartStatusCaused || restartStatus == kCGLCPGPURestartStatusBlacklisted) {
&gt; &gt; +        CGLDestroyContext(_context-&gt;platformGraphicsContext3D());
&gt; &gt; +        _context-&gt;forceContextLost();
&gt; &gt; +    }
&gt; 
&gt; Similarly here.
&gt; 
&gt; One concern I have is that we&apos;re only doing this test on display. Which
&gt; means you could hose the system if you executed a lot of draw calls before
&gt; allowing the system to draw. We might want to have this code in the drawing
&gt; entry points, drawElements and drawArrays, but only test every X iterations
&gt; or something.
How does 5 iterations sound?

&gt; 
&gt; Anyway, if this makes an improvement on our hanging examples, let&apos;s stick
&gt; with it.

Hmm if I do stick this stuff in drawArrays I feel like I won&apos;t need to have it in the display method, since the draw methods will always come first. Does that sound right?

Although, I suppose, it could help though if there is only 1 draw call, we&apos;ll probably want to catch the error before having to attempt to draw more frames. (Thus in the display step), so maybe ew want both.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1070592</commentid>
    <comment_count>7</comment_count>
      <attachid>246934</attachid>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2015-02-19 18:56:04 -0800</bug_when>
    <thetext>Created attachment 246934
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071566</commentid>
    <comment_count>8</comment_count>
      <attachid>247207</attachid>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2015-02-23 23:50:05 -0800</bug_when>
    <thetext>Created attachment 247207
patch

Checks GPU status in draw method calls as well.
Also does the appropriate gpu checking for iOS, which uses a slightly different API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071755</commentid>
    <comment_count>9</comment_count>
      <attachid>247256</attachid>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2015-02-24 12:53:31 -0800</bug_when>
    <thetext>Created attachment 247256
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071756</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-24 12:56:00 -0800</bug_when>
    <thetext>Attachment 247256 did not pass style-queue:


ERROR: Source/WebCore/platform/spi/ios/OpenGLESSPI.h:36:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/spi/ios/OpenGLESSPI.h:37:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/spi/ios/OpenGLESSPI.h:38:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 3 in 11 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>1071759</commentid>
    <comment_count>11</comment_count>
      <attachid>247258</attachid>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2015-02-24 13:11:29 -0800</bug_when>
    <thetext>Created attachment 247258
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071761</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-24 13:14:09 -0800</bug_when>
    <thetext>Attachment 247258 did not pass style-queue:


ERROR: Source/WebCore/platform/spi/ios/OpenGLESSPI.h:36:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/spi/ios/OpenGLESSPI.h:37:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/spi/ios/OpenGLESSPI.h:38:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 3 in 11 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>1071762</commentid>
    <comment_count>13</comment_count>
      <attachid>247259</attachid>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2015-02-24 13:17:33 -0800</bug_when>
    <thetext>Created attachment 247259
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071765</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-24 13:19:27 -0800</bug_when>
    <thetext>Attachment 247259 did not pass style-queue:


ERROR: Source/WebCore/platform/spi/ios/OpenGLESSPI.h:38:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/spi/ios/OpenGLESSPI.h:39:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/spi/ios/OpenGLESSPI.h:40:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 3 in 11 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>1071768</commentid>
    <comment_count>15</comment_count>
      <attachid>247262</attachid>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2015-02-24 13:32:03 -0800</bug_when>
    <thetext>Created attachment 247262
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071770</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-24 13:34:13 -0800</bug_when>
    <thetext>Attachment 247262 did not pass style-queue:


ERROR: Source/WebCore/platform/spi/ios/OpenGLESSPI.h:38:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/spi/ios/OpenGLESSPI.h:39:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/spi/ios/OpenGLESSPI.h:40:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 3 in 11 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>1071816</commentid>
    <comment_count>17</comment_count>
      <attachid>247262</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2015-02-24 15:31:04 -0800</bug_when>
    <thetext>Comment on attachment 247262
patch

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

&gt; Source/WebCore/platform/graphics/GraphicsContext3D.h:1278
&gt; +    // Call to make during draw calls to check on the GPU&apos;s status

Nit: missing .

Naming comments coming.

&gt; Source/WebCore/platform/graphics/mac/GraphicsContext3DMac.mm:68
&gt; +const int checkGPUStatusDrawIterations = 5;

Maybe GPUStatusCheckThreshold?

&gt; Source/WebCore/platform/graphics/mac/GraphicsContext3DMac.mm:69
&gt; +int GraphicsContext3D::drawCounter = 0;

And checkCounter? I don&apos;t do names well, so whatever you think is best.

&gt; Source/WebCore/platform/graphics/mac/GraphicsContext3DMac.mm:370
&gt; +void GraphicsContext3D::checkGPUStatus()

Suggest naming this checkGPUStatusIfNecessary or something.

&gt; Source/WebCore/platform/graphics/mac/WebGLLayer.mm:193
&gt; +    GLint restartStatus = 0;
&gt; +    EAGLContext* currentContext = _context-&gt;platformGraphicsContext3D();
&gt; +    [currentContext getParameter:kEAGLCPGPURestartStatus to:&amp;restartStatus];
&gt; +    if (restartStatus == kEAGLCPGPURestartStatusCaused || restartStatus == kEAGLCPGPURestartStatusBlacklisted) {
&gt; +        [EAGLContext setCurrentContext:0];
&gt; +        [static_cast&lt;EAGLContext*&gt;(currentContext) release];
&gt; +        _context-&gt;forceContextLost();
&gt; +    }
&gt;  #else
&gt;      [super display];
&gt; +#if __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101000
&gt; +    GLint restartStatus = 0;
&gt; +    CGLGetParameter(_context-&gt;platformGraphicsContext3D(), kCGLCPGPURestartStatus, &amp;restartStatus);
&gt; +    if (restartStatus == kCGLCPGPURestartStatusCaused || restartStatus == kCGLCPGPURestartStatusBlacklisted) {
&gt; +        CGLSetCurrentContext(0);
&gt; +        CGLDestroyContext(_context-&gt;platformGraphicsContext3D());
&gt; +        _context-&gt;forceContextLost();
&gt; +    }
&gt; +#endif

Do you think we need to test here? These calls should be fine. It&apos;s the actual draw calls that you tested above that would cause a restart. Unless you disagree, I say remove these ones.

&gt; Source/WebCore/platform/spi/ios/OpenGLESSPI.h:2
&gt; + * Copyright (C) 2014 Apple Inc. All rights reserved.

2015</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071930</commentid>
    <comment_count>18</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2015-02-24 20:20:34 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/180609</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071931</commentid>
    <comment_count>19</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2015-02-24 20:21:06 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; http://trac.webkit.org/changeset/180609

With Dean&apos;s fixed applied.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071954</commentid>
    <comment_count>20</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-02-24 21:12:39 -0800</bug_when>
    <thetext>Landed a Mavericks build fix attempt: https://trac.webkit.org/changeset/180614</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071955</commentid>
    <comment_count>21</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2015-02-24 21:22:49 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; Landed a Mavericks build fix attempt:
&gt; https://trac.webkit.org/changeset/180614

Thanks rniwa!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246534</attachid>
            <date>2015-02-13 10:53:04 -0800</date>
            <delta_ts>2015-02-19 15:10:31 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>2517</size>
            <attacher name="Roger Fong">roger_fong</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MDAyNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE1LTAyLTEyICBSb2dlciBG
b25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0w6IERlc3Ryb3kgdGhl
IEdMQ29udGV4dCBpcyBhIEdQVSByZXN0YXJ0IGhhcyBiZWVuIGRldGVjdGVkLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxNTY3LgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMTg1MDc0OTY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0
M0RNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3ND
b250ZXh0M0QpOgorICAgICAgICBTZXQga0NHTENQQWJvcnRPbkdQVVJlc3RhcnRTdGF0dXNCbGFj
a2xpc3RlZCB0byBmYWxzZS4gCisgICAgICAgIFdl4oCZbGwgaGFuZGxlIEdQVSByZXN0YXJ0cyBv
dXJzZWx2ZXMuIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJHTExheWVyLm1t
OgorICAgICAgICAoLVtXZWJHTExheWVyIGRyYXdJbkNHTENvbnRleHQ6cGl4ZWxGb3JtYXQ6Zm9y
TGF5ZXJUaW1lOmRpc3BsYXlUaW1lOl0pOgorICAgICAgICBJZiBhIEdQVSByZXN0YXJ0IGhhcyBi
ZWVuIGRldGVjdGVkLCBkZXN0cm95IHRoZSBDR0wgY29udGV4dC4KKwogMjAxNS0wMi0xMiAgRGVh
biBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgW2lPUyBNZWRpYV0gQXVkaW8g
c2hvdWxkIGhpZGUgdGltZWxpbmUgc2NydWJiZXIgdW50aWwgcGxheWJhY2sgc3RhcnRzCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RN
YWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0dyYXBoaWNzQ29udGV4dDNETWFjLm1tCShyZXZpc2lvbiAxNzk5ODIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMubW0JKHdvcmtp
bmcgY29weSkKQEAgLTE5Niw2ICsxOTYsOCBAQCBHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3ND
b250ZXh0M0QoR3JhCiAgICAgICAgIHJldHVybjsKIAogICAgIENHTEVycm9yIGVyciA9IENHTENy
ZWF0ZUNvbnRleHQocGl4ZWxGb3JtYXRPYmosIDAsICZtX2NvbnRleHRPYmopOworICAgIEdMaW50
IGFib3J0T25CbGFja2xpc3QgPSAwOworICAgIENHTFNldFBhcmFtZXRlcihtX2NvbnRleHRPYmos
IGtDR0xDUEFib3J0T25HUFVSZXN0YXJ0U3RhdHVzQmxhY2tsaXN0ZWQsICZhYm9ydE9uQmxhY2ts
aXN0KTsKICAgICBDR0xEZXN0cm95UGl4ZWxGb3JtYXQocGl4ZWxGb3JtYXRPYmopOwogICAgIAog
ICAgIGlmIChlcnIgIT0ga0NHTE5vRXJyb3IgfHwgIW1fY29udGV4dE9iaikgewpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkdMTGF5ZXIubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkdMTGF5ZXIubW0J
KHJldmlzaW9uIDE3OTk4MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9XZWJHTExheWVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04Myw3ICs4MywxNCBAQCAtKHZvaWQp
ZHJhd0luQ0dMQ29udGV4dDooQ0dMQ29udGV4dE9iailnCiAgICAgX2NvbnRleHQtPnByZXBhcmVU
ZXh0dXJlKCk7CiAKICAgICBDR0xTZXRDdXJyZW50Q29udGV4dChnbENvbnRleHQpOwotCisgICAg
CisgICAgR0xpbnQgcmVzdGFydFN0YXR1cyA9IDA7CisgICAgQ0dMR2V0UGFyYW1ldGVyKGdsQ29u
dGV4dCwga0NHTENQR1BVUmVzdGFydFN0YXR1cywgJnJlc3RhcnRTdGF0dXMpOworICAgIGlmIChy
ZXN0YXJ0U3RhdHVzID09IGtDR0xDUEdQVVJlc3RhcnRTdGF0dXNDYXVzZWQgfHwgcmVzdGFydFN0
YXR1cyA9PSBrQ0dMQ1BHUFVSZXN0YXJ0U3RhdHVzQmxhY2tsaXN0ZWQpIHsKKyAgICAgICAgQ0dM
RGVzdHJveUNvbnRleHQoZ2xDb250ZXh0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAK
ICAgICBDR1JlY3QgZnJhbWUgPSBbc2VsZiBmcmFtZV07CiAgICAgZnJhbWUuc2l6ZS53aWR0aCAq
PSBfZGV2aWNlUGl4ZWxSYXRpbzsKICAgICBmcmFtZS5zaXplLmhlaWdodCAqPSBfZGV2aWNlUGl4
ZWxSYXRpbzsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246923</attachid>
            <date>2015-02-19 15:10:31 -0800</date>
            <delta_ts>2015-02-24 14:18:11 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>6645</size>
            <attacher name="Roger Fong">roger_fong</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MDM2NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDE1LTAyLTE5ICBSb2dlciBG
b25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0w6IERlc3Ryb3kgdGhl
IEdMQ29udGV4dCBpZiBhIEdQVSByZXN0YXJ0IGhhcyBiZWVuIGRldGVjdGVkLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxNTY3LgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMTg1MDc0OTY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OldlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dDNELmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6c2V0
V2ViR0xDb250ZXh0KTogCisgICAgICAgIEtlZXAgdHJhY2sgb2Ygd2hpY2ggV2ViR0xSZW5kZXJp
bmdDb250ZXh0IGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VycmVudCBHcmFwaGljc0NvbnRleHQz
RC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0
M0QpOiAKKyAgICAgICAgRG9u4oCZdCBpbW1lZGlhdGVseSBhYm9ydCB0aGUgR1BVIHByb2Nlc3Mg
d2hlbiB0aGUgcmVzdGFydCBzdGF0dXMgaXMga0NHTENQR1BVUmVzdGFydFN0YXR1c0JsYWNrbGlz
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJHTExheWVyLm1tOgorICAg
ICAgICAoLVtXZWJHTExheWVyIGRpc3BsYXldKTogCisgICAgICAgIERlc3Ryb3kgdGhlIGNvbnRl
eHQgYW5kIGZvcmNlIGEgY29udGV4dCBsb3N0IGV2ZW50IGlmIGEgR1BVIHJlc3RhcnQgaGFzIGJl
ZW4gZGV0ZWN0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dDNET3BlbkdMQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpmb3JjZUNvbnRleHRMb3N0KTogCisgICAgICAgIEZvcmNlIHRoZSBXZWJHTFJlbmRl
cmluZ0NvbnRleHQgdG8gYmUgbG9zdC4KKwogMjAxNS0wMi0xOSAgRGF2aWQgSHlhdHQgIDxoeWF0
dEBhcHBsZS5jb20+CiAKICAgICAgICAgQ29sdW1ucyBhcmUgc3BsaXR0aW5nIHVuc3BsaXR0YWJs
ZSBjb250ZW50LgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAJKHJldmlzaW9uIDE4MDMzOCkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NjMsNiArNDYzLDggQEAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6V2ViR0xSZW5kZXJpbgogICAgIEFTU0VSVChtX2NvbnRleHQpOwogICAgIG1fY29udGV4dEdy
b3VwID0gV2ViR0xDb250ZXh0R3JvdXA6OmNyZWF0ZSgpOwogICAgIG1fY29udGV4dEdyb3VwLT5h
ZGRDb250ZXh0KHRoaXMpOworICAgIAorICAgIG1fY29udGV4dC0+c2V0V2ViR0xDb250ZXh0KHRo
aXMpOwogCiAgICAgbV9tYXhWaWV3cG9ydERpbXNbMF0gPSBtX21heFZpZXdwb3J0RGltc1sxXSA9
IDA7CiAgICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHQzRDo6TUFYX1ZJ
RVdQT1JUX0RJTVMsIG1fbWF4Vmlld3BvcnREaW1zKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAkocmV2aXNpb24g
MTgwMzM4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0M0QuaAkod29ya2luZyBjb3B5KQpAQCAtOTgsNiArOTgsNyBAQCBjbGFzcyBJbWFnZVNvdXJj
ZTsKIGNsYXNzIEltYWdlRGF0YTsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBJbnRTaXplOworY2xh
c3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTsKICNpZiBVU0UoQ0FJUk8pCiBjbGFzcyBQbGF0
Zm9ybUNvbnRleHRDYWlybzsKICNlbmRpZgpAQCAtNzgwLDYgKzc4MSw3IEBAIHB1YmxpYzoKICNl
bmRpZgogCiAgICAgYm9vbCBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICB2b2lkIHNldFdlYkdM
Q29udGV4dChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBiYXNlKSB7IG1fd2ViZ2xDb250ZXh0
ID0gYmFzZTsgfQogCiAgICAgLy8gV2l0aCBtdWx0aXNhbXBsaW5nIG9uLCBibGl0IGZyb20gbXVs
dGlzYW1wbGVGQk8gdG8gcmVndWxhciBGQk8uCiAgICAgdm9pZCBwcmVwYXJlVGV4dHVyZSgpOwpA
QCAtMTEyOCw2ICsxMTMwLDcgQEAgcHVibGljOgogICAgIHZvaWQgbWFya0NvbnRleHRDaGFuZ2Vk
KCk7CiAgICAgdm9pZCBtYXJrTGF5ZXJDb21wb3NpdGVkKCk7CiAgICAgYm9vbCBsYXllckNvbXBv
c2l0ZWQoKSBjb25zdDsKKyAgICB2b2lkIGZvcmNlQ29udGV4dExvc3QoKTsKIAogICAgIHZvaWQg
cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqLCBEcmF3aW5nQnVmZmVy
Kik7CiAgICAgUGFzc1JlZlB0cjxJbWFnZURhdGE+IHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1h
Z2VEYXRhKERyYXdpbmdCdWZmZXIqKTsKQEAgLTE0MzgsNiArMTQ0MSw4IEBAIHByaXZhdGU6CiAK
ICAgICBmcmllbmQgY2xhc3MgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxHcmFwaGljc0NvbnRleHQzRFByaXZhdGU+IG1fcHJpdmF0ZTsKKyAgICAKKyAgICBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBtX3dlYmdsQ29udGV4dDsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9HcmFwaGljc0NvbnRleHQzRE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMubW0JKHJldmlzaW9uIDE4
MDMzOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0Nv
bnRleHQzRE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsNyBAQAogI2VuZGlmCiAj
aW5jbHVkZSAiV2ViR0xMYXllci5oIgogI2luY2x1ZGUgIldlYkdMT2JqZWN0LmgiCisjaW5jbHVk
ZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlC
dWZmZXIuaD4KICNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyVmlldy5oPgogI2luY2x1ZGUg
PHJ1bnRpbWUvSW50MzJBcnJheS5oPgpAQCAtMTQ1LDYgKzE0Niw3IEBAIEdyYXBoaWNzQ29udGV4
dDNEOjpHcmFwaGljc0NvbnRleHQzRChHcmEKICAgICAsIG1fbXVsdGlzYW1wbGVEZXB0aFN0ZW5j
aWxCdWZmZXIoMCkKICAgICAsIG1fbXVsdGlzYW1wbGVDb2xvckJ1ZmZlcigwKQogICAgICwgbV9w
cml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlPih0aGlzKSkK
KyAgICAsIG1fd2ViZ2xDb250ZXh0KDApCiB7CiAgICAgVU5VU0VEX1BBUkFNKGhvc3RXaW5kb3cp
OwogICAgIFVOVVNFRF9QQVJBTShyZW5kZXJTdHlsZSk7CkBAIC0xOTYsNiArMTk4LDggQEAgR3Jh
cGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKEdyYQogICAgICAgICByZXR1cm47CiAK
ICAgICBDR0xFcnJvciBlcnIgPSBDR0xDcmVhdGVDb250ZXh0KHBpeGVsRm9ybWF0T2JqLCAwLCAm
bV9jb250ZXh0T2JqKTsKKyAgICBHTGludCBhYm9ydE9uQmxhY2tsaXN0ID0gMDsKKyAgICBDR0xT
ZXRQYXJhbWV0ZXIobV9jb250ZXh0T2JqLCBrQ0dMQ1BBYm9ydE9uR1BVUmVzdGFydFN0YXR1c0Js
YWNrbGlzdGVkLCAmYWJvcnRPbkJsYWNrbGlzdCk7CiAgICAgQ0dMRGVzdHJveVBpeGVsRm9ybWF0
KHBpeGVsRm9ybWF0T2JqKTsKICAgICAKICAgICBpZiAoZXJyICE9IGtDR0xOb0Vycm9yIHx8ICFt
X2NvbnRleHRPYmopIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9XZWJHTExheWVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9XZWJHTExheWVyLm1tCShyZXZpc2lvbiAxODAzMzgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViR0xMYXllci5tbQkod29ya2luZyBjb3B5KQpA
QCAtODMsNyArODMsNyBAQCAtKHZvaWQpZHJhd0luQ0dMQ29udGV4dDooQ0dMQ29udGV4dE9iailn
CiAgICAgX2NvbnRleHQtPnByZXBhcmVUZXh0dXJlKCk7CiAKICAgICBDR0xTZXRDdXJyZW50Q29u
dGV4dChnbENvbnRleHQpOwotCisgICAgCiAgICAgQ0dSZWN0IGZyYW1lID0gW3NlbGYgZnJhbWVd
OwogICAgIGZyYW1lLnNpemUud2lkdGggKj0gX2RldmljZVBpeGVsUmF0aW87CiAgICAgZnJhbWUu
c2l6ZS5oZWlnaHQgKj0gX2RldmljZVBpeGVsUmF0aW87CkBAIC0xNzIsNiArMTcyLDEyIEBAIC0g
KHZvaWQpZGlzcGxheQogI2Vsc2UKICAgICBbc3VwZXIgZGlzcGxheV07CiAjZW5kaWYKKyAgICBH
TGludCByZXN0YXJ0U3RhdHVzID0gMDsKKyAgICBDR0xHZXRQYXJhbWV0ZXIoX2NvbnRleHQtPnBs
YXRmb3JtR3JhcGhpY3NDb250ZXh0M0QoKSwga0NHTENQR1BVUmVzdGFydFN0YXR1cywgJnJlc3Rh
cnRTdGF0dXMpOworICAgIGlmIChyZXN0YXJ0U3RhdHVzID09IGtDR0xDUEdQVVJlc3RhcnRTdGF0
dXNDYXVzZWQgfHwgcmVzdGFydFN0YXR1cyA9PSBrQ0dMQ1BHUFVSZXN0YXJ0U3RhdHVzQmxhY2ts
aXN0ZWQpIHsKKyAgICAgICAgQ0dMRGVzdHJveUNvbnRleHQoX2NvbnRleHQtPnBsYXRmb3JtR3Jh
cGhpY3NDb250ZXh0M0QoKSk7CisgICAgICAgIF9jb250ZXh0LT5mb3JjZUNvbnRleHRMb3N0KCk7
CisgICAgfQogICAgIF9jb250ZXh0LT5tYXJrTGF5ZXJDb21wb3NpdGVkKCk7CiB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQz
RE9wZW5HTENvbW1vbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcAkocmV2aXNp
b24gMTgwMzM4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiAr
NDgsNyBAQAogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5j
bHVkZSAiVGVtcG9yYXJ5T3BlbkdMU2V0dGluZy5oIgorI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UuaCIKICNpbmNsdWRlIDxjc3RyaW5nPgogI2luY2x1ZGUgPHJ1bnRpbWUvQXJy
YXlCdWZmZXIuaD4KICNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyVmlldy5oPgpAQCAtMTc2
Myw2ICsxNzY0LDEyIEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmxheWVyQ29tcG9zaXRlZCgK
ICAgICByZXR1cm4gbV9sYXllckNvbXBvc2l0ZWQ7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmZvcmNlQ29udGV4dExvc3QoKQoreworICAgIGlmIChtX3dlYmdsQ29udGV4dCkKKyAgICAg
ICAgbV93ZWJnbENvbnRleHQtPmZvcmNlTG9zdENvbnRleHQoV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6UmVhbExvc3RDb250ZXh0KTsKK30KKwogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dGV4
SW1hZ2UyRERpcmVjdChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGlu
dGVybmFsZm9ybWF0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQg
Ym9yZGVyLCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVs
cykKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
</data>
<flag name="review"
          id="271874"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246934</attachid>
            <date>2015-02-19 18:56:04 -0800</date>
            <delta_ts>2015-02-23 23:50:05 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>9563</size>
            <attacher name="Roger Fong">roger_fong</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MDM3OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDE1LTAyLTE5ICBSb2dlciBG
b25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0w6IERlc3Ryb3kgdGhl
IEdMQ29udGV4dCBpZiBhIEdQVSByZXN0YXJ0IGhhcyBiZWVuIGRldGVjdGVkLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxNTY3LgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMTg1MDc0OTY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OldlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dDNELmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6c2V0
V2ViR0xDb250ZXh0KTogCisgICAgICAgIEtlZXAgdHJhY2sgb2Ygd2hpY2ggV2ViR0xSZW5kZXJp
bmdDb250ZXh0IGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VycmVudCBHcmFwaGljc0NvbnRleHQz
RC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0
M0QpOiAKKyAgICAgICAgRG9u4oCZdCBpbW1lZGlhdGVseSBhYm9ydCB0aGUgR1BVIHByb2Nlc3Mg
d2hlbiB0aGUgcmVzdGFydCBzdGF0dXMgaXMga0NHTENQR1BVUmVzdGFydFN0YXR1c0JsYWNrbGlz
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJHTExheWVyLm1tOgorICAg
ICAgICAoLVtXZWJHTExheWVyIGRpc3BsYXldKTogCisgICAgICAgIERlc3Ryb3kgdGhlIGNvbnRl
eHQgYW5kIGZvcmNlIGEgY29udGV4dCBsb3N0IGV2ZW50IGlmIGEgR1BVIHJlc3RhcnQgaGFzIGJl
ZW4gZGV0ZWN0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dDNET3BlbkdMQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpmb3JjZUNvbnRleHRMb3N0KTogCisgICAgICAgIEZvcmNlIHRoZSBXZWJHTFJlbmRl
cmluZ0NvbnRleHQgdG8gYmUgbG9zdC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpjaGVja0dQVVN0YXR1cyk6IEhlbHBlciBtZXRob2QgdG8gY2hlY2sgR1BVIHN0YXR1cy4K
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpkcmF3QXJyYXlzKTogQ2hlY2sg
R1BVIHN0YXR1cyBhZnRlciBjYWxsaW5nIGRyYXdBcnJheXMuCisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6ZHJhd0VsZW1lbnRzKTogQ2hlY2sgR1BVIHN0YXR1cyBhZnRlciBj
YWxsaW5nIGRyYXdFbGVtZW50cy4KKwogMjAxNS0wMi0xOSAgRGF2aWQgS2lsemVyICA8ZGRraWx6
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBTT0ZUX0xJTktfRlVOQ1RJT05fe0RFQ0ws
SU1QTH0oKSB0byBTT0ZUX0xJTktfRlVOQ1RJT05fe0hFQURFUixTT1VSQ0V9KCkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwCShyZXZpc2lvbiAxODAzMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYz
LDYgKzQ2Myw4IEBAIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OldlYkdMUmVuZGVyaW4KICAg
ICBBU1NFUlQobV9jb250ZXh0KTsKICAgICBtX2NvbnRleHRHcm91cCA9IFdlYkdMQ29udGV4dEdy
b3VwOjpjcmVhdGUoKTsKICAgICBtX2NvbnRleHRHcm91cC0+YWRkQ29udGV4dCh0aGlzKTsKKyAg
ICAKKyAgICBtX2NvbnRleHQtPnNldFdlYkdMQ29udGV4dCh0aGlzKTsKIAogICAgIG1fbWF4Vmll
d3BvcnREaW1zWzBdID0gbV9tYXhWaWV3cG9ydERpbXNbMV0gPSAwOwogICAgIG1fY29udGV4dC0+
Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0M0Q6Ok1BWF9WSUVXUE9SVF9ESU1TLCBtX21heFZp
ZXdwb3J0RGltcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQzRC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgJKHJldmlzaW9uIDE4MDMzOCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgJKHdvcmtpbmcgY29w
eSkKQEAgLTk4LDYgKzk4LDcgQEAgY2xhc3MgSW1hZ2VTb3VyY2U7CiBjbGFzcyBJbWFnZURhdGE7
CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgSW50U2l6ZTsKK2NsYXNzIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U7CiAjaWYgVVNFKENBSVJPKQogY2xhc3MgUGxhdGZvcm1Db250ZXh0Q2Fpcm87CiAj
ZW5kaWYKQEAgLTc4MCw2ICs3ODEsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIGJvb2wgbWFr
ZUNvbnRleHRDdXJyZW50KCk7CisgICAgdm9pZCBzZXRXZWJHTENvbnRleHQoV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSogYmFzZSkgeyBtX3dlYmdsQ29udGV4dCA9IGJhc2U7IH0KIAogICAgIC8v
IFdpdGggbXVsdGlzYW1wbGluZyBvbiwgYmxpdCBmcm9tIG11bHRpc2FtcGxlRkJPIHRvIHJlZ3Vs
YXIgRkJPLgogICAgIHZvaWQgcHJlcGFyZVRleHR1cmUoKTsKQEAgLTExMjgsNiArMTEzMCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIG1hcmtDb250ZXh0Q2hhbmdlZCgpOwogICAgIHZvaWQgbWFya0xh
eWVyQ29tcG9zaXRlZCgpOwogICAgIGJvb2wgbGF5ZXJDb21wb3NpdGVkKCkgY29uc3Q7CisgICAg
dm9pZCBmb3JjZUNvbnRleHRMb3N0KCk7CiAKICAgICB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0
c1RvQ2FudmFzKEltYWdlQnVmZmVyKiwgRHJhd2luZ0J1ZmZlciopOwogICAgIFBhc3NSZWZQdHI8
SW1hZ2VEYXRhPiBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YShEcmF3aW5nQnVmZmVy
Kik7CkBAIC0xMjU2LDYgKzEyNTksNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEdyYXBoaWNz
Q29udGV4dDNEKEF0dHJpYnV0ZXMsIEhvc3RXaW5kb3cqLCBSZW5kZXJTdHlsZSA9IFJlbmRlck9m
ZnNjcmVlbik7CiAgICAgc3RhdGljIGludCBudW1BY3RpdmVDb250ZXh0czsKKyAgICBzdGF0aWMg
aW50IGRyYXdDb3VudGVyOwogCiAgICAgLy8gSGVscGVyIGZvciBwYWNrSW1hZ2VEYXRhL2V4dHJh
Y3RJbWFnZURhdGEvZXh0cmFjdFRleHR1cmVEYXRhIHdoaWNoIGltcGxlbWVudCBwYWNraW5nIG9m
IHBpeGVsCiAgICAgLy8gZGF0YSBpbnRvIHRoZSBzcGVjaWZpZWQgT3BlbkdMIGRlc3RpbmF0aW9u
IGZvcm1hdCBhbmQgdHlwZS4KQEAgLTEyNzAsNiArMTI3NCw5IEBAIHByaXZhdGU6CiAgICAgLy8g
aW1wbGVtZW50YXRpb24uCiAgICAgdm9pZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFy
KiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pOwogICAgIHZvaWQgdmFsaWRhdGVBdHRyaWJ1
dGVzKCk7CisgICAgCisgICAgLy8gQ2FsbCB0byBtYWtlIGR1cmluZyBkcmF3IGNhbGxzIHRvIGNo
ZWNrIG9uIHRoZSBHUFUncyBzdGF0dXMKKyAgICB2b2lkIGNoZWNrR1BVU3RhdHVzKCk7CiAKICAg
ICAvLyBSZWFkIHJlbmRlcmluZyByZXN1bHRzIGludG8gYSBwaXhlbCBhcnJheSB3aXRoIHRoZSBz
YW1lIGZvcm1hdCBhcyB0aGUKICAgICAvLyBiYWNrYnVmZmVyLgpAQCAtMTQzOCw2ICsxNDQ1LDgg
QEAgcHJpdmF0ZToKIAogICAgIGZyaWVuZCBjbGFzcyBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZT4gbV9wcml2YXRl
OworICAgIAorICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIG1fd2ViZ2xDb250ZXh0Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5t
bQkocmV2aXNpb24gMTgwMzM4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3
IEBACiAjZW5kaWYKICNpbmNsdWRlICJXZWJHTExheWVyLmgiCiAjaW5jbHVkZSAiV2ViR0xPYmpl
Y3QuaCIKKyNpbmNsdWRlICJXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgiCiAjaW5jbHVkZSA8
cnVudGltZS9BcnJheUJ1ZmZlci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3
Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9JbnQzMkFycmF5Lmg+CkBAIC0xNDUsNiArMTQ2LDcgQEAg
R3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKEdyYQogICAgICwgbV9tdWx0aXNh
bXBsZURlcHRoU3RlbmNpbEJ1ZmZlcigwKQogICAgICwgbV9tdWx0aXNhbXBsZUNvbG9yQnVmZmVy
KDApCiAgICAgLCBtX3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGU+KHRoaXMpKQorICAgICwgbV93ZWJnbENvbnRleHQoMCkKIHsKICAgICBVTlVTRURfUEFS
QU0oaG9zdFdpbmRvdyk7CiAgICAgVU5VU0VEX1BBUkFNKHJlbmRlclN0eWxlKTsKQEAgLTE5Niw2
ICsxOTgsMTAgQEAgR3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKEdyYQogICAg
ICAgICByZXR1cm47CiAKICAgICBDR0xFcnJvciBlcnIgPSBDR0xDcmVhdGVDb250ZXh0KHBpeGVs
Rm9ybWF0T2JqLCAwLCAmbV9jb250ZXh0T2JqKTsKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEwMTAwMAorICAgIEdMaW50IGFib3J0T25CbGFja2xpc3QgPSAwOworICAg
IENHTFNldFBhcmFtZXRlcihtX2NvbnRleHRPYmosIGtDR0xDUEFib3J0T25HUFVSZXN0YXJ0U3Rh
dHVzQmxhY2tsaXN0ZWQsICZhYm9ydE9uQmxhY2tsaXN0KTsKKyNlbmRpZgogICAgIENHTERlc3Ry
b3lQaXhlbEZvcm1hdChwaXhlbEZvcm1hdE9iaik7CiAgICAgCiAgICAgaWYgKGVyciAhPSBrQ0dM
Tm9FcnJvciB8fCAhbV9jb250ZXh0T2JqKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvV2ViR0xMYXllci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViR0xMYXllci5tbQkocmV2aXNpb24gMTgwMzM4KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkdMTGF5ZXIubW0JKHdv
cmtpbmcgY29weSkKQEAgLTgzLDcgKzgzLDcgQEAgLSh2b2lkKWRyYXdJbkNHTENvbnRleHQ6KENH
TENvbnRleHRPYmopZwogICAgIF9jb250ZXh0LT5wcmVwYXJlVGV4dHVyZSgpOwogCiAgICAgQ0dM
U2V0Q3VycmVudENvbnRleHQoZ2xDb250ZXh0KTsKLQorICAgIAogICAgIENHUmVjdCBmcmFtZSA9
IFtzZWxmIGZyYW1lXTsKICAgICBmcmFtZS5zaXplLndpZHRoICo9IF9kZXZpY2VQaXhlbFJhdGlv
OwogICAgIGZyYW1lLnNpemUuaGVpZ2h0ICo9IF9kZXZpY2VQaXhlbFJhdGlvOwpAQCAtMTcyLDYg
KzE3MiwxNSBAQCAtICh2b2lkKWRpc3BsYXkKICNlbHNlCiAgICAgW3N1cGVyIGRpc3BsYXldOwog
I2VuZGlmCisgICAgCisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEw
MDAKKyAgICBHTGludCByZXN0YXJ0U3RhdHVzID0gMDsKKyAgICBDR0xHZXRQYXJhbWV0ZXIoX2Nv
bnRleHQtPnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QoKSwga0NHTENQR1BVUmVzdGFydFN0YXR1
cywgJnJlc3RhcnRTdGF0dXMpOworICAgIGlmIChyZXN0YXJ0U3RhdHVzID09IGtDR0xDUEdQVVJl
c3RhcnRTdGF0dXNDYXVzZWQgfHwgcmVzdGFydFN0YXR1cyA9PSBrQ0dMQ1BHUFVSZXN0YXJ0U3Rh
dHVzQmxhY2tsaXN0ZWQpIHsKKyAgICAgICAgQ0dMRGVzdHJveUNvbnRleHQoX2NvbnRleHQtPnBs
YXRmb3JtR3JhcGhpY3NDb250ZXh0M0QoKSk7CisgICAgICAgIF9jb250ZXh0LT5mb3JjZUNvbnRl
eHRMb3N0KCk7CisgICAgfQorI2VuZGlmCiAgICAgX2NvbnRleHQtPm1hcmtMYXllckNvbXBvc2l0
ZWQoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xD
b21tb24uY3BwCShyZXZpc2lvbiAxODAzMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKICNpbmNsdWRlICJUZW1wb3JhcnlPcGVuR0xTZXR0aW5nLmgiCisjaW5jbHVk
ZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIgogI2luY2x1ZGUgPGNzdHJpbmc+CiAjaW5j
bHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZm
ZXJWaWV3Lmg+CkBAIC02MCw2ICs2MSw5IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgogI2luY2x1ZGUgPHlhcnIvUmVndWxhckV4cHJlc3Npb24uaD4KIAorI2lmIFBMQVRG
T1JNKElPUykgfHwgUExBVEZPUk0oTUFDKQorI2luY2x1ZGUgPE9wZW5HTC9PcGVuR0wuaD4KKyNl
bmRpZgogI2lmIFBMQVRGT1JNKElPUykKICNpbXBvcnQgPE9wZW5HTEVTL0VTMi9nbGV4dC5oPgog
Ly8gRnJvbSA8T3BlbkdMRVMvZ2xleHQuaD4KQEAgLTc1LDkgKzc5LDEyIEBACiAjZW5kaWYKICNl
bmRpZgogCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIFNoYWRlck5hbWVIYXNoKiBj
dXJyZW50TmFtZUhhc2hNYXBGb3JTaGFkZXIgPSBudWxscHRyOworaW50IEdyYXBoaWNzQ29udGV4
dDNEOjpkcmF3Q291bnRlciA9IDA7Citjb25zdCBpbnQgY2hlY2tHUFVTdGF0dXNEcmF3SXRlcmF0
aW9ucyA9IDU7CiAKIC8vIEhhc2ggZnVuY3Rpb24gdXNlZCBieSB0aGUgQU5HTEUgdHJhbnNsYXRv
ci9jb21waWxlciB0byBkbwogLy8gc3ltYm9sIG5hbWUgbWFuZ2xpbmcuIFNpbmNlIHRoaXMgaXMg
YSBzdGF0aWMgbWV0aG9kLCBiZWZvcmUKQEAgLTY3OSwxNiArNjg2LDMzIEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmRpc2FibGVWZXJ0ZXhBdHQKICAgICA6OmdsRGlzYWJsZVZlcnRleEF0dHJp
YkFycmF5KGluZGV4KTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y2hlY2tHUFVTdGF0
dXMoKQoreworI2lmICgoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwMTAwMCkgfHwgUExBVEZPUk0oSU9TKSkKKyAgICBkcmF3Q291bnRlciA9IChk
cmF3Q291bnRlciArIDEpICUgY2hlY2tHUFVTdGF0dXNEcmF3SXRlcmF0aW9uczsKKyAgICBpZiAo
ZHJhd0NvdW50ZXIpCisgICAgICAgIHJldHVybjsKKyAgICBHTGludCByZXN0YXJ0U3RhdHVzID0g
MDsKKyAgICBDR0xHZXRQYXJhbWV0ZXIocGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCgpLCBrQ0dM
Q1BHUFVSZXN0YXJ0U3RhdHVzLCAmcmVzdGFydFN0YXR1cyk7CisgICAgaWYgKHJlc3RhcnRTdGF0
dXMgPT0ga0NHTENQR1BVUmVzdGFydFN0YXR1c0NhdXNlZCB8fCByZXN0YXJ0U3RhdHVzID09IGtD
R0xDUEdQVVJlc3RhcnRTdGF0dXNCbGFja2xpc3RlZCkgeworICAgICAgICBDR0xEZXN0cm95Q29u
dGV4dChwbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEKCkpOworICAgICAgICBmb3JjZUNvbnRleHRM
b3N0KCk7CisgICAgfQorI2VuZGlmCit9CisKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRyYXdB
cnJheXMoR0MzRGVudW0gbW9kZSwgR0MzRGludCBmaXJzdCwgR0MzRHNpemVpIGNvdW50KQogewog
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIDo6Z2xEcmF3QXJyYXlzKG1vZGUsIGZpcnN0
LCBjb3VudCk7CisgICAgY2hlY2tHUFVTdGF0dXMoKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6ZHJhd0VsZW1lbnRzKEdDM0RlbnVtIG1vZGUsIEdDM0RzaXplaSBjb3VudCwgR0MzRGVu
dW0gdHlwZSwgR0MzRGludHB0ciBvZmZzZXQpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
CiAgICAgOjpnbERyYXdFbGVtZW50cyhtb2RlLCBjb3VudCwgdHlwZSwgcmVpbnRlcnByZXRfY2Fz
dDxHTHZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4ob2Zmc2V0KSkpOworICAgIGNoZWNrR1BV
U3RhdHVzKCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmVuYWJsZShHQzNEZW51bSBj
YXApCkBAIC0xNzYzLDYgKzE3ODcsMTIgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6bGF5ZXJD
b21wb3NpdGVkKAogICAgIHJldHVybiBtX2xheWVyQ29tcG9zaXRlZDsKIH0KIAordm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6Zm9yY2VDb250ZXh0TG9zdCgpCit7CisgICAgaWYgKG1fd2ViZ2xDb250
ZXh0KQorICAgICAgICBtX3dlYmdsQ29udGV4dC0+Zm9yY2VMb3N0Q29udGV4dChXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpSZWFsTG9zdENvbnRleHQpOworfQorCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjp0ZXhJbWFnZTJERGlyZWN0KEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwg
R0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdo
dCwgR0MzRGludCBib3JkZXIsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgY29uc3Qg
dm9pZCogcGl4ZWxzKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247207</attachid>
            <date>2015-02-23 23:50:05 -0800</date>
            <delta_ts>2015-02-24 12:53:31 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>12235</size>
            <attacher name="Roger Fong">roger_fong</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MDU1MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDE1LTAyLTE5ICBSb2dlciBG
b25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0w6IERlc3Ryb3kgdGhl
IEdMQ29udGV4dCBpZiBhIEdQVSByZXN0YXJ0IGhhcyBiZWVuIGRldGVjdGVkLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxNTY3LgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMTg1MDc0OTY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OldlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dDNELmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6c2V0
V2ViR0xDb250ZXh0KTogCisgICAgICAgIEtlZXAgdHJhY2sgb2Ygd2hpY2ggV2ViR0xSZW5kZXJp
bmdDb250ZXh0IGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VycmVudCBHcmFwaGljc0NvbnRleHQz
RC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y2hlY2tHUFVTdGF0dXMp
OiBIZWxwZXIgbWV0aG9kIHRvIGNoZWNrIEdQVSBzdGF0dXMuCisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QpOiAKKyAgICAgICAgRG9u4oCZdCBp
bW1lZGlhdGVseSBhYm9ydCB0aGUgR1BVIHByb2Nlc3Mgd2hlbiB0aGUgcmVzdGFydCBzdGF0dXMg
aXMga0NHTENQR1BVUmVzdGFydFN0YXR1c0JsYWNrbGlzdGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL21hYy9XZWJHTExheWVyLm1tOgorICAgICAgICAoLVtXZWJHTExheWVyIGRpc3Bs
YXldKTogCisgICAgICAgIERlc3Ryb3kgdGhlIGNvbnRleHQgYW5kIGZvcmNlIGEgY29udGV4dCBs
b3N0IGV2ZW50IGlmIGEgR1BVIHJlc3RhcnQgaGFzIGJlZW4gZGV0ZWN0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpmb3JjZUNvbnRleHRMb3N0
KTogCisgICAgICAgIEZvcmNlIHRoZSBXZWJHTFJlbmRlcmluZ0NvbnRleHQgdG8gYmUgbG9zdC4K
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpkcmF3QXJyYXlzKTogQ2hlY2sg
R1BVIHN0YXR1cyBhZnRlciBjYWxsaW5nIGRyYXdBcnJheXMuCisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6ZHJhd0VsZW1lbnRzKTogQ2hlY2sgR1BVIHN0YXR1cyBhZnRlciBj
YWxsaW5nIGRyYXdFbGVtZW50cy4KKwogMjAxNS0wMi0yMyAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0
LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE4
MDU0NyBhbmQgcjE4MDU1MC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCShyZXZpc2lvbiAxODA0NzYp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYzLDYgKzQ2Myw4IEBAIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OldlYkdMUmVuZGVyaW4KICAgICBBU1NFUlQobV9jb250ZXh0KTsKICAgICBtX2Nv
bnRleHRHcm91cCA9IFdlYkdMQ29udGV4dEdyb3VwOjpjcmVhdGUoKTsKICAgICBtX2NvbnRleHRH
cm91cC0+YWRkQ29udGV4dCh0aGlzKTsKKyAgICAKKyAgICBtX2NvbnRleHQtPnNldFdlYkdMQ29u
dGV4dCh0aGlzKTsKIAogICAgIG1fbWF4Vmlld3BvcnREaW1zWzBdID0gbV9tYXhWaWV3cG9ydERp
bXNbMV0gPSAwOwogICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0M0Q6
Ok1BWF9WSUVXUE9SVF9ESU1TLCBtX21heFZpZXdwb3J0RGltcyk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgJKHJl
dmlzaW9uIDE4MDQ3NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dDNELmgJKHdvcmtpbmcgY29weSkKQEAgLTk4LDYgKzk4LDcgQEAgY2xhc3MgSW1h
Z2VTb3VyY2U7CiBjbGFzcyBJbWFnZURhdGE7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgSW50U2l6
ZTsKK2NsYXNzIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U7CiAjaWYgVVNFKENBSVJPKQogY2xh
c3MgUGxhdGZvcm1Db250ZXh0Q2Fpcm87CiAjZW5kaWYKQEAgLTc4MCw2ICs3ODEsNyBAQCBwdWJs
aWM6CiAjZW5kaWYKIAogICAgIGJvb2wgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgdm9pZCBz
ZXRXZWJHTENvbnRleHQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogYmFzZSkgeyBtX3dlYmds
Q29udGV4dCA9IGJhc2U7IH0KIAogICAgIC8vIFdpdGggbXVsdGlzYW1wbGluZyBvbiwgYmxpdCBm
cm9tIG11bHRpc2FtcGxlRkJPIHRvIHJlZ3VsYXIgRkJPLgogICAgIHZvaWQgcHJlcGFyZVRleHR1
cmUoKTsKQEAgLTExMjgsNiArMTEzMCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG1hcmtDb250ZXh0
Q2hhbmdlZCgpOwogICAgIHZvaWQgbWFya0xheWVyQ29tcG9zaXRlZCgpOwogICAgIGJvb2wgbGF5
ZXJDb21wb3NpdGVkKCkgY29uc3Q7CisgICAgdm9pZCBmb3JjZUNvbnRleHRMb3N0KCk7CiAKICAg
ICB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKiwgRHJhd2lu
Z0J1ZmZlciopOwogICAgIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBwYWludFJlbmRlcmluZ1Jlc3Vs
dHNUb0ltYWdlRGF0YShEcmF3aW5nQnVmZmVyKik7CkBAIC0xMjU2LDYgKzEyNTksNyBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIEdyYXBoaWNzQ29udGV4dDNEKEF0dHJpYnV0ZXMsIEhvc3RXaW5k
b3cqLCBSZW5kZXJTdHlsZSA9IFJlbmRlck9mZnNjcmVlbik7CiAgICAgc3RhdGljIGludCBudW1B
Y3RpdmVDb250ZXh0czsKKyAgICBzdGF0aWMgaW50IGRyYXdDb3VudGVyOwogCiAgICAgLy8gSGVs
cGVyIGZvciBwYWNrSW1hZ2VEYXRhL2V4dHJhY3RJbWFnZURhdGEvZXh0cmFjdFRleHR1cmVEYXRh
IHdoaWNoIGltcGxlbWVudCBwYWNraW5nIG9mIHBpeGVsCiAgICAgLy8gZGF0YSBpbnRvIHRoZSBz
cGVjaWZpZWQgT3BlbkdMIGRlc3RpbmF0aW9uIGZvcm1hdCBhbmQgdHlwZS4KQEAgLTEyNzAsNiAr
MTI3NCw5IEBAIHByaXZhdGU6CiAgICAgLy8gaW1wbGVtZW50YXRpb24uCiAgICAgdm9pZCB2YWxp
ZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24p
OwogICAgIHZvaWQgdmFsaWRhdGVBdHRyaWJ1dGVzKCk7CisgICAgCisgICAgLy8gQ2FsbCB0byBt
YWtlIGR1cmluZyBkcmF3IGNhbGxzIHRvIGNoZWNrIG9uIHRoZSBHUFUncyBzdGF0dXMKKyAgICB2
b2lkIGNoZWNrR1BVU3RhdHVzKCk7CiAKICAgICAvLyBSZWFkIHJlbmRlcmluZyByZXN1bHRzIGlu
dG8gYSBwaXhlbCBhcnJheSB3aXRoIHRoZSBzYW1lIGZvcm1hdCBhcyB0aGUKICAgICAvLyBiYWNr
YnVmZmVyLgpAQCAtMTQzOCw2ICsxNDQ1LDggQEAgcHJpdmF0ZToKIAogICAgIGZyaWVuZCBjbGFz
cyBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZT4gbV9wcml2YXRlOworICAgIAorICAgIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UqIG1fd2ViZ2xDb250ZXh0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4
dDNERWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9lZmwvR3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwCShyZXZpc2lvbiAxODA0NzYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RFZmwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xODMsNiArMTgzLDEwIEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0
M0Q6Om1ha2VDb250ZXh0Q3VycmUKICAgICByZXR1cm4gbV9wcml2YXRlLT5tYWtlQ29udGV4dEN1
cnJlbnQoKTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y2hlY2tHUFVTdGF0dXMoKQor
eworfQorCiBib29sIEdyYXBoaWNzQ29udGV4dDNEOjppc0dMRVMyQ29tcGxpYW50KCkgY29uc3QK
IHsKICNpZiBVU0UoT1BFTkdMX0VTXzIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLm1tCShy
ZXZpc2lvbiAxODA0NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
R3JhcGhpY3NDb250ZXh0M0RNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAK
ICNpbXBvcnQgPE9wZW5HTEVTL0VTMi9nbGV4dC5oPgogI2ltcG9ydCA8T3BlbkdMRVMvRUFHTC5o
PgogI2ltcG9ydCA8T3BlbkdMRVMvRUFHTERyYXdhYmxlLmg+CisjaW1wb3J0IDxPcGVuR0xFUy9F
QUdMUHJpdmF0ZS5oPgogI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CiAjZWxzZQog
I2luY2x1ZGUgPE9wZW5HTC9DR0xSZW5kZXJlcnMuaD4KQEAgLTUyLDYgKzUzLDcgQEAKICNlbmRp
ZgogI2luY2x1ZGUgIldlYkdMTGF5ZXIuaCIKICNpbmNsdWRlICJXZWJHTE9iamVjdC5oIgorI2lu
Y2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCIKICNpbmNsdWRlIDxydW50aW1lL0Fy
cmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaD4KICNpbmNs
dWRlIDxydW50aW1lL0ludDMyQXJyYXkuaD4KQEAgLTYzLDcgKzY1LDkgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjb25zdCBpbnQgbWF4QWN0aXZlQ29udGV4dHMgPSA2NDsKIGludCBHcmFwaGlj
c0NvbnRleHQzRDo6bnVtQWN0aXZlQ29udGV4dHMgPSAwOwotCitjb25zdCBpbnQgY2hlY2tHUFVT
dGF0dXNEcmF3SXRlcmF0aW9ucyA9IDU7CitpbnQgR3JhcGhpY3NDb250ZXh0M0Q6OmRyYXdDb3Vu
dGVyID0gMDsKKyAgICAKIC8vIEZJWE1FOiBUaGlzIGNsYXNzIGlzIGN1cnJlbnRseSBlbXB0eSBv
biBNYWMsIGJ1dCB3aWxsIGdldCBwb3B1bGF0ZWQgYXMgCiAvLyB0aGUgcmVzdHJ1Y3R1cmluZyBp
biBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY5MDMgaXMgZG9uZQog
Y2xhc3MgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlIHsKQEAgLTE0NSw2ICsxNDksNyBAQCBHcmFw
aGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3JhCiAgICAgLCBtX211bHRpc2FtcGxl
RGVwdGhTdGVuY2lsQnVmZmVyKDApCiAgICAgLCBtX211bHRpc2FtcGxlQ29sb3JCdWZmZXIoMCkK
ICAgICAsIG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZT4odGhpcykpCisgICAgLCBtX3dlYmdsQ29udGV4dCgwKQogewogICAgIFVOVVNFRF9QQVJBTSho
b3N0V2luZG93KTsKICAgICBVTlVTRURfUEFSQU0ocmVuZGVyU3R5bGUpOwpAQCAtMTk2LDYgKzIw
MSwxMiBAQCBHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3JhCiAgICAgICAg
IHJldHVybjsKIAogICAgIENHTEVycm9yIGVyciA9IENHTENyZWF0ZUNvbnRleHQocGl4ZWxGb3Jt
YXRPYmosIDAsICZtX2NvbnRleHRPYmopOworICAgIEdMaW50IGFib3J0T25CbGFja2xpc3QgPSAw
OworI2lmIFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDEwMDAKKyAgICBDR0xTZXRQYXJhbWV0ZXIobV9jb250ZXh0T2JqLCBrQ0dMQ1BBYm9ydE9u
R1BVUmVzdGFydFN0YXR1c0JsYWNrbGlzdGVkLCAmYWJvcnRPbkJsYWNrbGlzdCk7CisjZWxpZgor
ICAgIENHTFNldFBhcmFtZXRlcihtX2NvbnRleHRPYmosIGtFQUdMQ1BBYm9ydE9uR1BVUmVzdGFy
dFN0YXR1c0JsYWNrbGlzdGVkLCAmYWJvcnRPbkJsYWNrbGlzdCk7CisjZW5kaWYKICAgICBDR0xE
ZXN0cm95UGl4ZWxGb3JtYXQocGl4ZWxGb3JtYXRPYmopOwogICAgIAogICAgIGlmIChlcnIgIT0g
a0NHTE5vRXJyb3IgfHwgIW1fY29udGV4dE9iaikgewpAQCAtMzUzLDYgKzM2NCwzMyBAQCBib29s
IEdyYXBoaWNzQ29udGV4dDNEOjptYWtlQ29udGV4dEN1cnJlCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNoZWNrR1BVU3RhdHVzKCkKK3sKKyNpZiAoKFBM
QVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEwMDAp
IHx8IFBMQVRGT1JNKElPUykpCisgICAgZHJhd0NvdW50ZXIgPSAoZHJhd0NvdW50ZXIgKyAxKSAl
IGNoZWNrR1BVU3RhdHVzRHJhd0l0ZXJhdGlvbnM7CisgICAgaWYgKGRyYXdDb3VudGVyKQorICAg
ICAgICByZXR1cm47CisjaWYgUExBVEZPUk0oTUFDKQorICAgIEdMaW50IHJlc3RhcnRTdGF0dXMg
PSAwOworICAgIENHTEdldFBhcmFtZXRlcihwbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEKCksIGtD
R0xDUEdQVVJlc3RhcnRTdGF0dXMsICZyZXN0YXJ0U3RhdHVzKTsKKyAgICBpZiAocmVzdGFydFN0
YXR1cyA9PSBrQ0dMQ1BHUFVSZXN0YXJ0U3RhdHVzQ2F1c2VkIHx8IHJlc3RhcnRTdGF0dXMgPT0g
a0NHTENQR1BVUmVzdGFydFN0YXR1c0JsYWNrbGlzdGVkKSB7CisgICAgICAgIENHTFNldEN1cnJl
bnRDb250ZXh0KDApOworICAgICAgICBDR0xEZXN0cm95Q29udGV4dChwbGF0Zm9ybUdyYXBoaWNz
Q29udGV4dDNEKCkpOworICAgICAgICBmb3JjZUNvbnRleHRMb3N0KCk7CisgICAgfQorI2VsaWYg
UExBVEZPUk0oSU9TKQorICAgIEdMaW50IHJlc3RhcnRTdGF0dXMgPSAwOworICAgIEVBR0xDb250
ZXh0KiBjdXJyZW50Q29udGV4dCA9IHN0YXRpY19jYXN0PEVBR0xDb250ZXh0Kj4oUGxhdGZvcm1H
cmFwaGljc0NvbnRleHQzRCgpKTsKKyAgICBbY3VycmVudENvbnRleHQgZ2V0UGFyYW1ldGVyOmtF
QUdMQ1BHUFVSZXN0YXJ0U3RhdHVzIHRvOiZyZXN0YXJ0U3RhdHVzXTsKKyAgICBpZiAocmVzdGFy
dFN0YXR1cyA9PSBrRUFHTENQR1BVUmVzdGFydFN0YXR1c0NhdXNlZCB8fCByZXN0YXJ0U3RhdHVz
ID09IGtFQUdMQ1BHUFVSZXN0YXJ0U3RhdHVzQmxhY2tsaXN0ZWQpIHsKKyAgICAgICAgW0VBR0xD
b250ZXh0IHNldEN1cnJlbnRDb250ZXh0OjBdOworICAgICAgICBbc3RhdGljX2Nhc3Q8RUFHTENv
bnRleHQqPihjdXJyZW50Q29udGV4dCkgcmVsZWFzZV07CisgICAgICAgIGZvcmNlQ29udGV4dExv
c3QoKTsKKyAgICB9CisjZW5kaWYKKyNlbmRpZgorfQorCiAjaWYgUExBVEZPUk0oSU9TKQogdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6ZW5kUGFpbnQoKQogewpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkdMTGF5ZXIubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkdMTGF5ZXIubW0JKHJldmlzaW9uIDE4
MDQ3NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJHTExheWVy
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw5IEBACiAjaWYgIVBMQVRGT1JNKElPUykK
ICNpbXBvcnQgPE9wZW5HTC9PcGVuR0wuaD4KICNpbXBvcnQgPE9wZW5HTC9nbC5oPgorI2Vsc2UK
KyNpbXBvcnQgPE9wZW5HTEVTL0VBR0wuaD4KKyNpbXBvcnQgPE9wZW5HTEVTL0VBR0xQcml2YXRl
Lmg+CiAjZW5kaWYKICNpbXBvcnQgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW1wb3J0IDx3dGYvUmV0
YWluUHRyLmg+CkBAIC04Myw3ICs4Niw3IEBAIC0odm9pZClkcmF3SW5DR0xDb250ZXh0OihDR0xD
b250ZXh0T2JqKWcKICAgICBfY29udGV4dC0+cHJlcGFyZVRleHR1cmUoKTsKIAogICAgIENHTFNl
dEN1cnJlbnRDb250ZXh0KGdsQ29udGV4dCk7Ci0KKyAgICAKICAgICBDR1JlY3QgZnJhbWUgPSBb
c2VsZiBmcmFtZV07CiAgICAgZnJhbWUuc2l6ZS53aWR0aCAqPSBfZGV2aWNlUGl4ZWxSYXRpbzsK
ICAgICBmcmFtZS5zaXplLmhlaWdodCAqPSBfZGV2aWNlUGl4ZWxSYXRpbzsKQEAgLTE2OSw4ICsx
NzIsMjUgQEAgLSAodm9pZClkaXNwbGF5CiAKICNpZiBQTEFURk9STShJT1MpCiAgICAgX2NvbnRl
eHQtPmVuZFBhaW50KCk7CisgICAgR0xpbnQgcmVzdGFydFN0YXR1cyA9IDA7CisgICAgRUFHTENv
bnRleHQqIGN1cnJlbnRDb250ZXh0ID0gX2NvbnRleHQtPnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0
M0QoKTsKKyAgICBbY3VycmVudENvbnRleHQgZ2V0UGFyYW1ldGVyOmtFQUdMQ1BHUFVSZXN0YXJ0
U3RhdHVzIHRvOiZyZXN0YXJ0U3RhdHVzXTsKKyAgICBpZiAocmVzdGFydFN0YXR1cyA9PSBrRUFH
TENQR1BVUmVzdGFydFN0YXR1c0NhdXNlZCB8fCByZXN0YXJ0U3RhdHVzID09IGtFQUdMQ1BHUFVS
ZXN0YXJ0U3RhdHVzQmxhY2tsaXN0ZWQpIHsKKyAgICAgICAgW0VBR0xDb250ZXh0IHNldEN1cnJl
bnRDb250ZXh0OjBdOworICAgICAgICBbc3RhdGljX2Nhc3Q8RUFHTENvbnRleHQqPihjdXJyZW50
Q29udGV4dCkgcmVsZWFzZV07CisgICAgICAgIF9jb250ZXh0LT5mb3JjZUNvbnRleHRMb3N0KCk7
CisgICAgfQogI2Vsc2UKICAgICBbc3VwZXIgZGlzcGxheV07CisjaWYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMDEwMDAKKyAgICBHTGludCByZXN0YXJ0U3RhdHVzID0gMDsK
KyAgICBDR0xHZXRQYXJhbWV0ZXIoX2NvbnRleHQtPnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0Qo
KSwga0NHTENQR1BVUmVzdGFydFN0YXR1cywgJnJlc3RhcnRTdGF0dXMpOworICAgIGlmIChyZXN0
YXJ0U3RhdHVzID09IGtDR0xDUEdQVVJlc3RhcnRTdGF0dXNDYXVzZWQgfHwgcmVzdGFydFN0YXR1
cyA9PSBrQ0dMQ1BHUFVSZXN0YXJ0U3RhdHVzQmxhY2tsaXN0ZWQpIHsKKyAgICAgICAgQ0dMU2V0
Q3VycmVudENvbnRleHQoMCk7CisgICAgICAgIENHTERlc3Ryb3lDb250ZXh0KF9jb250ZXh0LT5w
bGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEKCkpOworICAgICAgICBfY29udGV4dC0+Zm9yY2VDb250
ZXh0TG9zdCgpOworICAgIH0KKyNlbmRpZgogI2VuZGlmCiAgICAgX2NvbnRleHQtPm1hcmtMYXll
ckNvbXBvc2l0ZWQoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNE
T3BlbkdMQ29tbW9uLmNwcAkocmV2aXNpb24gMTgwNDc2KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgIkludFNpemUuaCIKICNp
bmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiVGVtcG9yYXJ5T3BlbkdMU2V0dGluZy5oIgor
I2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCIKICNpbmNsdWRlIDxjc3RyaW5n
PgogI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDxydW50aW1lL0Fy
cmF5QnVmZmVyVmlldy5oPgpAQCAtNzUsNiArNzYsNyBAQAogI2VuZGlmCiAjZW5kaWYKIAorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBTaGFkZXJOYW1lSGFzaCogY3VycmVudE5hbWVI
YXNoTWFwRm9yU2hhZGVyID0gbnVsbHB0cjsKQEAgLTY4MywxMiArNjg1LDE0IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OmRyYXdBcnJheXMoR0MzRGUKIHsKICAgICBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKICAgICA6OmdsRHJhd0FycmF5cyhtb2RlLCBmaXJzdCwgY291bnQpOworICAgIGNoZWNr
R1BVU3RhdHVzKCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRyYXdFbGVtZW50cyhH
QzNEZW51bSBtb2RlLCBHQzNEc2l6ZWkgY291bnQsIEdDM0RlbnVtIHR5cGUsIEdDM0RpbnRwdHIg
b2Zmc2V0KQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIDo6Z2xEcmF3RWxlbWVu
dHMobW9kZSwgY291bnQsIHR5cGUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lkKj4oc3RhdGljX2Nh
c3Q8aW50cHRyX3Q+KG9mZnNldCkpKTsKKyAgICBjaGVja0dQVVN0YXR1cygpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjplbmFibGUoR0MzRGVudW0gY2FwKQpAQCAtMTc2Myw2ICsxNzY3
LDEyIEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmxheWVyQ29tcG9zaXRlZCgKICAgICByZXR1
cm4gbV9sYXllckNvbXBvc2l0ZWQ7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmZvcmNl
Q29udGV4dExvc3QoKQoreworICAgIGlmIChtX3dlYmdsQ29udGV4dCkKKyAgICAgICAgbV93ZWJn
bENvbnRleHQtPmZvcmNlTG9zdENvbnRleHQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6UmVh
bExvc3RDb250ZXh0KTsKK30KKwogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dGV4SW1hZ2UyRERp
cmVjdChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFsZm9y
bWF0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyLCBH
QzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscykKIHsKICAg
ICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHQzRFdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dDNEV2luLmNwcAko
cmV2aXNpb24gMTgwNDc2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0dyYXBoaWNzQ29udGV4dDNEV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc4LDYgKzE3OCwx
MCBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjptYWtlQ29udGV4dEN1cnJlCiAgICAgcmV0dXJu
IG1fcHJpdmF0ZS0+bWFrZUNvbnRleHRDdXJyZW50KCk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OmNoZWNrR1BVU3RhdHVzKCkKK3sKK30KKwogUGxhdGZvcm1HcmFwaGljc0NvbnRleHQz
RCBHcmFwaGljc0NvbnRleHQzRDo6cGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCgpCiB7CiAgICAg
cmV0dXJuIG1fcHJpdmF0ZS0+cGxhdGZvcm1Db250ZXh0KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247256</attachid>
            <date>2015-02-24 12:53:31 -0800</date>
            <delta_ts>2015-02-24 13:11:29 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>17045</size>
            <attacher name="Roger Fong">roger_fong</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MDU4MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE1LTAyLTE5ICBSb2dlciBG
b25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0w6IERlc3Ryb3kgdGhl
IEdMQ29udGV4dCBpZiBhIEdQVSByZXN0YXJ0IGhhcyBiZWVuIGRldGVjdGVkLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxNTY3LgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMTg1MDc0OTY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OldlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dDNELmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6c2V0
V2ViR0xDb250ZXh0KTogCisgICAgICAgIEtlZXAgdHJhY2sgb2Ygd2hpY2ggV2ViR0xSZW5kZXJp
bmdDb250ZXh0IGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VycmVudCBHcmFwaGljc0NvbnRleHQz
RC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y2hlY2tHUFVTdGF0dXMp
OiBIZWxwZXIgbWV0aG9kIHRvIGNoZWNrIEdQVSBzdGF0dXMuCisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QpOiAKKyAgICAgICAgRG9u4oCZdCBp
bW1lZGlhdGVseSBhYm9ydCB0aGUgR1BVIHByb2Nlc3Mgd2hlbiB0aGUgcmVzdGFydCBzdGF0dXMg
aXMga0NHTENQR1BVUmVzdGFydFN0YXR1c0JsYWNrbGlzdGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL21hYy9XZWJHTExheWVyLm1tOgorICAgICAgICAoLVtXZWJHTExheWVyIGRpc3Bs
YXldKTogCisgICAgICAgIERlc3Ryb3kgdGhlIGNvbnRleHQgYW5kIGZvcmNlIGEgY29udGV4dCBs
b3N0IGV2ZW50IGlmIGEgR1BVIHJlc3RhcnQgaGFzIGJlZW4gZGV0ZWN0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpmb3JjZUNvbnRleHRMb3N0
KTogCisgICAgICAgIEZvcmNlIHRoZSBXZWJHTFJlbmRlcmluZ0NvbnRleHQgdG8gYmUgbG9zdC4K
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpkcmF3QXJyYXlzKTogQ2hlY2sg
R1BVIHN0YXR1cyBhZnRlciBjYWxsaW5nIGRyYXdBcnJheXMuCisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6ZHJhd0VsZW1lbnRzKTogQ2hlY2sgR1BVIHN0YXR1cyBhZnRlciBj
YWxsaW5nIGRyYXdFbGVtZW50cy4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6IEFkZCBTUEkgaGVhZGVyIGZvciBpT1MuCisgICAgICAgICogcGxhdGZvcm0vc3Bp
L2lvcy9PcGVuR0xFU1NQSS5oOiBBZGRlZC4KKwogMjAxNS0wMi0yNCAgWmFsYW4gQnVqdGFzICA8
emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFN3aXRjaCBCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRy
eSdzIG1fcGhhc2UgZnJvbSBMYXlvdXRQb2ludCB0byBMYXlvdXRTaXplLgpJbmRleDogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMTgwNDc2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC05NDkyLDYgKzk0OTIsNyBAQAogCQk2Rjk5NUEyRTFB
NzA4MzM3MDBBNzM1RjQgLyogSlNXZWJHTFRyYW5zZm9ybUZlZWRiYWNrLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk2Rjk5NUEyRjFBNzA4MzM3MDBBNzM1RjQgLyogSlNXZWJH
TFZlcnRleEFycmF5T2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTZGOTk1QTMwMUE3MDgzMzcwMEE3MzVGNCAvKiBKU1dlYkdMVmVydGV4QXJyYXlPYmpl
Y3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWJHTFZlcnRleEFycmF5
T2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZGQUQ0QTU2MUE5RDBGQUUw
MDlGN0QzQyAvKiBPcGVuR0xFU1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBPcGVuR0xFU1NQSS5oOyBw
YXRoID0gaW9zL09wZW5HTEVTU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcx
MTc0NDU2MTRCQzM0RTIwMEVFNUZDOCAvKiBTVkdUZXh0TWV0cmljc0J1aWxkZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzExNzQ0NTcxNEJDMzRFMjAwRUU1RkM4
IC8qIFNWR1RleHRNZXRyaWNzQnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTVkdUZXh0TWV0cmljc0J1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNzExOEZFRDIxNTY4NUNDNjAwMzBCNzlBIC8qIEpTU1ZHVmlld1NwZWMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTVkdWaWV3U3BlYy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODU1OCw2ICsxODU1OSw3IEBACiAJCQkJQ0UxMjUyNDgx
QTE2QzNCQzAwODY0NDgwIC8qIE1vYmlsZUdlc3RhbHRTUEkuaCAqLywKIAkJCQlDRTEyNTI0MDFB
MTZCMUI2MDA4NjQ0ODAgLyogTWVkaWFQbGF5ZXJTUEkuaCAqLywKIAkJCQlDRTEyNTIzODFBMTY2
RkEwMDA4NjQ0ODAgLyogUXVpY2tMb29rU1BJLmggKi8sCisJCQkJNkZBRDRBNTYxQTlEMEZBRTAw
OUY3RDNDIC8qIE9wZW5HTEVTU1BJLmggKi8sCiAJCQkpOwogCQkJbmFtZSA9IGlvczsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAkocmV2aXNpb24gMTgw
NDc2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2Myw2ICs0NjMsOCBAQCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpXZWJHTFJlbmRlcmluCiAgICAgQVNTRVJUKG1fY29udGV4dCk7CiAgICAg
bV9jb250ZXh0R3JvdXAgPSBXZWJHTENvbnRleHRHcm91cDo6Y3JlYXRlKCk7CiAgICAgbV9jb250
ZXh0R3JvdXAtPmFkZENvbnRleHQodGhpcyk7CisgICAgCisgICAgbV9jb250ZXh0LT5zZXRXZWJH
TENvbnRleHQodGhpcyk7CiAKICAgICBtX21heFZpZXdwb3J0RGltc1swXSA9IG1fbWF4Vmlld3Bv
cnREaW1zWzFdID0gMDsKICAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4
dDNEOjpNQVhfVklFV1BPUlRfRElNUywgbV9tYXhWaWV3cG9ydERpbXMpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5o
CShyZXZpc2lvbiAxODA0NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQzRC5oCSh3b3JraW5nIGNvcHkpCkBAIC05OCw2ICs5OCw3IEBAIGNsYXNz
IEltYWdlU291cmNlOwogY2xhc3MgSW1hZ2VEYXRhOwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIElu
dFNpemU7CitjbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOwogI2lmIFVTRShDQUlSTykK
IGNsYXNzIFBsYXRmb3JtQ29udGV4dENhaXJvOwogI2VuZGlmCkBAIC03ODAsNiArNzgxLDcgQEAg
cHVibGljOgogI2VuZGlmCiAKICAgICBib29sIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIHZv
aWQgc2V0V2ViR0xDb250ZXh0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGJhc2UpIHsgbV93
ZWJnbENvbnRleHQgPSBiYXNlOyB9CiAKICAgICAvLyBXaXRoIG11bHRpc2FtcGxpbmcgb24sIGJs
aXQgZnJvbSBtdWx0aXNhbXBsZUZCTyB0byByZWd1bGFyIEZCTy4KICAgICB2b2lkIHByZXBhcmVU
ZXh0dXJlKCk7CkBAIC0xMTI4LDYgKzExMzAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYXJrQ29u
dGV4dENoYW5nZWQoKTsKICAgICB2b2lkIG1hcmtMYXllckNvbXBvc2l0ZWQoKTsKICAgICBib29s
IGxheWVyQ29tcG9zaXRlZCgpIGNvbnN0OworICAgIHZvaWQgZm9yY2VDb250ZXh0TG9zdCgpOwog
CiAgICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciosIERy
YXdpbmdCdWZmZXIqKTsKICAgICBQYXNzUmVmUHRyPEltYWdlRGF0YT4gcGFpbnRSZW5kZXJpbmdS
ZXN1bHRzVG9JbWFnZURhdGEoRHJhd2luZ0J1ZmZlciopOwpAQCAtMTI1Niw2ICsxMjU5LDcgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICBHcmFwaGljc0NvbnRleHQzRChBdHRyaWJ1dGVzLCBIb3N0
V2luZG93KiwgUmVuZGVyU3R5bGUgPSBSZW5kZXJPZmZzY3JlZW4pOwogICAgIHN0YXRpYyBpbnQg
bnVtQWN0aXZlQ29udGV4dHM7CisgICAgc3RhdGljIGludCBkcmF3Q291bnRlcjsKIAogICAgIC8v
IEhlbHBlciBmb3IgcGFja0ltYWdlRGF0YS9leHRyYWN0SW1hZ2VEYXRhL2V4dHJhY3RUZXh0dXJl
RGF0YSB3aGljaCBpbXBsZW1lbnQgcGFja2luZyBvZiBwaXhlbAogICAgIC8vIGRhdGEgaW50byB0
aGUgc3BlY2lmaWVkIE9wZW5HTCBkZXN0aW5hdGlvbiBmb3JtYXQgYW5kIHR5cGUuCkBAIC0xMjcw
LDYgKzEyNzQsOSBAQCBwcml2YXRlOgogICAgIC8vIGltcGxlbWVudGF0aW9uLgogICAgIHZvaWQg
dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5z
aW9uKTsKICAgICB2b2lkIHZhbGlkYXRlQXR0cmlidXRlcygpOworICAgIAorICAgIC8vIENhbGwg
dG8gbWFrZSBkdXJpbmcgZHJhdyBjYWxscyB0byBjaGVjayBvbiB0aGUgR1BVJ3Mgc3RhdHVzCisg
ICAgdm9pZCBjaGVja0dQVVN0YXR1cygpOwogCiAgICAgLy8gUmVhZCByZW5kZXJpbmcgcmVzdWx0
cyBpbnRvIGEgcGl4ZWwgYXJyYXkgd2l0aCB0aGUgc2FtZSBmb3JtYXQgYXMgdGhlCiAgICAgLy8g
YmFja2J1ZmZlci4KQEAgLTE0MzgsNiArMTQ0NSw4IEBAIHByaXZhdGU6CiAKICAgICBmcmllbmQg
Y2xhc3MgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmFw
aGljc0NvbnRleHQzRFByaXZhdGU+IG1fcHJpdmF0ZTsKKyAgICAKKyAgICBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlKiBtX3dlYmdsQ29udGV4dDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dDNEQ2Fpcm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwCShyZXZpc2lvbiAxODA0
NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHQzRENhaXJvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgyLDYgKzI4MiwxMCBAQCBib29s
IEdyYXBoaWNzQ29udGV4dDNEOjptYWtlQ29udGV4dEN1cnJlCiAgICAgcmV0dXJuIG1fcHJpdmF0
ZS0+bWFrZUNvbnRleHRDdXJyZW50KCk7CiB9CiAKK2Jvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmNo
ZWNrR1BVU3RhdHVzKCkKK3sKK30KKwogUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBHcmFwaGlj
c0NvbnRleHQzRDo6cGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCgpCiB7CiAgICAgcmV0dXJuIG1f
cHJpdmF0ZS0+cGxhdGZvcm1Db250ZXh0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREVmbC5j
cHAJKHJldmlzaW9uIDE4MDQ3NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2VmbC9HcmFwaGljc0NvbnRleHQzREVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Myw2ICsx
ODMsMTAgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6bWFrZUNvbnRleHRDdXJyZQogICAgIHJl
dHVybiBtX3ByaXZhdGUtPm1ha2VDb250ZXh0Q3VycmVudCgpOwogfQogCit2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpjaGVja0dQVVN0YXR1cygpCit7Cit9CisKIGJvb2wgR3JhcGhpY3NDb250ZXh0
M0Q6OmlzR0xFUzJDb21wbGlhbnQoKSBjb25zdAogewogI2lmIFVTRShPUEVOR0xfRVNfMikKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQz
RE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvR3JhcGhpY3NDb250ZXh0M0RNYWMubW0JKHJldmlzaW9uIDE4MDQ3NikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5tbQkod29y
a2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpZiBQTEFURk9STShJT1MpCisjaW1wb3J0
ICJPcGVuR0xFU1NQSS5oIgogI2ltcG9ydCA8T3BlbkdMRVMvRVMyL2dsZXh0Lmg+CiAjaW1wb3J0
IDxPcGVuR0xFUy9FQUdMLmg+CiAjaW1wb3J0IDxPcGVuR0xFUy9FQUdMRHJhd2FibGUuaD4KQEAg
LTUyLDYgKzUzLDcgQEAKICNlbmRpZgogI2luY2x1ZGUgIldlYkdMTGF5ZXIuaCIKICNpbmNsdWRl
ICJXZWJHTE9iamVjdC5oIgorI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCIK
ICNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8cnVudGltZS9BcnJh
eUJ1ZmZlclZpZXcuaD4KICNpbmNsdWRlIDxydW50aW1lL0ludDMyQXJyYXkuaD4KQEAgLTYzLDcg
KzY1LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBpbnQgbWF4QWN0aXZlQ29udGV4
dHMgPSA2NDsKIGludCBHcmFwaGljc0NvbnRleHQzRDo6bnVtQWN0aXZlQ29udGV4dHMgPSAwOwot
Citjb25zdCBpbnQgY2hlY2tHUFVTdGF0dXNEcmF3SXRlcmF0aW9ucyA9IDU7CitpbnQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmRyYXdDb3VudGVyID0gMDsKKyAgICAKIC8vIEZJWE1FOiBUaGlzIGNsYXNz
IGlzIGN1cnJlbnRseSBlbXB0eSBvbiBNYWMsIGJ1dCB3aWxsIGdldCBwb3B1bGF0ZWQgYXMgCiAv
LyB0aGUgcmVzdHJ1Y3R1cmluZyBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjY5MDMgaXMgZG9uZQogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlIHsKQEAg
LTE0NSw2ICsxNDksNyBAQCBHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3Jh
CiAgICAgLCBtX211bHRpc2FtcGxlRGVwdGhTdGVuY2lsQnVmZmVyKDApCiAgICAgLCBtX211bHRp
c2FtcGxlQ29sb3JCdWZmZXIoMCkKICAgICAsIG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPEdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZT4odGhpcykpCisgICAgLCBtX3dlYmdsQ29udGV4dCgwKQog
ewogICAgIFVOVVNFRF9QQVJBTShob3N0V2luZG93KTsKICAgICBVTlVTRURfUEFSQU0ocmVuZGVy
U3R5bGUpOwpAQCAtMTk2LDYgKzIwMSwxMiBAQCBHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3ND
b250ZXh0M0QoR3JhCiAgICAgICAgIHJldHVybjsKIAogICAgIENHTEVycm9yIGVyciA9IENHTENy
ZWF0ZUNvbnRleHQocGl4ZWxGb3JtYXRPYmosIDAsICZtX2NvbnRleHRPYmopOworICAgIEdMaW50
IGFib3J0T25CbGFja2xpc3QgPSAwOworI2lmIFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEwMDAKKyAgICBDR0xTZXRQYXJhbWV0ZXIobV9jb250
ZXh0T2JqLCBrQ0dMQ1BBYm9ydE9uR1BVUmVzdGFydFN0YXR1c0JsYWNrbGlzdGVkLCAmYWJvcnRP
bkJsYWNrbGlzdCk7CisjZWxpZiBQTEFURk9STShJT1MpCisgICAgQ0dMU2V0UGFyYW1ldGVyKG1f
Y29udGV4dE9iaiwga0VBR0xDUEFib3J0T25HUFVSZXN0YXJ0U3RhdHVzQmxhY2tsaXN0ZWQsICZh
Ym9ydE9uQmxhY2tsaXN0KTsKKyNlbmRpZgogICAgIENHTERlc3Ryb3lQaXhlbEZvcm1hdChwaXhl
bEZvcm1hdE9iaik7CiAgICAgCiAgICAgaWYgKGVyciAhPSBrQ0dMTm9FcnJvciB8fCAhbV9jb250
ZXh0T2JqKSB7CkBAIC0zNTMsNiArMzY0LDMzIEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6Om1h
a2VDb250ZXh0Q3VycmUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6Y2hlY2tHUFVTdGF0dXMoKQoreworI2lmICgoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTAwMCkgfHwgUExBVEZPUk0oSU9TKSkKKyAg
ICBkcmF3Q291bnRlciA9IChkcmF3Q291bnRlciArIDEpICUgY2hlY2tHUFVTdGF0dXNEcmF3SXRl
cmF0aW9uczsKKyAgICBpZiAoZHJhd0NvdW50ZXIpCisgICAgICAgIHJldHVybjsKKyNpZiBQTEFU
Rk9STShNQUMpCisgICAgR0xpbnQgcmVzdGFydFN0YXR1cyA9IDA7CisgICAgQ0dMR2V0UGFyYW1l
dGVyKHBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QoKSwga0NHTENQR1BVUmVzdGFydFN0YXR1cywg
JnJlc3RhcnRTdGF0dXMpOworICAgIGlmIChyZXN0YXJ0U3RhdHVzID09IGtDR0xDUEdQVVJlc3Rh
cnRTdGF0dXNDYXVzZWQgfHwgcmVzdGFydFN0YXR1cyA9PSBrQ0dMQ1BHUFVSZXN0YXJ0U3RhdHVz
QmxhY2tsaXN0ZWQpIHsKKyAgICAgICAgQ0dMU2V0Q3VycmVudENvbnRleHQoMCk7CisgICAgICAg
IENHTERlc3Ryb3lDb250ZXh0KHBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QoKSk7CisgICAgICAg
IGZvcmNlQ29udGV4dExvc3QoKTsKKyAgICB9CisjZWxpZiBQTEFURk9STShJT1MpCisgICAgR0xp
bnQgcmVzdGFydFN0YXR1cyA9IDA7CisgICAgRUFHTENvbnRleHQqIGN1cnJlbnRDb250ZXh0ID0g
c3RhdGljX2Nhc3Q8RUFHTENvbnRleHQqPihQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEKCkpOwor
ICAgIFtjdXJyZW50Q29udGV4dCBnZXRQYXJhbWV0ZXI6a0VBR0xDUEdQVVJlc3RhcnRTdGF0dXMg
dG86JnJlc3RhcnRTdGF0dXNdOworICAgIGlmIChyZXN0YXJ0U3RhdHVzID09IGtFQUdMQ1BHUFVS
ZXN0YXJ0U3RhdHVzQ2F1c2VkIHx8IHJlc3RhcnRTdGF0dXMgPT0ga0VBR0xDUEdQVVJlc3RhcnRT
dGF0dXNCbGFja2xpc3RlZCkgeworICAgICAgICBbRUFHTENvbnRleHQgc2V0Q3VycmVudENvbnRl
eHQ6MF07CisgICAgICAgIFtzdGF0aWNfY2FzdDxFQUdMQ29udGV4dCo+KGN1cnJlbnRDb250ZXh0
KSByZWxlYXNlXTsKKyAgICAgICAgZm9yY2VDb250ZXh0TG9zdCgpOworICAgIH0KKyNlbmRpZgor
I2VuZGlmCit9CisKICNpZiBQTEFURk9STShJT1MpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpl
bmRQYWludCgpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
V2ViR0xMYXllci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvV2ViR0xMYXllci5tbQkocmV2aXNpb24gMTgwNDc2KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkdMTGF5ZXIubW0JKHdvcmtpbmcgY29weSkKQEAg
LTM0LDYgKzM0LDkgQEAKICNpZiAhUExBVEZPUk0oSU9TKQogI2ltcG9ydCA8T3BlbkdML09wZW5H
TC5oPgogI2ltcG9ydCA8T3BlbkdML2dsLmg+CisjZWxzZQorI2ltcG9ydCAiT3BlbkdMRVNTUEku
aCIKKyNpbXBvcnQgPE9wZW5HTEVTL0VBR0wuaD4KICNlbmRpZgogI2ltcG9ydCA8d3RmL0Zhc3RN
YWxsb2MuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTgzLDcgKzg2LDcgQEAgLSh2
b2lkKWRyYXdJbkNHTENvbnRleHQ6KENHTENvbnRleHRPYmopZwogICAgIF9jb250ZXh0LT5wcmVw
YXJlVGV4dHVyZSgpOwogCiAgICAgQ0dMU2V0Q3VycmVudENvbnRleHQoZ2xDb250ZXh0KTsKLQor
ICAgIAogICAgIENHUmVjdCBmcmFtZSA9IFtzZWxmIGZyYW1lXTsKICAgICBmcmFtZS5zaXplLndp
ZHRoICo9IF9kZXZpY2VQaXhlbFJhdGlvOwogICAgIGZyYW1lLnNpemUuaGVpZ2h0ICo9IF9kZXZp
Y2VQaXhlbFJhdGlvOwpAQCAtMTY5LDggKzE3MiwyNSBAQCAtICh2b2lkKWRpc3BsYXkKIAogI2lm
IFBMQVRGT1JNKElPUykKICAgICBfY29udGV4dC0+ZW5kUGFpbnQoKTsKKyAgICBHTGludCByZXN0
YXJ0U3RhdHVzID0gMDsKKyAgICBFQUdMQ29udGV4dCogY3VycmVudENvbnRleHQgPSBfY29udGV4
dC0+cGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCgpOworICAgIFtjdXJyZW50Q29udGV4dCBnZXRQ
YXJhbWV0ZXI6a0VBR0xDUEdQVVJlc3RhcnRTdGF0dXMgdG86JnJlc3RhcnRTdGF0dXNdOworICAg
IGlmIChyZXN0YXJ0U3RhdHVzID09IGtFQUdMQ1BHUFVSZXN0YXJ0U3RhdHVzQ2F1c2VkIHx8IHJl
c3RhcnRTdGF0dXMgPT0ga0VBR0xDUEdQVVJlc3RhcnRTdGF0dXNCbGFja2xpc3RlZCkgeworICAg
ICAgICBbRUFHTENvbnRleHQgc2V0Q3VycmVudENvbnRleHQ6MF07CisgICAgICAgIFtzdGF0aWNf
Y2FzdDxFQUdMQ29udGV4dCo+KGN1cnJlbnRDb250ZXh0KSByZWxlYXNlXTsKKyAgICAgICAgX2Nv
bnRleHQtPmZvcmNlQ29udGV4dExvc3QoKTsKKyAgICB9CiAjZWxzZQogICAgIFtzdXBlciBkaXNw
bGF5XTsKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTAwMAorICAg
IEdMaW50IHJlc3RhcnRTdGF0dXMgPSAwOworICAgIENHTEdldFBhcmFtZXRlcihfY29udGV4dC0+
cGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCgpLCBrQ0dMQ1BHUFVSZXN0YXJ0U3RhdHVzLCAmcmVz
dGFydFN0YXR1cyk7CisgICAgaWYgKHJlc3RhcnRTdGF0dXMgPT0ga0NHTENQR1BVUmVzdGFydFN0
YXR1c0NhdXNlZCB8fCByZXN0YXJ0U3RhdHVzID09IGtDR0xDUEdQVVJlc3RhcnRTdGF0dXNCbGFj
a2xpc3RlZCkgeworICAgICAgICBDR0xTZXRDdXJyZW50Q29udGV4dCgwKTsKKyAgICAgICAgQ0dM
RGVzdHJveUNvbnRleHQoX2NvbnRleHQtPnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QoKSk7Cisg
ICAgICAgIF9jb250ZXh0LT5mb3JjZUNvbnRleHRMb3N0KCk7CisgICAgfQorI2VuZGlmCiAjZW5k
aWYKICAgICBfY29udGV4dC0+bWFya0xheWVyQ29tcG9zaXRlZCgpOwogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdM
Q29tbW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCShyZXZpc2lvbiAxODA0
NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0M0RPcGVuR0xDb21tb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBA
CiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJU
ZW1wb3JhcnlPcGVuR0xTZXR0aW5nLmgiCisjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5oIgogI2luY2x1ZGUgPGNzdHJpbmc+CiAjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZl
ci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3Lmg+CkBAIC03NSw2ICs3Niw3
IEBACiAjZW5kaWYKICNlbmRpZgogCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIFNo
YWRlck5hbWVIYXNoKiBjdXJyZW50TmFtZUhhc2hNYXBGb3JTaGFkZXIgPSBudWxscHRyOwpAQCAt
NjgzLDEyICs2ODUsMTQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZHJhd0FycmF5cyhHQzNE
ZQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIDo6Z2xEcmF3QXJyYXlzKG1vZGUs
IGZpcnN0LCBjb3VudCk7CisgICAgY2hlY2tHUFVTdGF0dXMoKTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6ZHJhd0VsZW1lbnRzKEdDM0RlbnVtIG1vZGUsIEdDM0RzaXplaSBjb3VudCwg
R0MzRGVudW0gdHlwZSwgR0MzRGludHB0ciBvZmZzZXQpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJy
ZW50KCk7CiAgICAgOjpnbERyYXdFbGVtZW50cyhtb2RlLCBjb3VudCwgdHlwZSwgcmVpbnRlcnBy
ZXRfY2FzdDxHTHZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4ob2Zmc2V0KSkpOworICAgIGNo
ZWNrR1BVU3RhdHVzKCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmVuYWJsZShHQzNE
ZW51bSBjYXApCkBAIC0xNzYzLDYgKzE3NjcsMTIgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6
bGF5ZXJDb21wb3NpdGVkKAogICAgIHJldHVybiBtX2xheWVyQ29tcG9zaXRlZDsKIH0KIAordm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6Zm9yY2VDb250ZXh0TG9zdCgpCit7CisgICAgaWYgKG1fd2Vi
Z2xDb250ZXh0KQorICAgICAgICBtX3dlYmdsQ29udGV4dC0+Zm9yY2VMb3N0Q29udGV4dChXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpSZWFsTG9zdENvbnRleHQpOworfQorCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjp0ZXhJbWFnZTJERGlyZWN0KEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBs
ZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVp
IGhlaWdodCwgR0MzRGludCBib3JkZXIsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwg
Y29uc3Qgdm9pZCogcGl4ZWxzKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dDNEV2lu
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
R3JhcGhpY3NDb250ZXh0M0RXaW4uY3BwCShyZXZpc2lvbiAxODA0NzYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0M0RXaW4uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzgsNiArMTc4LDEwIEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6Om1h
a2VDb250ZXh0Q3VycmUKICAgICByZXR1cm4gbV9wcml2YXRlLT5tYWtlQ29udGV4dEN1cnJlbnQo
KTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y2hlY2tHUFVTdGF0dXMoKQoreworfQor
CiBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIEdyYXBoaWNzQ29udGV4dDNEOjpwbGF0Zm9ybUdy
YXBoaWNzQ29udGV4dDNEKCkKIHsKICAgICByZXR1cm4gbV9wcml2YXRlLT5wbGF0Zm9ybUNvbnRl
eHQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9pb3MvT3BlbkdMRVNTUEku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvaW9zL09wZW5HTEVT
U1BJLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvaW9zL09w
ZW5HTEVTU1BJLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8VUlLaXQvVUlLaXQu
aD4KKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisKKyNpbXBvcnQgPE9wZW5HTEVTL0VB
R0xQcml2YXRlLmg+CisKKyNlbHNlCisKK2VudW0geworICAgIGtFQUdMQ1BHUFVSZXN0YXJ0U3Rh
dHVzTm9uZSAgICAgICAgPSAwLCAvKiBjb250ZXh0IGhhcyBub3QgY2F1c2VkIHJlY2VudCBHUFUg
cmVzdGFydCAqLworICAgIGtFQUdMQ1BHUFVSZXN0YXJ0U3RhdHVzQ2F1c2VkICAgICAgPSAxLCAv
KiBjb250ZXh0IGNhdXNlZCByZWNlbnQgR1BVIHJlc3RhcnQgKGNsZWFyIG9uIHF1ZXJ5KSAqLwor
ICAgIGtFQUdMQ1BHUFVSZXN0YXJ0U3RhdHVzQmxhY2tsaXN0ZWQgPSAyLCAvKiBjb250ZXh0IGlz
IGJlaW5nIGlnbm9yZWQgZm9yIGV4Y2Vzc2l2ZSBHUFUgcmVzdGFydHMgKi8KK307CisKKyNlbmRp
Zgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247258</attachid>
            <date>2015-02-24 13:11:29 -0800</date>
            <delta_ts>2015-02-24 13:17:33 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>17810</size>
            <attacher name="Roger Fong">roger_fong</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MDU4MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE1LTAyLTE5ICBSb2dlciBG
b25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0w6IERlc3Ryb3kgdGhl
IEdMQ29udGV4dCBpZiBhIEdQVSByZXN0YXJ0IGhhcyBiZWVuIGRldGVjdGVkLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxNTY3LgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMTg1MDc0OTY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OldlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dDNELmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6c2V0
V2ViR0xDb250ZXh0KTogCisgICAgICAgIEtlZXAgdHJhY2sgb2Ygd2hpY2ggV2ViR0xSZW5kZXJp
bmdDb250ZXh0IGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VycmVudCBHcmFwaGljc0NvbnRleHQz
RC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y2hlY2tHUFVTdGF0dXMp
OiBIZWxwZXIgbWV0aG9kIHRvIGNoZWNrIEdQVSBzdGF0dXMuCisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QpOiAKKyAgICAgICAgRG9u4oCZdCBp
bW1lZGlhdGVseSBhYm9ydCB0aGUgR1BVIHByb2Nlc3Mgd2hlbiB0aGUgcmVzdGFydCBzdGF0dXMg
aXMga0NHTENQR1BVUmVzdGFydFN0YXR1c0JsYWNrbGlzdGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL21hYy9XZWJHTExheWVyLm1tOgorICAgICAgICAoLVtXZWJHTExheWVyIGRpc3Bs
YXldKTogCisgICAgICAgIERlc3Ryb3kgdGhlIGNvbnRleHQgYW5kIGZvcmNlIGEgY29udGV4dCBs
b3N0IGV2ZW50IGlmIGEgR1BVIHJlc3RhcnQgaGFzIGJlZW4gZGV0ZWN0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpmb3JjZUNvbnRleHRMb3N0
KTogCisgICAgICAgIEZvcmNlIHRoZSBXZWJHTFJlbmRlcmluZ0NvbnRleHQgdG8gYmUgbG9zdC4K
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpkcmF3QXJyYXlzKTogQ2hlY2sg
R1BVIHN0YXR1cyBhZnRlciBjYWxsaW5nIGRyYXdBcnJheXMuCisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6ZHJhd0VsZW1lbnRzKTogQ2hlY2sgR1BVIHN0YXR1cyBhZnRlciBj
YWxsaW5nIGRyYXdFbGVtZW50cy4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6IEFkZCBTUEkgaGVhZGVyIGZvciBpT1MuCisgICAgICAgICogcGxhdGZvcm0vc3Bp
L2lvcy9PcGVuR0xFU1NQSS5oOiBBZGRlZC4KKwogMjAxNS0wMi0yNCAgWmFsYW4gQnVqdGFzICA8
emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFN3aXRjaCBCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRy
eSdzIG1fcGhhc2UgZnJvbSBMYXlvdXRQb2ludCB0byBMYXlvdXRTaXplLgpJbmRleDogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMTgwNDc2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC05NDkyLDYgKzk0OTIsNyBAQAogCQk2Rjk5NUEyRTFB
NzA4MzM3MDBBNzM1RjQgLyogSlNXZWJHTFRyYW5zZm9ybUZlZWRiYWNrLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk2Rjk5NUEyRjFBNzA4MzM3MDBBNzM1RjQgLyogSlNXZWJH
TFZlcnRleEFycmF5T2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTZGOTk1QTMwMUE3MDgzMzcwMEE3MzVGNCAvKiBKU1dlYkdMVmVydGV4QXJyYXlPYmpl
Y3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWJHTFZlcnRleEFycmF5
T2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZGQUQ0QTU2MUE5RDBGQUUw
MDlGN0QzQyAvKiBPcGVuR0xFU1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBPcGVuR0xFU1NQSS5oOyBw
YXRoID0gaW9zL09wZW5HTEVTU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcx
MTc0NDU2MTRCQzM0RTIwMEVFNUZDOCAvKiBTVkdUZXh0TWV0cmljc0J1aWxkZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzExNzQ0NTcxNEJDMzRFMjAwRUU1RkM4
IC8qIFNWR1RleHRNZXRyaWNzQnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTVkdUZXh0TWV0cmljc0J1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNzExOEZFRDIxNTY4NUNDNjAwMzBCNzlBIC8qIEpTU1ZHVmlld1NwZWMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTVkdWaWV3U3BlYy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODU1OCw2ICsxODU1OSw3IEBACiAJCQkJQ0UxMjUyNDgx
QTE2QzNCQzAwODY0NDgwIC8qIE1vYmlsZUdlc3RhbHRTUEkuaCAqLywKIAkJCQlDRTEyNTI0MDFB
MTZCMUI2MDA4NjQ0ODAgLyogTWVkaWFQbGF5ZXJTUEkuaCAqLywKIAkJCQlDRTEyNTIzODFBMTY2
RkEwMDA4NjQ0ODAgLyogUXVpY2tMb29rU1BJLmggKi8sCisJCQkJNkZBRDRBNTYxQTlEMEZBRTAw
OUY3RDNDIC8qIE9wZW5HTEVTU1BJLmggKi8sCiAJCQkpOwogCQkJbmFtZSA9IGlvczsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAkocmV2aXNpb24gMTgw
NDc2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2Myw2ICs0NjMsOCBAQCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpXZWJHTFJlbmRlcmluCiAgICAgQVNTRVJUKG1fY29udGV4dCk7CiAgICAg
bV9jb250ZXh0R3JvdXAgPSBXZWJHTENvbnRleHRHcm91cDo6Y3JlYXRlKCk7CiAgICAgbV9jb250
ZXh0R3JvdXAtPmFkZENvbnRleHQodGhpcyk7CisgICAgCisgICAgbV9jb250ZXh0LT5zZXRXZWJH
TENvbnRleHQodGhpcyk7CiAKICAgICBtX21heFZpZXdwb3J0RGltc1swXSA9IG1fbWF4Vmlld3Bv
cnREaW1zWzFdID0gMDsKICAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4
dDNEOjpNQVhfVklFV1BPUlRfRElNUywgbV9tYXhWaWV3cG9ydERpbXMpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5o
CShyZXZpc2lvbiAxODA0NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQzRC5oCSh3b3JraW5nIGNvcHkpCkBAIC05OCw2ICs5OCw3IEBAIGNsYXNz
IEltYWdlU291cmNlOwogY2xhc3MgSW1hZ2VEYXRhOwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIElu
dFNpemU7CitjbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOwogI2lmIFVTRShDQUlSTykK
IGNsYXNzIFBsYXRmb3JtQ29udGV4dENhaXJvOwogI2VuZGlmCkBAIC03ODAsNiArNzgxLDcgQEAg
cHVibGljOgogI2VuZGlmCiAKICAgICBib29sIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIHZv
aWQgc2V0V2ViR0xDb250ZXh0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGJhc2UpIHsgbV93
ZWJnbENvbnRleHQgPSBiYXNlOyB9CiAKICAgICAvLyBXaXRoIG11bHRpc2FtcGxpbmcgb24sIGJs
aXQgZnJvbSBtdWx0aXNhbXBsZUZCTyB0byByZWd1bGFyIEZCTy4KICAgICB2b2lkIHByZXBhcmVU
ZXh0dXJlKCk7CkBAIC0xMTI4LDYgKzExMzAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYXJrQ29u
dGV4dENoYW5nZWQoKTsKICAgICB2b2lkIG1hcmtMYXllckNvbXBvc2l0ZWQoKTsKICAgICBib29s
IGxheWVyQ29tcG9zaXRlZCgpIGNvbnN0OworICAgIHZvaWQgZm9yY2VDb250ZXh0TG9zdCgpOwog
CiAgICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciosIERy
YXdpbmdCdWZmZXIqKTsKICAgICBQYXNzUmVmUHRyPEltYWdlRGF0YT4gcGFpbnRSZW5kZXJpbmdS
ZXN1bHRzVG9JbWFnZURhdGEoRHJhd2luZ0J1ZmZlciopOwpAQCAtMTI1Niw2ICsxMjU5LDcgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICBHcmFwaGljc0NvbnRleHQzRChBdHRyaWJ1dGVzLCBIb3N0
V2luZG93KiwgUmVuZGVyU3R5bGUgPSBSZW5kZXJPZmZzY3JlZW4pOwogICAgIHN0YXRpYyBpbnQg
bnVtQWN0aXZlQ29udGV4dHM7CisgICAgc3RhdGljIGludCBkcmF3Q291bnRlcjsKIAogICAgIC8v
IEhlbHBlciBmb3IgcGFja0ltYWdlRGF0YS9leHRyYWN0SW1hZ2VEYXRhL2V4dHJhY3RUZXh0dXJl
RGF0YSB3aGljaCBpbXBsZW1lbnQgcGFja2luZyBvZiBwaXhlbAogICAgIC8vIGRhdGEgaW50byB0
aGUgc3BlY2lmaWVkIE9wZW5HTCBkZXN0aW5hdGlvbiBmb3JtYXQgYW5kIHR5cGUuCkBAIC0xMjcw
LDYgKzEyNzQsOSBAQCBwcml2YXRlOgogICAgIC8vIGltcGxlbWVudGF0aW9uLgogICAgIHZvaWQg
dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5z
aW9uKTsKICAgICB2b2lkIHZhbGlkYXRlQXR0cmlidXRlcygpOworICAgIAorICAgIC8vIENhbGwg
dG8gbWFrZSBkdXJpbmcgZHJhdyBjYWxscyB0byBjaGVjayBvbiB0aGUgR1BVJ3Mgc3RhdHVzCisg
ICAgdm9pZCBjaGVja0dQVVN0YXR1cygpOwogCiAgICAgLy8gUmVhZCByZW5kZXJpbmcgcmVzdWx0
cyBpbnRvIGEgcGl4ZWwgYXJyYXkgd2l0aCB0aGUgc2FtZSBmb3JtYXQgYXMgdGhlCiAgICAgLy8g
YmFja2J1ZmZlci4KQEAgLTE0MzgsNiArMTQ0NSw4IEBAIHByaXZhdGU6CiAKICAgICBmcmllbmQg
Y2xhc3MgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmFw
aGljc0NvbnRleHQzRFByaXZhdGU+IG1fcHJpdmF0ZTsKKyAgICAKKyAgICBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlKiBtX3dlYmdsQ29udGV4dDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dDNEQ2Fpcm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwCShyZXZpc2lvbiAxODA0
NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHQzRENhaXJvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgyLDYgKzI4MiwxMCBAQCBib29s
IEdyYXBoaWNzQ29udGV4dDNEOjptYWtlQ29udGV4dEN1cnJlCiAgICAgcmV0dXJuIG1fcHJpdmF0
ZS0+bWFrZUNvbnRleHRDdXJyZW50KCk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNo
ZWNrR1BVU3RhdHVzKCkKK3sKK30KKwogUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBHcmFwaGlj
c0NvbnRleHQzRDo6cGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCgpCiB7CiAgICAgcmV0dXJuIG1f
cHJpdmF0ZS0+cGxhdGZvcm1Db250ZXh0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREVmbC5j
cHAJKHJldmlzaW9uIDE4MDQ3NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2VmbC9HcmFwaGljc0NvbnRleHQzREVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Myw2ICsx
ODMsMTAgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6bWFrZUNvbnRleHRDdXJyZQogICAgIHJl
dHVybiBtX3ByaXZhdGUtPm1ha2VDb250ZXh0Q3VycmVudCgpOwogfQogCit2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpjaGVja0dQVVN0YXR1cygpCit7Cit9CisKIGJvb2wgR3JhcGhpY3NDb250ZXh0
M0Q6OmlzR0xFUzJDb21wbGlhbnQoKSBjb25zdAogewogI2lmIFVTRShPUEVOR0xfRVNfMikKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQz
RE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvR3JhcGhpY3NDb250ZXh0M0RNYWMubW0JKHJldmlzaW9uIDE4MDQ3NikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5tbQkod29y
a2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpZiBQTEFURk9STShJT1MpCisjaW1wb3J0
ICJPcGVuR0xFU1NQSS5oIgogI2ltcG9ydCA8T3BlbkdMRVMvRVMyL2dsZXh0Lmg+CiAjaW1wb3J0
IDxPcGVuR0xFUy9FQUdMLmg+CiAjaW1wb3J0IDxPcGVuR0xFUy9FQUdMRHJhd2FibGUuaD4KQEAg
LTUyLDYgKzUzLDcgQEAKICNlbmRpZgogI2luY2x1ZGUgIldlYkdMTGF5ZXIuaCIKICNpbmNsdWRl
ICJXZWJHTE9iamVjdC5oIgorI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCIK
ICNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8cnVudGltZS9BcnJh
eUJ1ZmZlclZpZXcuaD4KICNpbmNsdWRlIDxydW50aW1lL0ludDMyQXJyYXkuaD4KQEAgLTYzLDcg
KzY1LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBpbnQgbWF4QWN0aXZlQ29udGV4
dHMgPSA2NDsKIGludCBHcmFwaGljc0NvbnRleHQzRDo6bnVtQWN0aXZlQ29udGV4dHMgPSAwOwot
Citjb25zdCBpbnQgY2hlY2tHUFVTdGF0dXNEcmF3SXRlcmF0aW9ucyA9IDU7CitpbnQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmRyYXdDb3VudGVyID0gMDsKKyAgICAKIC8vIEZJWE1FOiBUaGlzIGNsYXNz
IGlzIGN1cnJlbnRseSBlbXB0eSBvbiBNYWMsIGJ1dCB3aWxsIGdldCBwb3B1bGF0ZWQgYXMgCiAv
LyB0aGUgcmVzdHJ1Y3R1cmluZyBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjY5MDMgaXMgZG9uZQogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlIHsKQEAg
LTE0NSw2ICsxNDksNyBAQCBHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3Jh
CiAgICAgLCBtX211bHRpc2FtcGxlRGVwdGhTdGVuY2lsQnVmZmVyKDApCiAgICAgLCBtX211bHRp
c2FtcGxlQ29sb3JCdWZmZXIoMCkKICAgICAsIG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPEdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZT4odGhpcykpCisgICAgLCBtX3dlYmdsQ29udGV4dCgwKQog
ewogICAgIFVOVVNFRF9QQVJBTShob3N0V2luZG93KTsKICAgICBVTlVTRURfUEFSQU0ocmVuZGVy
U3R5bGUpOwpAQCAtMTk2LDYgKzIwMSwxNSBAQCBHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3ND
b250ZXh0M0QoR3JhCiAgICAgICAgIHJldHVybjsKIAogICAgIENHTEVycm9yIGVyciA9IENHTENy
ZWF0ZUNvbnRleHQocGl4ZWxGb3JtYXRPYmosIDAsICZtX2NvbnRleHRPYmopOworI2lmICgoUExB
VEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTAwMCkg
fHwgUExBVEZPUk0oSU9TKSkKKyAgICBHTGludCBhYm9ydE9uQmxhY2tsaXN0ID0gMDsKKyNpZiBQ
TEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMDAw
CisgICAgQ0dMU2V0UGFyYW1ldGVyKG1fY29udGV4dE9iaiwga0NHTENQQWJvcnRPbkdQVVJlc3Rh
cnRTdGF0dXNCbGFja2xpc3RlZCwgJmFib3J0T25CbGFja2xpc3QpOworI2VsaWYgUExBVEZPUk0o
SU9TKQorICAgIENHTFNldFBhcmFtZXRlcihtX2NvbnRleHRPYmosIGtFQUdMQ1BBYm9ydE9uR1BV
UmVzdGFydFN0YXR1c0JsYWNrbGlzdGVkLCAmYWJvcnRPbkJsYWNrbGlzdCk7CisjZW5kaWYKKyNl
bmRpZgorCiAgICAgQ0dMRGVzdHJveVBpeGVsRm9ybWF0KHBpeGVsRm9ybWF0T2JqKTsKICAgICAK
ICAgICBpZiAoZXJyICE9IGtDR0xOb0Vycm9yIHx8ICFtX2NvbnRleHRPYmopIHsKQEAgLTM1Myw2
ICszNjcsMzMgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6bWFrZUNvbnRleHRDdXJyZQogICAg
IHJldHVybiB0cnVlOwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjaGVja0dQVVN0YXR1
cygpCit7CisjaWYgKChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTAxMDAwKSB8fCBQTEFURk9STShJT1MpKQorICAgIGRyYXdDb3VudGVyID0gKGRy
YXdDb3VudGVyICsgMSkgJSBjaGVja0dQVVN0YXR1c0RyYXdJdGVyYXRpb25zOworICAgIGlmIChk
cmF3Q291bnRlcikKKyAgICAgICAgcmV0dXJuOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBHTGlu
dCByZXN0YXJ0U3RhdHVzID0gMDsKKyAgICBDR0xHZXRQYXJhbWV0ZXIocGxhdGZvcm1HcmFwaGlj
c0NvbnRleHQzRCgpLCBrQ0dMQ1BHUFVSZXN0YXJ0U3RhdHVzLCAmcmVzdGFydFN0YXR1cyk7Cisg
ICAgaWYgKHJlc3RhcnRTdGF0dXMgPT0ga0NHTENQR1BVUmVzdGFydFN0YXR1c0NhdXNlZCB8fCBy
ZXN0YXJ0U3RhdHVzID09IGtDR0xDUEdQVVJlc3RhcnRTdGF0dXNCbGFja2xpc3RlZCkgeworICAg
ICAgICBDR0xTZXRDdXJyZW50Q29udGV4dCgwKTsKKyAgICAgICAgQ0dMRGVzdHJveUNvbnRleHQo
cGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCgpKTsKKyAgICAgICAgZm9yY2VDb250ZXh0TG9zdCgp
OworICAgIH0KKyNlbGlmIFBMQVRGT1JNKElPUykKKyAgICBHTGludCByZXN0YXJ0U3RhdHVzID0g
MDsKKyAgICBFQUdMQ29udGV4dCogY3VycmVudENvbnRleHQgPSBzdGF0aWNfY2FzdDxFQUdMQ29u
dGV4dCo+KFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QoKSk7CisgICAgW2N1cnJlbnRDb250ZXh0
IGdldFBhcmFtZXRlcjprRUFHTENQR1BVUmVzdGFydFN0YXR1cyB0bzomcmVzdGFydFN0YXR1c107
CisgICAgaWYgKHJlc3RhcnRTdGF0dXMgPT0ga0VBR0xDUEdQVVJlc3RhcnRTdGF0dXNDYXVzZWQg
fHwgcmVzdGFydFN0YXR1cyA9PSBrRUFHTENQR1BVUmVzdGFydFN0YXR1c0JsYWNrbGlzdGVkKSB7
CisgICAgICAgIFtFQUdMQ29udGV4dCBzZXRDdXJyZW50Q29udGV4dDowXTsKKyAgICAgICAgW3N0
YXRpY19jYXN0PEVBR0xDb250ZXh0Kj4oY3VycmVudENvbnRleHQpIHJlbGVhc2VdOworICAgICAg
ICBmb3JjZUNvbnRleHRMb3N0KCk7CisgICAgfQorI2VuZGlmCisjZW5kaWYKK30KKwogI2lmIFBM
QVRGT1JNKElPUykKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmVuZFBhaW50KCkKIHsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJHTExheWVyLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJHTExheWVy
Lm1tCShyZXZpc2lvbiAxODA0NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvV2ViR0xMYXllci5tbQkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsOSBAQAogI2lm
ICFQTEFURk9STShJT1MpCiAjaW1wb3J0IDxPcGVuR0wvT3BlbkdMLmg+CiAjaW1wb3J0IDxPcGVu
R0wvZ2wuaD4KKyNlbHNlCisjaW1wb3J0ICJPcGVuR0xFU1NQSS5oIgorI2ltcG9ydCA8T3BlbkdM
RVMvRUFHTC5oPgogI2VuZGlmCiAjaW1wb3J0IDx3dGYvRmFzdE1hbGxvYy5oPgogI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgpAQCAtODMsNyArODYsNyBAQCAtKHZvaWQpZHJhd0luQ0dMQ29udGV4
dDooQ0dMQ29udGV4dE9iailnCiAgICAgX2NvbnRleHQtPnByZXBhcmVUZXh0dXJlKCk7CiAKICAg
ICBDR0xTZXRDdXJyZW50Q29udGV4dChnbENvbnRleHQpOwotCisgICAgCiAgICAgQ0dSZWN0IGZy
YW1lID0gW3NlbGYgZnJhbWVdOwogICAgIGZyYW1lLnNpemUud2lkdGggKj0gX2RldmljZVBpeGVs
UmF0aW87CiAgICAgZnJhbWUuc2l6ZS5oZWlnaHQgKj0gX2RldmljZVBpeGVsUmF0aW87CkBAIC0x
NjksOCArMTcyLDI1IEBAIC0gKHZvaWQpZGlzcGxheQogCiAjaWYgUExBVEZPUk0oSU9TKQogICAg
IF9jb250ZXh0LT5lbmRQYWludCgpOworICAgIEdMaW50IHJlc3RhcnRTdGF0dXMgPSAwOworICAg
IEVBR0xDb250ZXh0KiBjdXJyZW50Q29udGV4dCA9IF9jb250ZXh0LT5wbGF0Zm9ybUdyYXBoaWNz
Q29udGV4dDNEKCk7CisgICAgW2N1cnJlbnRDb250ZXh0IGdldFBhcmFtZXRlcjprRUFHTENQR1BV
UmVzdGFydFN0YXR1cyB0bzomcmVzdGFydFN0YXR1c107CisgICAgaWYgKHJlc3RhcnRTdGF0dXMg
PT0ga0VBR0xDUEdQVVJlc3RhcnRTdGF0dXNDYXVzZWQgfHwgcmVzdGFydFN0YXR1cyA9PSBrRUFH
TENQR1BVUmVzdGFydFN0YXR1c0JsYWNrbGlzdGVkKSB7CisgICAgICAgIFtFQUdMQ29udGV4dCBz
ZXRDdXJyZW50Q29udGV4dDowXTsKKyAgICAgICAgW3N0YXRpY19jYXN0PEVBR0xDb250ZXh0Kj4o
Y3VycmVudENvbnRleHQpIHJlbGVhc2VdOworICAgICAgICBfY29udGV4dC0+Zm9yY2VDb250ZXh0
TG9zdCgpOworICAgIH0KICNlbHNlCiAgICAgW3N1cGVyIGRpc3BsYXldOworI2lmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMDAwCisgICAgR0xpbnQgcmVzdGFydFN0YXR1
cyA9IDA7CisgICAgQ0dMR2V0UGFyYW1ldGVyKF9jb250ZXh0LT5wbGF0Zm9ybUdyYXBoaWNzQ29u
dGV4dDNEKCksIGtDR0xDUEdQVVJlc3RhcnRTdGF0dXMsICZyZXN0YXJ0U3RhdHVzKTsKKyAgICBp
ZiAocmVzdGFydFN0YXR1cyA9PSBrQ0dMQ1BHUFVSZXN0YXJ0U3RhdHVzQ2F1c2VkIHx8IHJlc3Rh
cnRTdGF0dXMgPT0ga0NHTENQR1BVUmVzdGFydFN0YXR1c0JsYWNrbGlzdGVkKSB7CisgICAgICAg
IENHTFNldEN1cnJlbnRDb250ZXh0KDApOworICAgICAgICBDR0xEZXN0cm95Q29udGV4dChfY29u
dGV4dC0+cGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCgpKTsKKyAgICAgICAgX2NvbnRleHQtPmZv
cmNlQ29udGV4dExvc3QoKTsKKyAgICB9CisjZW5kaWYKICNlbmRpZgogICAgIF9jb250ZXh0LT5t
YXJrTGF5ZXJDb21wb3NpdGVkKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHQzRE9wZW5HTENvbW1vbi5jcHAJKHJldmlzaW9uIDE4MDQ3NikKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1v
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJJbnRTaXpl
LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlRlbXBvcmFyeU9wZW5HTFNldHRp
bmcuaCIKKyNpbmNsdWRlICJXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgiCiAjaW5jbHVkZSA8
Y3N0cmluZz4KICNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8cnVu
dGltZS9BcnJheUJ1ZmZlclZpZXcuaD4KQEAgLTc1LDYgKzc2LDcgQEAKICNlbmRpZgogI2VuZGlm
CiAKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgU2hhZGVyTmFtZUhhc2gqIGN1cnJl
bnROYW1lSGFzaE1hcEZvclNoYWRlciA9IG51bGxwdHI7CkBAIC02ODMsMTIgKzY4NSwxNCBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkcmF3QXJyYXlzKEdDM0RlCiB7CiAgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7CiAgICAgOjpnbERyYXdBcnJheXMobW9kZSwgZmlyc3QsIGNvdW50KTsKKyAg
ICBjaGVja0dQVVN0YXR1cygpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkcmF3RWxl
bWVudHMoR0MzRGVudW0gbW9kZSwgR0MzRHNpemVpIGNvdW50LCBHQzNEZW51bSB0eXBlLCBHQzNE
aW50cHRyIG9mZnNldCkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICA6OmdsRHJh
d0VsZW1lbnRzKG1vZGUsIGNvdW50LCB0eXBlLCByZWludGVycHJldF9jYXN0PEdMdm9pZCo+KHN0
YXRpY19jYXN0PGludHB0cl90PihvZmZzZXQpKSk7CisgICAgY2hlY2tHUFVTdGF0dXMoKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZW5hYmxlKEdDM0RlbnVtIGNhcCkKQEAgLTE3NjMs
NiArMTc2NywxMiBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpsYXllckNvbXBvc2l0ZWQoCiAg
ICAgcmV0dXJuIG1fbGF5ZXJDb21wb3NpdGVkOwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4dDNE
Ojpmb3JjZUNvbnRleHRMb3N0KCkKK3sKKyAgICBpZiAobV93ZWJnbENvbnRleHQpCisgICAgICAg
IG1fd2ViZ2xDb250ZXh0LT5mb3JjZUxvc3RDb250ZXh0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OlJlYWxMb3N0Q29udGV4dCk7Cit9CisKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnRleElt
YWdlMkREaXJlY3QoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEaW50IGJv
cmRlciwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMp
CiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0M0RXaW4uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHQzRFdp
bi5jcHAJKHJldmlzaW9uIDE4MDQ3NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9HcmFwaGljc0NvbnRleHQzRFdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3OCw2
ICsxNzgsMTAgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6bWFrZUNvbnRleHRDdXJyZQogICAg
IHJldHVybiBtX3ByaXZhdGUtPm1ha2VDb250ZXh0Q3VycmVudCgpOwogfQogCit2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpjaGVja0dQVVN0YXR1cygpCit7Cit9CisKIFBsYXRmb3JtR3JhcGhpY3ND
b250ZXh0M0QgR3JhcGhpY3NDb250ZXh0M0Q6OnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QoKQog
ewogICAgIHJldHVybiBtX3ByaXZhdGUtPnBsYXRmb3JtQ29udGV4dCgpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vc3BpL2lvcy9PcGVuR0xFU1NQSS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9pb3MvT3BlbkdMRVNTUEkuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9pb3MvT3BlbkdMRVNTUEkuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8Rm91bmRhdGlv
bi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgorCisjaWYgVVNFKEFQUExF
X0lOVEVSTkFMX1NESykKKworI2ltcG9ydCA8T3BlbkdMRVMvRUFHTFByaXZhdGUuaD4KKworI2Vs
c2UKKworZW51bSB7CisgICAga0VBR0xDUEdQVVJlc3RhcnRTdGF0dXNOb25lICAgICAgICA9IDAs
IC8qIGNvbnRleHQgaGFzIG5vdCBjYXVzZWQgcmVjZW50IEdQVSByZXN0YXJ0ICovCisgICAga0VB
R0xDUEdQVVJlc3RhcnRTdGF0dXNDYXVzZWQgICAgICA9IDEsIC8qIGNvbnRleHQgY2F1c2VkIHJl
Y2VudCBHUFUgcmVzdGFydCAoY2xlYXIgb24gcXVlcnkpICovCisgICAga0VBR0xDUEdQVVJlc3Rh
cnRTdGF0dXNCbGFja2xpc3RlZCA9IDIsIC8qIGNvbnRleHQgaXMgYmVpbmcgaWdub3JlZCBmb3Ig
ZXhjZXNzaXZlIEdQVSByZXN0YXJ0cyAqLworfTsKKworLyogKHJlYWQtb25seSkgY29udGV4dCBj
YXVzZWQgR1BVIGhhbmcvY3Jhc2gsIHJlcXVpcmluZyBhIHJlc3RhcnQgKHNlZSBFQUdMR1BHUFVS
ZXN0YXJ0U3RhdHVzKSAqLworI2RlZmluZSBrRUFHTENQR1BVUmVzdGFydFN0YXR1cyAgICAgICAg
ICAgICAgICAgICAoKEVBR0xDb250ZXh0UGFyYW1ldGVyKTMxNykKKy8qIChyZWFkLXdyaXRlKSBo
b3cgdG8gcmVhY3QgdG8gYmVpbmcgYmxhY2tsaXN0ZWQgZm9yIGNhdXNpbmcgZXhjZXNzaXZlIHJl
c3RhcnRzIChkZWZhdWx0IHRvIDEpICovCisjZGVmaW5lIGtFQUdMQ1BBYm9ydE9uR1BVUmVzdGFy
dFN0YXR1c0JsYWNrbGlzdGVkICgoRUFHTENvbnRleHRQYXJhbWV0ZXIpMzE4KQorLyogKHJlYWQt
b25seSkgZG9lcyBkcml2ZXIgc3VwcG9ydCBhdXRvLXJlc3RhcnQgb2YgR1BVIG9uIGhhbmcvY3Jh
c2g/ICovCisjZGVmaW5lIGtFQUdMQ1BTdXBwb3J0R1BVUmVzdGFydCAgICAgICAgICAgICAgICAg
ICgoRUFHTENvbnRleHRQYXJhbWV0ZXIpMzE5KQorLyogKHJlYWQtb25seSkgZG9lcyBkcml2ZXIv
R1BVIHN1cHBvcnQgc2VwYXJhdGUgYWRkcmVzcyBzcGFjZSBwZXIgY29udGV4dD8gKi8KKyNkZWZp
bmUga0VBR0xDUFN1cHBvcnRTZXBhcmF0ZUFkZHJlc3NTcGFjZSAgICAgICAgKChFQUdMQ29udGV4
dFBhcmFtZXRlcikzMjApCisKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247259</attachid>
            <date>2015-02-24 13:17:33 -0800</date>
            <delta_ts>2015-02-24 13:32:03 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>17852</size>
            <attacher name="Roger Fong">roger_fong</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MDU4MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE1LTAyLTE5ICBSb2dlciBG
b25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0w6IERlc3Ryb3kgdGhl
IEdMQ29udGV4dCBpZiBhIEdQVSByZXN0YXJ0IGhhcyBiZWVuIGRldGVjdGVkLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxNTY3LgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMTg1MDc0OTY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OldlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dDNELmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6c2V0
V2ViR0xDb250ZXh0KTogCisgICAgICAgIEtlZXAgdHJhY2sgb2Ygd2hpY2ggV2ViR0xSZW5kZXJp
bmdDb250ZXh0IGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VycmVudCBHcmFwaGljc0NvbnRleHQz
RC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y2hlY2tHUFVTdGF0dXMp
OiBIZWxwZXIgbWV0aG9kIHRvIGNoZWNrIEdQVSBzdGF0dXMuCisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QpOiAKKyAgICAgICAgRG9u4oCZdCBp
bW1lZGlhdGVseSBhYm9ydCB0aGUgR1BVIHByb2Nlc3Mgd2hlbiB0aGUgcmVzdGFydCBzdGF0dXMg
aXMga0NHTENQR1BVUmVzdGFydFN0YXR1c0JsYWNrbGlzdGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL21hYy9XZWJHTExheWVyLm1tOgorICAgICAgICAoLVtXZWJHTExheWVyIGRpc3Bs
YXldKTogCisgICAgICAgIERlc3Ryb3kgdGhlIGNvbnRleHQgYW5kIGZvcmNlIGEgY29udGV4dCBs
b3N0IGV2ZW50IGlmIGEgR1BVIHJlc3RhcnQgaGFzIGJlZW4gZGV0ZWN0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpmb3JjZUNvbnRleHRMb3N0
KTogCisgICAgICAgIEZvcmNlIHRoZSBXZWJHTFJlbmRlcmluZ0NvbnRleHQgdG8gYmUgbG9zdC4K
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpkcmF3QXJyYXlzKTogQ2hlY2sg
R1BVIHN0YXR1cyBhZnRlciBjYWxsaW5nIGRyYXdBcnJheXMuCisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6ZHJhd0VsZW1lbnRzKTogQ2hlY2sgR1BVIHN0YXR1cyBhZnRlciBj
YWxsaW5nIGRyYXdFbGVtZW50cy4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6IEFkZCBTUEkgaGVhZGVyIGZvciBpT1MuCisgICAgICAgICogcGxhdGZvcm0vc3Bp
L2lvcy9PcGVuR0xFU1NQSS5oOiBBZGRlZC4KKwogMjAxNS0wMi0yNCAgWmFsYW4gQnVqdGFzICA8
emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFN3aXRjaCBCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRy
eSdzIG1fcGhhc2UgZnJvbSBMYXlvdXRQb2ludCB0byBMYXlvdXRTaXplLgpJbmRleDogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMTgwNDc2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC05NDkyLDYgKzk0OTIsNyBAQAogCQk2Rjk5NUEyRTFB
NzA4MzM3MDBBNzM1RjQgLyogSlNXZWJHTFRyYW5zZm9ybUZlZWRiYWNrLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk2Rjk5NUEyRjFBNzA4MzM3MDBBNzM1RjQgLyogSlNXZWJH
TFZlcnRleEFycmF5T2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTZGOTk1QTMwMUE3MDgzMzcwMEE3MzVGNCAvKiBKU1dlYkdMVmVydGV4QXJyYXlPYmpl
Y3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWJHTFZlcnRleEFycmF5
T2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZGQUQ0QTU2MUE5RDBGQUUw
MDlGN0QzQyAvKiBPcGVuR0xFU1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBPcGVuR0xFU1NQSS5oOyBw
YXRoID0gaW9zL09wZW5HTEVTU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcx
MTc0NDU2MTRCQzM0RTIwMEVFNUZDOCAvKiBTVkdUZXh0TWV0cmljc0J1aWxkZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzExNzQ0NTcxNEJDMzRFMjAwRUU1RkM4
IC8qIFNWR1RleHRNZXRyaWNzQnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTVkdUZXh0TWV0cmljc0J1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNzExOEZFRDIxNTY4NUNDNjAwMzBCNzlBIC8qIEpTU1ZHVmlld1NwZWMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTVkdWaWV3U3BlYy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODU1OCw2ICsxODU1OSw3IEBACiAJCQkJQ0UxMjUyNDgx
QTE2QzNCQzAwODY0NDgwIC8qIE1vYmlsZUdlc3RhbHRTUEkuaCAqLywKIAkJCQlDRTEyNTI0MDFB
MTZCMUI2MDA4NjQ0ODAgLyogTWVkaWFQbGF5ZXJTUEkuaCAqLywKIAkJCQlDRTEyNTIzODFBMTY2
RkEwMDA4NjQ0ODAgLyogUXVpY2tMb29rU1BJLmggKi8sCisJCQkJNkZBRDRBNTYxQTlEMEZBRTAw
OUY3RDNDIC8qIE9wZW5HTEVTU1BJLmggKi8sCiAJCQkpOwogCQkJbmFtZSA9IGlvczsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAkocmV2aXNpb24gMTgw
NDc2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2Myw2ICs0NjMsOCBAQCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpXZWJHTFJlbmRlcmluCiAgICAgQVNTRVJUKG1fY29udGV4dCk7CiAgICAg
bV9jb250ZXh0R3JvdXAgPSBXZWJHTENvbnRleHRHcm91cDo6Y3JlYXRlKCk7CiAgICAgbV9jb250
ZXh0R3JvdXAtPmFkZENvbnRleHQodGhpcyk7CisgICAgCisgICAgbV9jb250ZXh0LT5zZXRXZWJH
TENvbnRleHQodGhpcyk7CiAKICAgICBtX21heFZpZXdwb3J0RGltc1swXSA9IG1fbWF4Vmlld3Bv
cnREaW1zWzFdID0gMDsKICAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4
dDNEOjpNQVhfVklFV1BPUlRfRElNUywgbV9tYXhWaWV3cG9ydERpbXMpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5o
CShyZXZpc2lvbiAxODA0NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQzRC5oCSh3b3JraW5nIGNvcHkpCkBAIC05OCw2ICs5OCw3IEBAIGNsYXNz
IEltYWdlU291cmNlOwogY2xhc3MgSW1hZ2VEYXRhOwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIElu
dFNpemU7CitjbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOwogI2lmIFVTRShDQUlSTykK
IGNsYXNzIFBsYXRmb3JtQ29udGV4dENhaXJvOwogI2VuZGlmCkBAIC03ODAsNiArNzgxLDcgQEAg
cHVibGljOgogI2VuZGlmCiAKICAgICBib29sIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIHZv
aWQgc2V0V2ViR0xDb250ZXh0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGJhc2UpIHsgbV93
ZWJnbENvbnRleHQgPSBiYXNlOyB9CiAKICAgICAvLyBXaXRoIG11bHRpc2FtcGxpbmcgb24sIGJs
aXQgZnJvbSBtdWx0aXNhbXBsZUZCTyB0byByZWd1bGFyIEZCTy4KICAgICB2b2lkIHByZXBhcmVU
ZXh0dXJlKCk7CkBAIC0xMTI4LDYgKzExMzAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYXJrQ29u
dGV4dENoYW5nZWQoKTsKICAgICB2b2lkIG1hcmtMYXllckNvbXBvc2l0ZWQoKTsKICAgICBib29s
IGxheWVyQ29tcG9zaXRlZCgpIGNvbnN0OworICAgIHZvaWQgZm9yY2VDb250ZXh0TG9zdCgpOwog
CiAgICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciosIERy
YXdpbmdCdWZmZXIqKTsKICAgICBQYXNzUmVmUHRyPEltYWdlRGF0YT4gcGFpbnRSZW5kZXJpbmdS
ZXN1bHRzVG9JbWFnZURhdGEoRHJhd2luZ0J1ZmZlciopOwpAQCAtMTI1Niw2ICsxMjU5LDcgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICBHcmFwaGljc0NvbnRleHQzRChBdHRyaWJ1dGVzLCBIb3N0
V2luZG93KiwgUmVuZGVyU3R5bGUgPSBSZW5kZXJPZmZzY3JlZW4pOwogICAgIHN0YXRpYyBpbnQg
bnVtQWN0aXZlQ29udGV4dHM7CisgICAgc3RhdGljIGludCBkcmF3Q291bnRlcjsKIAogICAgIC8v
IEhlbHBlciBmb3IgcGFja0ltYWdlRGF0YS9leHRyYWN0SW1hZ2VEYXRhL2V4dHJhY3RUZXh0dXJl
RGF0YSB3aGljaCBpbXBsZW1lbnQgcGFja2luZyBvZiBwaXhlbAogICAgIC8vIGRhdGEgaW50byB0
aGUgc3BlY2lmaWVkIE9wZW5HTCBkZXN0aW5hdGlvbiBmb3JtYXQgYW5kIHR5cGUuCkBAIC0xMjcw
LDYgKzEyNzQsOSBAQCBwcml2YXRlOgogICAgIC8vIGltcGxlbWVudGF0aW9uLgogICAgIHZvaWQg
dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5z
aW9uKTsKICAgICB2b2lkIHZhbGlkYXRlQXR0cmlidXRlcygpOworICAgIAorICAgIC8vIENhbGwg
dG8gbWFrZSBkdXJpbmcgZHJhdyBjYWxscyB0byBjaGVjayBvbiB0aGUgR1BVJ3Mgc3RhdHVzCisg
ICAgdm9pZCBjaGVja0dQVVN0YXR1cygpOwogCiAgICAgLy8gUmVhZCByZW5kZXJpbmcgcmVzdWx0
cyBpbnRvIGEgcGl4ZWwgYXJyYXkgd2l0aCB0aGUgc2FtZSBmb3JtYXQgYXMgdGhlCiAgICAgLy8g
YmFja2J1ZmZlci4KQEAgLTE0MzgsNiArMTQ0NSw4IEBAIHByaXZhdGU6CiAKICAgICBmcmllbmQg
Y2xhc3MgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmFw
aGljc0NvbnRleHQzRFByaXZhdGU+IG1fcHJpdmF0ZTsKKyAgICAKKyAgICBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlKiBtX3dlYmdsQ29udGV4dDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dDNEQ2Fpcm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwCShyZXZpc2lvbiAxODA0
NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHQzRENhaXJvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgyLDYgKzI4MiwxMCBAQCBib29s
IEdyYXBoaWNzQ29udGV4dDNEOjptYWtlQ29udGV4dEN1cnJlCiAgICAgcmV0dXJuIG1fcHJpdmF0
ZS0+bWFrZUNvbnRleHRDdXJyZW50KCk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNo
ZWNrR1BVU3RhdHVzKCkKK3sKK30KKwogUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBHcmFwaGlj
c0NvbnRleHQzRDo6cGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCgpCiB7CiAgICAgcmV0dXJuIG1f
cHJpdmF0ZS0+cGxhdGZvcm1Db250ZXh0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREVmbC5j
cHAJKHJldmlzaW9uIDE4MDQ3NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2VmbC9HcmFwaGljc0NvbnRleHQzREVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Myw2ICsx
ODMsMTAgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6bWFrZUNvbnRleHRDdXJyZQogICAgIHJl
dHVybiBtX3ByaXZhdGUtPm1ha2VDb250ZXh0Q3VycmVudCgpOwogfQogCit2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpjaGVja0dQVVN0YXR1cygpCit7Cit9CisKIGJvb2wgR3JhcGhpY3NDb250ZXh0
M0Q6OmlzR0xFUzJDb21wbGlhbnQoKSBjb25zdAogewogI2lmIFVTRShPUEVOR0xfRVNfMikKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQz
RE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvR3JhcGhpY3NDb250ZXh0M0RNYWMubW0JKHJldmlzaW9uIDE4MDQ3NikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5tbQkod29y
a2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpZiBQTEFURk9STShJT1MpCisjaW1wb3J0
ICJPcGVuR0xFU1NQSS5oIgogI2ltcG9ydCA8T3BlbkdMRVMvRVMyL2dsZXh0Lmg+CiAjaW1wb3J0
IDxPcGVuR0xFUy9FQUdMLmg+CiAjaW1wb3J0IDxPcGVuR0xFUy9FQUdMRHJhd2FibGUuaD4KQEAg
LTUyLDYgKzUzLDcgQEAKICNlbmRpZgogI2luY2x1ZGUgIldlYkdMTGF5ZXIuaCIKICNpbmNsdWRl
ICJXZWJHTE9iamVjdC5oIgorI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCIK
ICNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8cnVudGltZS9BcnJh
eUJ1ZmZlclZpZXcuaD4KICNpbmNsdWRlIDxydW50aW1lL0ludDMyQXJyYXkuaD4KQEAgLTYzLDcg
KzY1LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBpbnQgbWF4QWN0aXZlQ29udGV4
dHMgPSA2NDsKIGludCBHcmFwaGljc0NvbnRleHQzRDo6bnVtQWN0aXZlQ29udGV4dHMgPSAwOwot
Citjb25zdCBpbnQgY2hlY2tHUFVTdGF0dXNEcmF3SXRlcmF0aW9ucyA9IDU7CitpbnQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmRyYXdDb3VudGVyID0gMDsKKyAgICAKIC8vIEZJWE1FOiBUaGlzIGNsYXNz
IGlzIGN1cnJlbnRseSBlbXB0eSBvbiBNYWMsIGJ1dCB3aWxsIGdldCBwb3B1bGF0ZWQgYXMgCiAv
LyB0aGUgcmVzdHJ1Y3R1cmluZyBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjY5MDMgaXMgZG9uZQogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlIHsKQEAg
LTE0NSw2ICsxNDksNyBAQCBHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3Jh
CiAgICAgLCBtX211bHRpc2FtcGxlRGVwdGhTdGVuY2lsQnVmZmVyKDApCiAgICAgLCBtX211bHRp
c2FtcGxlQ29sb3JCdWZmZXIoMCkKICAgICAsIG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPEdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZT4odGhpcykpCisgICAgLCBtX3dlYmdsQ29udGV4dCgwKQog
ewogICAgIFVOVVNFRF9QQVJBTShob3N0V2luZG93KTsKICAgICBVTlVTRURfUEFSQU0ocmVuZGVy
U3R5bGUpOwpAQCAtMTk2LDYgKzIwMSwxNSBAQCBHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3ND
b250ZXh0M0QoR3JhCiAgICAgICAgIHJldHVybjsKIAogICAgIENHTEVycm9yIGVyciA9IENHTENy
ZWF0ZUNvbnRleHQocGl4ZWxGb3JtYXRPYmosIDAsICZtX2NvbnRleHRPYmopOworI2lmICgoUExB
VEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTAwMCkg
fHwgUExBVEZPUk0oSU9TKSkKKyAgICBHTGludCBhYm9ydE9uQmxhY2tsaXN0ID0gMDsKKyNpZiBQ
TEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMDAw
CisgICAgQ0dMU2V0UGFyYW1ldGVyKG1fY29udGV4dE9iaiwga0NHTENQQWJvcnRPbkdQVVJlc3Rh
cnRTdGF0dXNCbGFja2xpc3RlZCwgJmFib3J0T25CbGFja2xpc3QpOworI2VsaWYgUExBVEZPUk0o
SU9TKQorICAgIENHTFNldFBhcmFtZXRlcihtX2NvbnRleHRPYmosIGtFQUdMQ1BBYm9ydE9uR1BV
UmVzdGFydFN0YXR1c0JsYWNrbGlzdGVkLCAmYWJvcnRPbkJsYWNrbGlzdCk7CisjZW5kaWYKKyNl
bmRpZgorCiAgICAgQ0dMRGVzdHJveVBpeGVsRm9ybWF0KHBpeGVsRm9ybWF0T2JqKTsKICAgICAK
ICAgICBpZiAoZXJyICE9IGtDR0xOb0Vycm9yIHx8ICFtX2NvbnRleHRPYmopIHsKQEAgLTM1Myw2
ICszNjcsMzMgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6bWFrZUNvbnRleHRDdXJyZQogICAg
IHJldHVybiB0cnVlOwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjaGVja0dQVVN0YXR1
cygpCit7CisjaWYgKChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTAxMDAwKSB8fCBQTEFURk9STShJT1MpKQorICAgIGRyYXdDb3VudGVyID0gKGRy
YXdDb3VudGVyICsgMSkgJSBjaGVja0dQVVN0YXR1c0RyYXdJdGVyYXRpb25zOworICAgIGlmIChk
cmF3Q291bnRlcikKKyAgICAgICAgcmV0dXJuOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBHTGlu
dCByZXN0YXJ0U3RhdHVzID0gMDsKKyAgICBDR0xHZXRQYXJhbWV0ZXIocGxhdGZvcm1HcmFwaGlj
c0NvbnRleHQzRCgpLCBrQ0dMQ1BHUFVSZXN0YXJ0U3RhdHVzLCAmcmVzdGFydFN0YXR1cyk7Cisg
ICAgaWYgKHJlc3RhcnRTdGF0dXMgPT0ga0NHTENQR1BVUmVzdGFydFN0YXR1c0NhdXNlZCB8fCBy
ZXN0YXJ0U3RhdHVzID09IGtDR0xDUEdQVVJlc3RhcnRTdGF0dXNCbGFja2xpc3RlZCkgeworICAg
ICAgICBDR0xTZXRDdXJyZW50Q29udGV4dCgwKTsKKyAgICAgICAgQ0dMRGVzdHJveUNvbnRleHQo
cGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCgpKTsKKyAgICAgICAgZm9yY2VDb250ZXh0TG9zdCgp
OworICAgIH0KKyNlbGlmIFBMQVRGT1JNKElPUykKKyAgICBHTGludCByZXN0YXJ0U3RhdHVzID0g
MDsKKyAgICBFQUdMQ29udGV4dCogY3VycmVudENvbnRleHQgPSBzdGF0aWNfY2FzdDxFQUdMQ29u
dGV4dCo+KFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QoKSk7CisgICAgW2N1cnJlbnRDb250ZXh0
IGdldFBhcmFtZXRlcjprRUFHTENQR1BVUmVzdGFydFN0YXR1cyB0bzomcmVzdGFydFN0YXR1c107
CisgICAgaWYgKHJlc3RhcnRTdGF0dXMgPT0ga0VBR0xDUEdQVVJlc3RhcnRTdGF0dXNDYXVzZWQg
fHwgcmVzdGFydFN0YXR1cyA9PSBrRUFHTENQR1BVUmVzdGFydFN0YXR1c0JsYWNrbGlzdGVkKSB7
CisgICAgICAgIFtFQUdMQ29udGV4dCBzZXRDdXJyZW50Q29udGV4dDowXTsKKyAgICAgICAgW3N0
YXRpY19jYXN0PEVBR0xDb250ZXh0Kj4oY3VycmVudENvbnRleHQpIHJlbGVhc2VdOworICAgICAg
ICBmb3JjZUNvbnRleHRMb3N0KCk7CisgICAgfQorI2VuZGlmCisjZW5kaWYKK30KKwogI2lmIFBM
QVRGT1JNKElPUykKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmVuZFBhaW50KCkKIHsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJHTExheWVyLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJHTExheWVy
Lm1tCShyZXZpc2lvbiAxODA0NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvV2ViR0xMYXllci5tbQkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsOSBAQAogI2lm
ICFQTEFURk9STShJT1MpCiAjaW1wb3J0IDxPcGVuR0wvT3BlbkdMLmg+CiAjaW1wb3J0IDxPcGVu
R0wvZ2wuaD4KKyNlbHNlCisjaW1wb3J0ICJPcGVuR0xFU1NQSS5oIgorI2ltcG9ydCA8T3BlbkdM
RVMvRUFHTC5oPgogI2VuZGlmCiAjaW1wb3J0IDx3dGYvRmFzdE1hbGxvYy5oPgogI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgpAQCAtODMsNyArODYsNyBAQCAtKHZvaWQpZHJhd0luQ0dMQ29udGV4
dDooQ0dMQ29udGV4dE9iailnCiAgICAgX2NvbnRleHQtPnByZXBhcmVUZXh0dXJlKCk7CiAKICAg
ICBDR0xTZXRDdXJyZW50Q29udGV4dChnbENvbnRleHQpOwotCisgICAgCiAgICAgQ0dSZWN0IGZy
YW1lID0gW3NlbGYgZnJhbWVdOwogICAgIGZyYW1lLnNpemUud2lkdGggKj0gX2RldmljZVBpeGVs
UmF0aW87CiAgICAgZnJhbWUuc2l6ZS5oZWlnaHQgKj0gX2RldmljZVBpeGVsUmF0aW87CkBAIC0x
NjksOCArMTcyLDI1IEBAIC0gKHZvaWQpZGlzcGxheQogCiAjaWYgUExBVEZPUk0oSU9TKQogICAg
IF9jb250ZXh0LT5lbmRQYWludCgpOworICAgIEdMaW50IHJlc3RhcnRTdGF0dXMgPSAwOworICAg
IEVBR0xDb250ZXh0KiBjdXJyZW50Q29udGV4dCA9IF9jb250ZXh0LT5wbGF0Zm9ybUdyYXBoaWNz
Q29udGV4dDNEKCk7CisgICAgW2N1cnJlbnRDb250ZXh0IGdldFBhcmFtZXRlcjprRUFHTENQR1BV
UmVzdGFydFN0YXR1cyB0bzomcmVzdGFydFN0YXR1c107CisgICAgaWYgKHJlc3RhcnRTdGF0dXMg
PT0ga0VBR0xDUEdQVVJlc3RhcnRTdGF0dXNDYXVzZWQgfHwgcmVzdGFydFN0YXR1cyA9PSBrRUFH
TENQR1BVUmVzdGFydFN0YXR1c0JsYWNrbGlzdGVkKSB7CisgICAgICAgIFtFQUdMQ29udGV4dCBz
ZXRDdXJyZW50Q29udGV4dDowXTsKKyAgICAgICAgW3N0YXRpY19jYXN0PEVBR0xDb250ZXh0Kj4o
Y3VycmVudENvbnRleHQpIHJlbGVhc2VdOworICAgICAgICBfY29udGV4dC0+Zm9yY2VDb250ZXh0
TG9zdCgpOworICAgIH0KICNlbHNlCiAgICAgW3N1cGVyIGRpc3BsYXldOworI2lmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMDAwCisgICAgR0xpbnQgcmVzdGFydFN0YXR1
cyA9IDA7CisgICAgQ0dMR2V0UGFyYW1ldGVyKF9jb250ZXh0LT5wbGF0Zm9ybUdyYXBoaWNzQ29u
dGV4dDNEKCksIGtDR0xDUEdQVVJlc3RhcnRTdGF0dXMsICZyZXN0YXJ0U3RhdHVzKTsKKyAgICBp
ZiAocmVzdGFydFN0YXR1cyA9PSBrQ0dMQ1BHUFVSZXN0YXJ0U3RhdHVzQ2F1c2VkIHx8IHJlc3Rh
cnRTdGF0dXMgPT0ga0NHTENQR1BVUmVzdGFydFN0YXR1c0JsYWNrbGlzdGVkKSB7CisgICAgICAg
IENHTFNldEN1cnJlbnRDb250ZXh0KDApOworICAgICAgICBDR0xEZXN0cm95Q29udGV4dChfY29u
dGV4dC0+cGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCgpKTsKKyAgICAgICAgX2NvbnRleHQtPmZv
cmNlQ29udGV4dExvc3QoKTsKKyAgICB9CisjZW5kaWYKICNlbmRpZgogICAgIF9jb250ZXh0LT5t
YXJrTGF5ZXJDb21wb3NpdGVkKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHQzRE9wZW5HTENvbW1vbi5jcHAJKHJldmlzaW9uIDE4MDQ3NikKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1v
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJJbnRTaXpl
LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlRlbXBvcmFyeU9wZW5HTFNldHRp
bmcuaCIKKyNpbmNsdWRlICJXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgiCiAjaW5jbHVkZSA8
Y3N0cmluZz4KICNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8cnVu
dGltZS9BcnJheUJ1ZmZlclZpZXcuaD4KQEAgLTc1LDYgKzc2LDcgQEAKICNlbmRpZgogI2VuZGlm
CiAKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgU2hhZGVyTmFtZUhhc2gqIGN1cnJl
bnROYW1lSGFzaE1hcEZvclNoYWRlciA9IG51bGxwdHI7CkBAIC02ODMsMTIgKzY4NSwxNCBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkcmF3QXJyYXlzKEdDM0RlCiB7CiAgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7CiAgICAgOjpnbERyYXdBcnJheXMobW9kZSwgZmlyc3QsIGNvdW50KTsKKyAg
ICBjaGVja0dQVVN0YXR1cygpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkcmF3RWxl
bWVudHMoR0MzRGVudW0gbW9kZSwgR0MzRHNpemVpIGNvdW50LCBHQzNEZW51bSB0eXBlLCBHQzNE
aW50cHRyIG9mZnNldCkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICA6OmdsRHJh
d0VsZW1lbnRzKG1vZGUsIGNvdW50LCB0eXBlLCByZWludGVycHJldF9jYXN0PEdMdm9pZCo+KHN0
YXRpY19jYXN0PGludHB0cl90PihvZmZzZXQpKSk7CisgICAgY2hlY2tHUFVTdGF0dXMoKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZW5hYmxlKEdDM0RlbnVtIGNhcCkKQEAgLTE3NjMs
NiArMTc2NywxMiBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpsYXllckNvbXBvc2l0ZWQoCiAg
ICAgcmV0dXJuIG1fbGF5ZXJDb21wb3NpdGVkOwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4dDNE
Ojpmb3JjZUNvbnRleHRMb3N0KCkKK3sKKyAgICBpZiAobV93ZWJnbENvbnRleHQpCisgICAgICAg
IG1fd2ViZ2xDb250ZXh0LT5mb3JjZUxvc3RDb250ZXh0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OlJlYWxMb3N0Q29udGV4dCk7Cit9CisKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnRleElt
YWdlMkREaXJlY3QoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEaW50IGJv
cmRlciwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMp
CiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0M0RXaW4uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHQzRFdp
bi5jcHAJKHJldmlzaW9uIDE4MDQ3NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9HcmFwaGljc0NvbnRleHQzRFdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3OCw2
ICsxNzgsMTAgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6bWFrZUNvbnRleHRDdXJyZQogICAg
IHJldHVybiBtX3ByaXZhdGUtPm1ha2VDb250ZXh0Q3VycmVudCgpOwogfQogCit2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpjaGVja0dQVVN0YXR1cygpCit7Cit9CisKIFBsYXRmb3JtR3JhcGhpY3ND
b250ZXh0M0QgR3JhcGhpY3NDb250ZXh0M0Q6OnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QoKQog
ewogICAgIHJldHVybiBtX3ByaXZhdGUtPnBsYXRmb3JtQ29udGV4dCgpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vc3BpL2lvcy9PcGVuR0xFU1NQSS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9pb3MvT3BlbkdMRVNTUEkuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9pb3MvT3BlbkdMRVNTUEkuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8Rm91bmRhdGlv
bi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgorCisjaWYgVVNFKEFQUExF
X0lOVEVSTkFMX1NESykKKworI2ltcG9ydCA8T3BlbkdMRVMvRUFHTFByaXZhdGUuaD4KKworI2Vs
c2UKKwordHlwZWRlZiB1aW50MzJfdCBFQUdMQ29udGV4dFBhcmFtZXRlcjsKKworZW51bSB7Cisg
ICAga0VBR0xDUEdQVVJlc3RhcnRTdGF0dXNOb25lICAgICAgICA9IDAsIC8qIGNvbnRleHQgaGFz
IG5vdCBjYXVzZWQgcmVjZW50IEdQVSByZXN0YXJ0ICovCisgICAga0VBR0xDUEdQVVJlc3RhcnRT
dGF0dXNDYXVzZWQgICAgICA9IDEsIC8qIGNvbnRleHQgY2F1c2VkIHJlY2VudCBHUFUgcmVzdGFy
dCAoY2xlYXIgb24gcXVlcnkpICovCisgICAga0VBR0xDUEdQVVJlc3RhcnRTdGF0dXNCbGFja2xp
c3RlZCA9IDIsIC8qIGNvbnRleHQgaXMgYmVpbmcgaWdub3JlZCBmb3IgZXhjZXNzaXZlIEdQVSBy
ZXN0YXJ0cyAqLworfTsKKworLyogKHJlYWQtb25seSkgY29udGV4dCBjYXVzZWQgR1BVIGhhbmcv
Y3Jhc2gsIHJlcXVpcmluZyBhIHJlc3RhcnQgKHNlZSBFQUdMR1BHUFVSZXN0YXJ0U3RhdHVzKSAq
LworI2RlZmluZSBrRUFHTENQR1BVUmVzdGFydFN0YXR1cyAgICAgICAgICAgICAgICAgICAoKEVB
R0xDb250ZXh0UGFyYW1ldGVyKTMxNykKKy8qIChyZWFkLXdyaXRlKSBob3cgdG8gcmVhY3QgdG8g
YmVpbmcgYmxhY2tsaXN0ZWQgZm9yIGNhdXNpbmcgZXhjZXNzaXZlIHJlc3RhcnRzIChkZWZhdWx0
IHRvIDEpICovCisjZGVmaW5lIGtFQUdMQ1BBYm9ydE9uR1BVUmVzdGFydFN0YXR1c0JsYWNrbGlz
dGVkICgoRUFHTENvbnRleHRQYXJhbWV0ZXIpMzE4KQorLyogKHJlYWQtb25seSkgZG9lcyBkcml2
ZXIgc3VwcG9ydCBhdXRvLXJlc3RhcnQgb2YgR1BVIG9uIGhhbmcvY3Jhc2g/ICovCisjZGVmaW5l
IGtFQUdMQ1BTdXBwb3J0R1BVUmVzdGFydCAgICAgICAgICAgICAgICAgICgoRUFHTENvbnRleHRQ
YXJhbWV0ZXIpMzE5KQorLyogKHJlYWQtb25seSkgZG9lcyBkcml2ZXIvR1BVIHN1cHBvcnQgc2Vw
YXJhdGUgYWRkcmVzcyBzcGFjZSBwZXIgY29udGV4dD8gKi8KKyNkZWZpbmUga0VBR0xDUFN1cHBv
cnRTZXBhcmF0ZUFkZHJlc3NTcGFjZSAgICAgICAgKChFQUdMQ29udGV4dFBhcmFtZXRlcikzMjAp
CisKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247262</attachid>
            <date>2015-02-24 13:32:03 -0800</date>
            <delta_ts>2015-02-24 15:31:04 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>18052</size>
            <attacher name="Roger Fong">roger_fong</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MDU4MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE1LTAyLTE5ICBSb2dlciBG
b25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0w6IERlc3Ryb3kgdGhl
IEdMQ29udGV4dCBpZiBhIEdQVSByZXN0YXJ0IGhhcyBiZWVuIGRldGVjdGVkLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxNTY3LgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMTg1MDc0OTY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OldlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dDNELmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6c2V0
V2ViR0xDb250ZXh0KTogCisgICAgICAgIEtlZXAgdHJhY2sgb2Ygd2hpY2ggV2ViR0xSZW5kZXJp
bmdDb250ZXh0IGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VycmVudCBHcmFwaGljc0NvbnRleHQz
RC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y2hlY2tHUFVTdGF0dXMp
OiBIZWxwZXIgbWV0aG9kIHRvIGNoZWNrIEdQVSBzdGF0dXMuCisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QpOiAKKyAgICAgICAgRG9u4oCZdCBp
bW1lZGlhdGVseSBhYm9ydCB0aGUgR1BVIHByb2Nlc3Mgd2hlbiB0aGUgcmVzdGFydCBzdGF0dXMg
aXMga0NHTENQR1BVUmVzdGFydFN0YXR1c0JsYWNrbGlzdGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL21hYy9XZWJHTExheWVyLm1tOgorICAgICAgICAoLVtXZWJHTExheWVyIGRpc3Bs
YXldKTogCisgICAgICAgIERlc3Ryb3kgdGhlIGNvbnRleHQgYW5kIGZvcmNlIGEgY29udGV4dCBs
b3N0IGV2ZW50IGlmIGEgR1BVIHJlc3RhcnQgaGFzIGJlZW4gZGV0ZWN0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpmb3JjZUNvbnRleHRMb3N0
KTogCisgICAgICAgIEZvcmNlIHRoZSBXZWJHTFJlbmRlcmluZ0NvbnRleHQgdG8gYmUgbG9zdC4K
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpkcmF3QXJyYXlzKTogQ2hlY2sg
R1BVIHN0YXR1cyBhZnRlciBjYWxsaW5nIGRyYXdBcnJheXMuCisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6ZHJhd0VsZW1lbnRzKTogQ2hlY2sgR1BVIHN0YXR1cyBhZnRlciBj
YWxsaW5nIGRyYXdFbGVtZW50cy4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6IEFkZCBTUEkgaGVhZGVyIGZvciBpT1MuCisgICAgICAgICogcGxhdGZvcm0vc3Bp
L2lvcy9PcGVuR0xFU1NQSS5oOiBBZGRlZC4KKwogMjAxNS0wMi0yNCAgWmFsYW4gQnVqdGFzICA8
emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFN3aXRjaCBCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRy
eSdzIG1fcGhhc2UgZnJvbSBMYXlvdXRQb2ludCB0byBMYXlvdXRTaXplLgpJbmRleDogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMTgwNDc2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC05NDkyLDYgKzk0OTIsNyBAQAogCQk2Rjk5NUEyRTFB
NzA4MzM3MDBBNzM1RjQgLyogSlNXZWJHTFRyYW5zZm9ybUZlZWRiYWNrLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk2Rjk5NUEyRjFBNzA4MzM3MDBBNzM1RjQgLyogSlNXZWJH
TFZlcnRleEFycmF5T2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTZGOTk1QTMwMUE3MDgzMzcwMEE3MzVGNCAvKiBKU1dlYkdMVmVydGV4QXJyYXlPYmpl
Y3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWJHTFZlcnRleEFycmF5
T2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZGQUQ0QTU2MUE5RDBGQUUw
MDlGN0QzQyAvKiBPcGVuR0xFU1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBPcGVuR0xFU1NQSS5oOyBw
YXRoID0gaW9zL09wZW5HTEVTU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcx
MTc0NDU2MTRCQzM0RTIwMEVFNUZDOCAvKiBTVkdUZXh0TWV0cmljc0J1aWxkZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzExNzQ0NTcxNEJDMzRFMjAwRUU1RkM4
IC8qIFNWR1RleHRNZXRyaWNzQnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTVkdUZXh0TWV0cmljc0J1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNzExOEZFRDIxNTY4NUNDNjAwMzBCNzlBIC8qIEpTU1ZHVmlld1NwZWMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTVkdWaWV3U3BlYy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODU1OCw2ICsxODU1OSw3IEBACiAJCQkJQ0UxMjUyNDgx
QTE2QzNCQzAwODY0NDgwIC8qIE1vYmlsZUdlc3RhbHRTUEkuaCAqLywKIAkJCQlDRTEyNTI0MDFB
MTZCMUI2MDA4NjQ0ODAgLyogTWVkaWFQbGF5ZXJTUEkuaCAqLywKIAkJCQlDRTEyNTIzODFBMTY2
RkEwMDA4NjQ0ODAgLyogUXVpY2tMb29rU1BJLmggKi8sCisJCQkJNkZBRDRBNTYxQTlEMEZBRTAw
OUY3RDNDIC8qIE9wZW5HTEVTU1BJLmggKi8sCiAJCQkpOwogCQkJbmFtZSA9IGlvczsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAkocmV2aXNpb24gMTgw
NDc2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2Myw2ICs0NjMsOCBAQCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpXZWJHTFJlbmRlcmluCiAgICAgQVNTRVJUKG1fY29udGV4dCk7CiAgICAg
bV9jb250ZXh0R3JvdXAgPSBXZWJHTENvbnRleHRHcm91cDo6Y3JlYXRlKCk7CiAgICAgbV9jb250
ZXh0R3JvdXAtPmFkZENvbnRleHQodGhpcyk7CisgICAgCisgICAgbV9jb250ZXh0LT5zZXRXZWJH
TENvbnRleHQodGhpcyk7CiAKICAgICBtX21heFZpZXdwb3J0RGltc1swXSA9IG1fbWF4Vmlld3Bv
cnREaW1zWzFdID0gMDsKICAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4
dDNEOjpNQVhfVklFV1BPUlRfRElNUywgbV9tYXhWaWV3cG9ydERpbXMpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5o
CShyZXZpc2lvbiAxODA0NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQzRC5oCSh3b3JraW5nIGNvcHkpCkBAIC05OCw2ICs5OCw3IEBAIGNsYXNz
IEltYWdlU291cmNlOwogY2xhc3MgSW1hZ2VEYXRhOwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIElu
dFNpemU7CitjbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOwogI2lmIFVTRShDQUlSTykK
IGNsYXNzIFBsYXRmb3JtQ29udGV4dENhaXJvOwogI2VuZGlmCkBAIC03ODAsNiArNzgxLDcgQEAg
cHVibGljOgogI2VuZGlmCiAKICAgICBib29sIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIHZv
aWQgc2V0V2ViR0xDb250ZXh0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGJhc2UpIHsgbV93
ZWJnbENvbnRleHQgPSBiYXNlOyB9CiAKICAgICAvLyBXaXRoIG11bHRpc2FtcGxpbmcgb24sIGJs
aXQgZnJvbSBtdWx0aXNhbXBsZUZCTyB0byByZWd1bGFyIEZCTy4KICAgICB2b2lkIHByZXBhcmVU
ZXh0dXJlKCk7CkBAIC0xMTI4LDYgKzExMzAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYXJrQ29u
dGV4dENoYW5nZWQoKTsKICAgICB2b2lkIG1hcmtMYXllckNvbXBvc2l0ZWQoKTsKICAgICBib29s
IGxheWVyQ29tcG9zaXRlZCgpIGNvbnN0OworICAgIHZvaWQgZm9yY2VDb250ZXh0TG9zdCgpOwog
CiAgICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciosIERy
YXdpbmdCdWZmZXIqKTsKICAgICBQYXNzUmVmUHRyPEltYWdlRGF0YT4gcGFpbnRSZW5kZXJpbmdS
ZXN1bHRzVG9JbWFnZURhdGEoRHJhd2luZ0J1ZmZlciopOwpAQCAtMTI1Niw2ICsxMjU5LDcgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICBHcmFwaGljc0NvbnRleHQzRChBdHRyaWJ1dGVzLCBIb3N0
V2luZG93KiwgUmVuZGVyU3R5bGUgPSBSZW5kZXJPZmZzY3JlZW4pOwogICAgIHN0YXRpYyBpbnQg
bnVtQWN0aXZlQ29udGV4dHM7CisgICAgc3RhdGljIGludCBkcmF3Q291bnRlcjsKIAogICAgIC8v
IEhlbHBlciBmb3IgcGFja0ltYWdlRGF0YS9leHRyYWN0SW1hZ2VEYXRhL2V4dHJhY3RUZXh0dXJl
RGF0YSB3aGljaCBpbXBsZW1lbnQgcGFja2luZyBvZiBwaXhlbAogICAgIC8vIGRhdGEgaW50byB0
aGUgc3BlY2lmaWVkIE9wZW5HTCBkZXN0aW5hdGlvbiBmb3JtYXQgYW5kIHR5cGUuCkBAIC0xMjcw
LDYgKzEyNzQsOSBAQCBwcml2YXRlOgogICAgIC8vIGltcGxlbWVudGF0aW9uLgogICAgIHZvaWQg
dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5z
aW9uKTsKICAgICB2b2lkIHZhbGlkYXRlQXR0cmlidXRlcygpOworICAgIAorICAgIC8vIENhbGwg
dG8gbWFrZSBkdXJpbmcgZHJhdyBjYWxscyB0byBjaGVjayBvbiB0aGUgR1BVJ3Mgc3RhdHVzCisg
ICAgdm9pZCBjaGVja0dQVVN0YXR1cygpOwogCiAgICAgLy8gUmVhZCByZW5kZXJpbmcgcmVzdWx0
cyBpbnRvIGEgcGl4ZWwgYXJyYXkgd2l0aCB0aGUgc2FtZSBmb3JtYXQgYXMgdGhlCiAgICAgLy8g
YmFja2J1ZmZlci4KQEAgLTE0MzgsNiArMTQ0NSw4IEBAIHByaXZhdGU6CiAKICAgICBmcmllbmQg
Y2xhc3MgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmFw
aGljc0NvbnRleHQzRFByaXZhdGU+IG1fcHJpdmF0ZTsKKyAgICAKKyAgICBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlKiBtX3dlYmdsQ29udGV4dDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dDNEQ2Fpcm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwCShyZXZpc2lvbiAxODA0
NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHQzRENhaXJvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgyLDYgKzI4MiwxMCBAQCBib29s
IEdyYXBoaWNzQ29udGV4dDNEOjptYWtlQ29udGV4dEN1cnJlCiAgICAgcmV0dXJuIG1fcHJpdmF0
ZS0+bWFrZUNvbnRleHRDdXJyZW50KCk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNo
ZWNrR1BVU3RhdHVzKCkKK3sKK30KKwogUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBHcmFwaGlj
c0NvbnRleHQzRDo6cGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCgpCiB7CiAgICAgcmV0dXJuIG1f
cHJpdmF0ZS0+cGxhdGZvcm1Db250ZXh0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREVmbC5j
cHAJKHJldmlzaW9uIDE4MDQ3NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2VmbC9HcmFwaGljc0NvbnRleHQzREVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Myw2ICsx
ODMsMTAgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6bWFrZUNvbnRleHRDdXJyZQogICAgIHJl
dHVybiBtX3ByaXZhdGUtPm1ha2VDb250ZXh0Q3VycmVudCgpOwogfQogCit2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpjaGVja0dQVVN0YXR1cygpCit7Cit9CisKIGJvb2wgR3JhcGhpY3NDb250ZXh0
M0Q6OmlzR0xFUzJDb21wbGlhbnQoKSBjb25zdAogewogI2lmIFVTRShPUEVOR0xfRVNfMikKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQz
RE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvR3JhcGhpY3NDb250ZXh0M0RNYWMubW0JKHJldmlzaW9uIDE4MDQ3NikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5tbQkod29y
a2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpZiBQTEFURk9STShJT1MpCisjaW1wb3J0
ICJPcGVuR0xFU1NQSS5oIgogI2ltcG9ydCA8T3BlbkdMRVMvRVMyL2dsZXh0Lmg+CiAjaW1wb3J0
IDxPcGVuR0xFUy9FQUdMLmg+CiAjaW1wb3J0IDxPcGVuR0xFUy9FQUdMRHJhd2FibGUuaD4KQEAg
LTUyLDYgKzUzLDcgQEAKICNlbmRpZgogI2luY2x1ZGUgIldlYkdMTGF5ZXIuaCIKICNpbmNsdWRl
ICJXZWJHTE9iamVjdC5oIgorI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCIK
ICNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8cnVudGltZS9BcnJh
eUJ1ZmZlclZpZXcuaD4KICNpbmNsdWRlIDxydW50aW1lL0ludDMyQXJyYXkuaD4KQEAgLTYzLDcg
KzY1LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBpbnQgbWF4QWN0aXZlQ29udGV4
dHMgPSA2NDsKIGludCBHcmFwaGljc0NvbnRleHQzRDo6bnVtQWN0aXZlQ29udGV4dHMgPSAwOwot
Citjb25zdCBpbnQgY2hlY2tHUFVTdGF0dXNEcmF3SXRlcmF0aW9ucyA9IDU7CitpbnQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmRyYXdDb3VudGVyID0gMDsKKyAgICAKIC8vIEZJWE1FOiBUaGlzIGNsYXNz
IGlzIGN1cnJlbnRseSBlbXB0eSBvbiBNYWMsIGJ1dCB3aWxsIGdldCBwb3B1bGF0ZWQgYXMgCiAv
LyB0aGUgcmVzdHJ1Y3R1cmluZyBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjY5MDMgaXMgZG9uZQogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlIHsKQEAg
LTE0NSw2ICsxNDksNyBAQCBHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3Jh
CiAgICAgLCBtX211bHRpc2FtcGxlRGVwdGhTdGVuY2lsQnVmZmVyKDApCiAgICAgLCBtX211bHRp
c2FtcGxlQ29sb3JCdWZmZXIoMCkKICAgICAsIG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPEdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZT4odGhpcykpCisgICAgLCBtX3dlYmdsQ29udGV4dCgwKQog
ewogICAgIFVOVVNFRF9QQVJBTShob3N0V2luZG93KTsKICAgICBVTlVTRURfUEFSQU0ocmVuZGVy
U3R5bGUpOwpAQCAtMTk2LDYgKzIwMSwxNSBAQCBHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3ND
b250ZXh0M0QoR3JhCiAgICAgICAgIHJldHVybjsKIAogICAgIENHTEVycm9yIGVyciA9IENHTENy
ZWF0ZUNvbnRleHQocGl4ZWxGb3JtYXRPYmosIDAsICZtX2NvbnRleHRPYmopOworI2lmICgoUExB
VEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTAwMCkg
fHwgUExBVEZPUk0oSU9TKSkKKyAgICBHTGludCBhYm9ydE9uQmxhY2tsaXN0ID0gMDsKKyNpZiBQ
TEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMDAw
CisgICAgQ0dMU2V0UGFyYW1ldGVyKG1fY29udGV4dE9iaiwga0NHTENQQWJvcnRPbkdQVVJlc3Rh
cnRTdGF0dXNCbGFja2xpc3RlZCwgJmFib3J0T25CbGFja2xpc3QpOworI2VsaWYgUExBVEZPUk0o
SU9TKQorICAgIENHTFNldFBhcmFtZXRlcihtX2NvbnRleHRPYmosIGtFQUdMQ1BBYm9ydE9uR1BV
UmVzdGFydFN0YXR1c0JsYWNrbGlzdGVkLCAmYWJvcnRPbkJsYWNrbGlzdCk7CisjZW5kaWYKKyNl
bmRpZgorCiAgICAgQ0dMRGVzdHJveVBpeGVsRm9ybWF0KHBpeGVsRm9ybWF0T2JqKTsKICAgICAK
ICAgICBpZiAoZXJyICE9IGtDR0xOb0Vycm9yIHx8ICFtX2NvbnRleHRPYmopIHsKQEAgLTM1Myw2
ICszNjcsMzMgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6bWFrZUNvbnRleHRDdXJyZQogICAg
IHJldHVybiB0cnVlOwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjaGVja0dQVVN0YXR1
cygpCit7CisjaWYgKChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTAxMDAwKSB8fCBQTEFURk9STShJT1MpKQorICAgIGRyYXdDb3VudGVyID0gKGRy
YXdDb3VudGVyICsgMSkgJSBjaGVja0dQVVN0YXR1c0RyYXdJdGVyYXRpb25zOworICAgIGlmIChk
cmF3Q291bnRlcikKKyAgICAgICAgcmV0dXJuOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBHTGlu
dCByZXN0YXJ0U3RhdHVzID0gMDsKKyAgICBDR0xHZXRQYXJhbWV0ZXIocGxhdGZvcm1HcmFwaGlj
c0NvbnRleHQzRCgpLCBrQ0dMQ1BHUFVSZXN0YXJ0U3RhdHVzLCAmcmVzdGFydFN0YXR1cyk7Cisg
ICAgaWYgKHJlc3RhcnRTdGF0dXMgPT0ga0NHTENQR1BVUmVzdGFydFN0YXR1c0NhdXNlZCB8fCBy
ZXN0YXJ0U3RhdHVzID09IGtDR0xDUEdQVVJlc3RhcnRTdGF0dXNCbGFja2xpc3RlZCkgeworICAg
ICAgICBDR0xTZXRDdXJyZW50Q29udGV4dCgwKTsKKyAgICAgICAgQ0dMRGVzdHJveUNvbnRleHQo
cGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCgpKTsKKyAgICAgICAgZm9yY2VDb250ZXh0TG9zdCgp
OworICAgIH0KKyNlbGlmIFBMQVRGT1JNKElPUykKKyAgICBHTGludCByZXN0YXJ0U3RhdHVzID0g
MDsKKyAgICBFQUdMQ29udGV4dCogY3VycmVudENvbnRleHQgPSBzdGF0aWNfY2FzdDxFQUdMQ29u
dGV4dCo+KFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QoKSk7CisgICAgW2N1cnJlbnRDb250ZXh0
IGdldFBhcmFtZXRlcjprRUFHTENQR1BVUmVzdGFydFN0YXR1cyB0bzomcmVzdGFydFN0YXR1c107
CisgICAgaWYgKHJlc3RhcnRTdGF0dXMgPT0ga0VBR0xDUEdQVVJlc3RhcnRTdGF0dXNDYXVzZWQg
fHwgcmVzdGFydFN0YXR1cyA9PSBrRUFHTENQR1BVUmVzdGFydFN0YXR1c0JsYWNrbGlzdGVkKSB7
CisgICAgICAgIFtFQUdMQ29udGV4dCBzZXRDdXJyZW50Q29udGV4dDowXTsKKyAgICAgICAgW3N0
YXRpY19jYXN0PEVBR0xDb250ZXh0Kj4oY3VycmVudENvbnRleHQpIHJlbGVhc2VdOworICAgICAg
ICBmb3JjZUNvbnRleHRMb3N0KCk7CisgICAgfQorI2VuZGlmCisjZW5kaWYKK30KKwogI2lmIFBM
QVRGT1JNKElPUykKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmVuZFBhaW50KCkKIHsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJHTExheWVyLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJHTExheWVy
Lm1tCShyZXZpc2lvbiAxODA0NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvV2ViR0xMYXllci5tbQkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsOSBAQAogI2lm
ICFQTEFURk9STShJT1MpCiAjaW1wb3J0IDxPcGVuR0wvT3BlbkdMLmg+CiAjaW1wb3J0IDxPcGVu
R0wvZ2wuaD4KKyNlbHNlCisjaW1wb3J0ICJPcGVuR0xFU1NQSS5oIgorI2ltcG9ydCA8T3BlbkdM
RVMvRUFHTC5oPgogI2VuZGlmCiAjaW1wb3J0IDx3dGYvRmFzdE1hbGxvYy5oPgogI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgpAQCAtODMsNyArODYsNyBAQCAtKHZvaWQpZHJhd0luQ0dMQ29udGV4
dDooQ0dMQ29udGV4dE9iailnCiAgICAgX2NvbnRleHQtPnByZXBhcmVUZXh0dXJlKCk7CiAKICAg
ICBDR0xTZXRDdXJyZW50Q29udGV4dChnbENvbnRleHQpOwotCisgICAgCiAgICAgQ0dSZWN0IGZy
YW1lID0gW3NlbGYgZnJhbWVdOwogICAgIGZyYW1lLnNpemUud2lkdGggKj0gX2RldmljZVBpeGVs
UmF0aW87CiAgICAgZnJhbWUuc2l6ZS5oZWlnaHQgKj0gX2RldmljZVBpeGVsUmF0aW87CkBAIC0x
NjksOCArMTcyLDI1IEBAIC0gKHZvaWQpZGlzcGxheQogCiAjaWYgUExBVEZPUk0oSU9TKQogICAg
IF9jb250ZXh0LT5lbmRQYWludCgpOworICAgIEdMaW50IHJlc3RhcnRTdGF0dXMgPSAwOworICAg
IEVBR0xDb250ZXh0KiBjdXJyZW50Q29udGV4dCA9IF9jb250ZXh0LT5wbGF0Zm9ybUdyYXBoaWNz
Q29udGV4dDNEKCk7CisgICAgW2N1cnJlbnRDb250ZXh0IGdldFBhcmFtZXRlcjprRUFHTENQR1BV
UmVzdGFydFN0YXR1cyB0bzomcmVzdGFydFN0YXR1c107CisgICAgaWYgKHJlc3RhcnRTdGF0dXMg
PT0ga0VBR0xDUEdQVVJlc3RhcnRTdGF0dXNDYXVzZWQgfHwgcmVzdGFydFN0YXR1cyA9PSBrRUFH
TENQR1BVUmVzdGFydFN0YXR1c0JsYWNrbGlzdGVkKSB7CisgICAgICAgIFtFQUdMQ29udGV4dCBz
ZXRDdXJyZW50Q29udGV4dDowXTsKKyAgICAgICAgW3N0YXRpY19jYXN0PEVBR0xDb250ZXh0Kj4o
Y3VycmVudENvbnRleHQpIHJlbGVhc2VdOworICAgICAgICBfY29udGV4dC0+Zm9yY2VDb250ZXh0
TG9zdCgpOworICAgIH0KICNlbHNlCiAgICAgW3N1cGVyIGRpc3BsYXldOworI2lmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMDAwCisgICAgR0xpbnQgcmVzdGFydFN0YXR1
cyA9IDA7CisgICAgQ0dMR2V0UGFyYW1ldGVyKF9jb250ZXh0LT5wbGF0Zm9ybUdyYXBoaWNzQ29u
dGV4dDNEKCksIGtDR0xDUEdQVVJlc3RhcnRTdGF0dXMsICZyZXN0YXJ0U3RhdHVzKTsKKyAgICBp
ZiAocmVzdGFydFN0YXR1cyA9PSBrQ0dMQ1BHUFVSZXN0YXJ0U3RhdHVzQ2F1c2VkIHx8IHJlc3Rh
cnRTdGF0dXMgPT0ga0NHTENQR1BVUmVzdGFydFN0YXR1c0JsYWNrbGlzdGVkKSB7CisgICAgICAg
IENHTFNldEN1cnJlbnRDb250ZXh0KDApOworICAgICAgICBDR0xEZXN0cm95Q29udGV4dChfY29u
dGV4dC0+cGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCgpKTsKKyAgICAgICAgX2NvbnRleHQtPmZv
cmNlQ29udGV4dExvc3QoKTsKKyAgICB9CisjZW5kaWYKICNlbmRpZgogICAgIF9jb250ZXh0LT5t
YXJrTGF5ZXJDb21wb3NpdGVkKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHQzRE9wZW5HTENvbW1vbi5jcHAJKHJldmlzaW9uIDE4MDQ3NikKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1v
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJJbnRTaXpl
LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlRlbXBvcmFyeU9wZW5HTFNldHRp
bmcuaCIKKyNpbmNsdWRlICJXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgiCiAjaW5jbHVkZSA8
Y3N0cmluZz4KICNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8cnVu
dGltZS9BcnJheUJ1ZmZlclZpZXcuaD4KQEAgLTc1LDYgKzc2LDcgQEAKICNlbmRpZgogI2VuZGlm
CiAKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgU2hhZGVyTmFtZUhhc2gqIGN1cnJl
bnROYW1lSGFzaE1hcEZvclNoYWRlciA9IG51bGxwdHI7CkBAIC02ODMsMTIgKzY4NSwxNCBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkcmF3QXJyYXlzKEdDM0RlCiB7CiAgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7CiAgICAgOjpnbERyYXdBcnJheXMobW9kZSwgZmlyc3QsIGNvdW50KTsKKyAg
ICBjaGVja0dQVVN0YXR1cygpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkcmF3RWxl
bWVudHMoR0MzRGVudW0gbW9kZSwgR0MzRHNpemVpIGNvdW50LCBHQzNEZW51bSB0eXBlLCBHQzNE
aW50cHRyIG9mZnNldCkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICA6OmdsRHJh
d0VsZW1lbnRzKG1vZGUsIGNvdW50LCB0eXBlLCByZWludGVycHJldF9jYXN0PEdMdm9pZCo+KHN0
YXRpY19jYXN0PGludHB0cl90PihvZmZzZXQpKSk7CisgICAgY2hlY2tHUFVTdGF0dXMoKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZW5hYmxlKEdDM0RlbnVtIGNhcCkKQEAgLTE3NjMs
NiArMTc2NywxMiBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpsYXllckNvbXBvc2l0ZWQoCiAg
ICAgcmV0dXJuIG1fbGF5ZXJDb21wb3NpdGVkOwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4dDNE
Ojpmb3JjZUNvbnRleHRMb3N0KCkKK3sKKyAgICBpZiAobV93ZWJnbENvbnRleHQpCisgICAgICAg
IG1fd2ViZ2xDb250ZXh0LT5mb3JjZUxvc3RDb250ZXh0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OlJlYWxMb3N0Q29udGV4dCk7Cit9CisKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnRleElt
YWdlMkREaXJlY3QoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEaW50IGJv
cmRlciwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMp
CiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0M0RXaW4uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHQzRFdp
bi5jcHAJKHJldmlzaW9uIDE4MDQ3NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9HcmFwaGljc0NvbnRleHQzRFdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3OCw2
ICsxNzgsMTAgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6bWFrZUNvbnRleHRDdXJyZQogICAg
IHJldHVybiBtX3ByaXZhdGUtPm1ha2VDb250ZXh0Q3VycmVudCgpOwogfQogCit2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpjaGVja0dQVVN0YXR1cygpCit7Cit9CisKIFBsYXRmb3JtR3JhcGhpY3ND
b250ZXh0M0QgR3JhcGhpY3NDb250ZXh0M0Q6OnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QoKQog
ewogICAgIHJldHVybiBtX3ByaXZhdGUtPnBsYXRmb3JtQ29udGV4dCgpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vc3BpL2lvcy9PcGVuR0xFU1NQSS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9pb3MvT3BlbkdMRVNTUEkuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9pb3MvT3BlbkdMRVNTUEkuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8Rm91bmRhdGlv
bi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgorCisjaWYgVVNFKEFQUExF
X0lOVEVSTkFMX1NESykKKworI2ltcG9ydCA8T3BlbkdMRVMvRUFHTFByaXZhdGUuaD4KKworI2Vs
c2UKKwordHlwZWRlZiB1aW50MzJfdCBFQUdMQ29udGV4dFBhcmFtZXRlcjsKKworZW51bSB7Cisg
ICAga0VBR0xDUEdQVVJlc3RhcnRTdGF0dXNOb25lICAgICAgICA9IDAsIC8qIGNvbnRleHQgaGFz
IG5vdCBjYXVzZWQgcmVjZW50IEdQVSByZXN0YXJ0ICovCisgICAga0VBR0xDUEdQVVJlc3RhcnRT
dGF0dXNDYXVzZWQgICAgICA9IDEsIC8qIGNvbnRleHQgY2F1c2VkIHJlY2VudCBHUFUgcmVzdGFy
dCAoY2xlYXIgb24gcXVlcnkpICovCisgICAga0VBR0xDUEdQVVJlc3RhcnRTdGF0dXNCbGFja2xp
c3RlZCA9IDIsIC8qIGNvbnRleHQgaXMgYmVpbmcgaWdub3JlZCBmb3IgZXhjZXNzaXZlIEdQVSBy
ZXN0YXJ0cyAqLworfTsKKworLyogKHJlYWQtb25seSkgY29udGV4dCBjYXVzZWQgR1BVIGhhbmcv
Y3Jhc2gsIHJlcXVpcmluZyBhIHJlc3RhcnQgKHNlZSBFQUdMR1BHUFVSZXN0YXJ0U3RhdHVzKSAq
LworI2RlZmluZSBrRUFHTENQR1BVUmVzdGFydFN0YXR1cyAgICAgICAgICAgICAgICAgICAoKEVB
R0xDb250ZXh0UGFyYW1ldGVyKTMxNykKKy8qIChyZWFkLXdyaXRlKSBob3cgdG8gcmVhY3QgdG8g
YmVpbmcgYmxhY2tsaXN0ZWQgZm9yIGNhdXNpbmcgZXhjZXNzaXZlIHJlc3RhcnRzIChkZWZhdWx0
IHRvIDEpICovCisjZGVmaW5lIGtFQUdMQ1BBYm9ydE9uR1BVUmVzdGFydFN0YXR1c0JsYWNrbGlz
dGVkICgoRUFHTENvbnRleHRQYXJhbWV0ZXIpMzE4KQorLyogKHJlYWQtb25seSkgZG9lcyBkcml2
ZXIgc3VwcG9ydCBhdXRvLXJlc3RhcnQgb2YgR1BVIG9uIGhhbmcvY3Jhc2g/ICovCisjZGVmaW5l
IGtFQUdMQ1BTdXBwb3J0R1BVUmVzdGFydCAgICAgICAgICAgICAgICAgICgoRUFHTENvbnRleHRQ
YXJhbWV0ZXIpMzE5KQorLyogKHJlYWQtb25seSkgZG9lcyBkcml2ZXIvR1BVIHN1cHBvcnQgc2Vw
YXJhdGUgYWRkcmVzcyBzcGFjZSBwZXIgY29udGV4dD8gKi8KKyNkZWZpbmUga0VBR0xDUFN1cHBv
cnRTZXBhcmF0ZUFkZHJlc3NTcGFjZSAgICAgICAgKChFQUdMQ29udGV4dFBhcmFtZXRlcikzMjAp
CisKK0BpbnRlcmZhY2UgRUFHTENvbnRleHQgKEVBR0xQcml2YXRlKQorLSAoTlNVSW50ZWdlcilz
ZXRQYXJhbWV0ZXI6KEVBR0xDb250ZXh0UGFyYW1ldGVyKXBuYW1lIHRvOihpbnQzMl90ICopcGFy
YW1zOworLSAoTlNVSW50ZWdlcilnZXRQYXJhbWV0ZXI6KEVBR0xDb250ZXh0UGFyYW1ldGVyKXBu
YW1lIHRvOihpbnQzMl90ICopcGFyYW1zOworQGVuZAorI2VuZGlmCg==
</data>
<flag name="review"
          id="272200"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>