<?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>140474</bug_id>
          
          <creation_ts>2015-01-14 15:52:46 -0800</creation_ts>
          <short_desc>Add a way to collect scrolling performance data (viewport tile coverage) with UI-side compositing</short_desc>
          <delta_ts>2015-01-20 10:41:02 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>ossy</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1061373</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-01-14 15:52:46 -0800</bug_when>
    <thetext>Add a way to collect scrolling performance data (viewport tile coverage) with UI-side compositing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061435</commentid>
    <comment_count>1</comment_count>
      <attachid>244670</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-01-14 17:51:35 -0800</bug_when>
    <thetext>Created attachment 244670
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061528</commentid>
    <comment_count>2</comment_count>
      <attachid>244670</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-01-15 04:03:55 -0800</bug_when>
    <thetext>Comment on attachment 244670
Patch

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

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:58
&gt; +#include &quot;RemoteLayerTreeScrollingPerformanceData.h&quot;

Please move this include to the &quot;#if PLATFORM(COCOA)&quot; block 
_before_ landing not to break the EFL/GTK builds. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061853</commentid>
    <comment_count>3</comment_count>
      <attachid>244774</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-01-16 11:13:59 -0800</bug_when>
    <thetext>Created attachment 244774
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061854</commentid>
    <comment_count>4</comment_count>
      <attachid>244775</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-01-16 11:14:48 -0800</bug_when>
    <thetext>Created attachment 244775
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061868</commentid>
    <comment_count>5</comment_count>
      <attachid>244775</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-01-16 11:36:06 -0800</bug_when>
    <thetext>Comment on attachment 244775
Patch

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

&gt; Source/WebCore/platform/graphics/ca/TileController.cpp:45
&gt; +    return &quot;TileGrid Container Layer&quot;;

While this is not perf-critical code, I know there&apos;s a better way to make a String from a literal (but I don&apos;t know what it is).

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:849
&gt; +- (WebCore::FloatRect)visibleRectInScreenCoordinates

screen? I see no screen here.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:930
&gt; +        scrollPerfData-&gt;didCommitLayerTree([self visibleRectInScreenCoordinates]);

dot notation?

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:1391
&gt; +        scrollPerfData-&gt;didScroll([self visibleRectInScreenCoordinates]);

dot notation?

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:2128
&gt; +    return nil;
&gt; +#else
&gt; +    return nil;
&gt; +#endif

This can be simplified.

&gt; Source/WebKit2/UIProcess/Cocoa/RemoteLayerTreeScrollingPerformanceData.h:45
&gt; +    NSArray* data(); // Array of [ time, event type, unfilled pixel count ]

star&apos;s on the wrong side

&gt; Source/WebKit2/UIProcess/Cocoa/RemoteLayerTreeScrollingPerformanceData.h:50
&gt; +    RemoteLayerTreeDrawingAreaProxy&amp; m_drawingArea;

This interspersion of type declarations and function declarations and members is weird. Can this be sorted?

&gt; Source/WebKit2/UIProcess/Cocoa/RemoteLayerTreeScrollingPerformanceData.mm:78
&gt; +    NSMutableArray* dataArray = [NSMutableArray arrayWithCapacity:m_blankPixelCounts.size()];

star&apos;s on the wrong side!

&gt; Source/WebKit2/UIProcess/Cocoa/RemoteLayerTreeScrollingPerformanceData.mm:90
&gt; +static CALayer *findTileGridContainerLayer(CALayer *layer)

Should we keep its id instead of using names and crawling the tree?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1062798</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-01-20 10:41:02 -0800</bug_when>
    <thetext>https://trac.webkit.org/r178723</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244670</attachid>
            <date>2015-01-14 17:51:35 -0800</date>
            <delta_ts>2015-01-16 11:13:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140474-20150114175141.patch</filename>
            <type>text/plain</type>
            <size>32280</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc4MTIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjg2NTc3ZGNlZjU5Y2Uz
Y2I2MjgxNjE4NTY0Zjc2MDcxNGUxZjk2Yi4uOTNjZDliY2U3ODQwNzM0OTg4ZDIzMzYwNWI2Mzhk
ZjQyNjdjMGY2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE1LTAxLTE0ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIHdheSB0
byBjb2xsZWN0IHNjcm9sbGluZyBwZXJmb3JtYW5jZSBkYXRhICh2aWV3cG9ydCB0aWxlIGNvdmVy
YWdlKSB3aXRoIFVJLXNpZGUgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MDQ3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhY2Nlc3NvcnMgZm9yIHN0YW5kYXJkIG5hbWVzIGZv
ciBjb250YWluZXIgQ0FMYXllciBmb3IgZWFjaCBvZiB0aGUgdGlsZSBncmlkcywKKyAgICAgICAg
YW5kIHdoZW4gdGlsZSBncmlkcyBhcmUgc3dhcHBlZCwgdXBkYXRlIHRob3NlIG5hbWVzIGFzIGFw
cHJvcHJpYXRlLgorICAgICAgICAKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUaWxlQ29udHJvbGxlcjo6dGlsZUdyaWRDb250YWluZXJMYXllck5hbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6Onpvb21lZE91dFRpbGVHcmlkQ29udGFpbmVyTGF5
ZXJOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDb250cm9sbGVyOjpzZXRDb250ZW50c1Nj
YWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVHcmlkLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRpbGVHcmlkOjpUaWxlR3JpZCk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlR3JpZDo6
c2V0SXNab29tZWRPdXRUaWxlR3JpZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
VGlsZUdyaWQuaDoKKwogMjAxNS0wMS0wOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgogCiAgICAgICAgIFVuZnJpZW5kIFN0eWxlUmVzb2x2ZXIgYW5kIFN0eWxlQnVpbGRlckN1c3Rv
bQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCmluZGV4IGEyYTAyNjQzMzUyMmM1YzRkZWM3N2Q5MDVhMDY4NDQ1MjE3MTAzNjIu
LmI4YWUxM2FmNjY2OTFlYjNkZTlhZmQ3NTEwNGU5ZTRiMTMwOTkzNWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw0NyBAQAorMjAxNS0wMS0xNCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFw
cGxlLmNvbT4KKworICAgICAgICBBZGQgYSB3YXkgdG8gY29sbGVjdCBzY3JvbGxpbmcgcGVyZm9y
bWFuY2UgZGF0YSAodmlld3BvcnQgdGlsZSBjb3ZlcmFnZSkgd2l0aCBVSS1zaWRlIGNvbXBvc2l0
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDA0
NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAg
ICAgIEFkZCBhIHByaXZhdGUgbWV0aG9kIHRvIGVuYWJsZSBzY3JvbGxpbmcgZGF0YSBjb2xsZWN0
aW9uIHRvIFdLV2ViVmlldy4gV2hlbiBlbmFibGVkLCBjcmVhdGUKKyAgICAgICAgYSBSZW1vdGVM
YXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEgb2JqZWN0IHRoYXQgY29sbGVjdHMgImJs
YW5rIHBpeGVsIiBkYXRhIG9uCisgICAgICAgIGV2ZXJ5IGxheWVyIHRyZWUgY29tbWl0IGFuZCBz
Y3JvbGwsIGFuZCBzdG9yZXMgdGhlbSBpbiBhIHZlY3Rvci4gQSBzZWNvbmQgU1BJIGNhbGwKKyAg
ICAgICAgYWxsb3dzIHJldHJpZXZhbCBvZiBhbiBOU0FycmF5IG9mIHRoaXMgZGF0YS4KKyAgICAg
ICAgCisgICAgICAgIFRvIGFsbG93IFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNl
RGF0YSB0byBmaW5kIHRoZSBjb3JyZWN0IGxheWVyIHdoaWNoCisgICAgICAgIGNvbnRhaW5zIHRo
ZSBtYWluIHRpbGUgZ3JpZCwgd2Ugc2V0IGEgbGF5ZXIgbmFtZSBvbiB0aGUgYXBwcm9wcmlhdGUg
bGF5ZXIgKGV2ZW4KKyAgICAgICAgaW4gcmVsZWFzZSBidWlsZHMpLgorCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyB2aXNp
YmxlUmVjdEluU2NyZWVuQ29vcmRpbmF0ZXNdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9kaWRD
b21taXRMYXllclRyZWU6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBzY3JvbGxWaWV3RGlkU2Ny
b2xsOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldFNjcm9sbFBlcmZvcm1hbmNlRGF0YUNv
bGxlY3Rpb25FbmFibGVkOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Njcm9sbFBlcmZvcm1h
bmNlRGF0YUNvbGxlY3Rpb25FbmFibGVkXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2Nyb2xs
UGVyZm9ybWFuY2VEYXRhXSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1JlbW90ZUxheWVyVHJlZVNj
cm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhOjpCbGFua1BpeGVsQ291bnQ6OkJsYW5r
UGl4ZWxDb3VudCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1JlbW90ZUxheWVyVHJlZVNj
cm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YTo6UmVtb3RlTGF5ZXJUcmVlU2Nyb2xs
aW5nUGVyZm9ybWFuY2VEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlU2Ny
b2xsaW5nUGVyZm9ybWFuY2VEYXRhOjp+UmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFu
Y2VEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9y
bWFuY2VEYXRhOjpkaWRDb21taXRMYXllclRyZWUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVM
YXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGE6OmRpZFNjcm9sbCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YTo6QmxhbmtQaXhl
bENvdW50OjpjYW5Db2FsZXNjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVNj
cm9sbGluZ1BlcmZvcm1hbmNlRGF0YTo6YXBwZW5kQmxhbmtQaXhlbENvdW50KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhOjpkYXRhKToK
KyAgICAgICAgKFdlYktpdDo6ZmluZFRpbGVHcmlkQ29udGFpbmVyTGF5ZXIpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGE6OmJsYW5rUGl4
ZWxDb3VudCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpzZXRTY3JvbGxQZXJmb3JtYW5jZURhdGFDb2xsZWN0aW9uRW5hYmxlZCk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnNjcm9sbFBlcmZvcm1hbmNlRGF0YUNvbGxlY3Rpb25FbmFibGVkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEpOgor
ICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxNS0wMS0w
OCAgR3dhbmcgWW9vbiBId2FuZyAgPHlvb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBbVGhyZWFk
ZWRDb21wb3NpdG9yXSBVcGRhdGUgYWN0aXZlIGFuaW1hdGlvbnMgd2l0aG91dCBpbnRlcnJ1cHRp
bmcgdGhlIG1haW4tdGhyZWFkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDQ0ZDBjOWM1YzczNTM0
YWQ2NmE3Y2YxYzcyYWQ2MTA1ZDc4OTM4YzkuLjJiMGM4YzBjZGQwZjUyMmE0M2JhY2Q3Njg1NDhl
MmVhYTllNDAyMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC00NjgsNiArNDY4LDcgQEAgX19a
TjdXZWJDb3JlMTRUaWxlQ29udHJvbGxlcjIxc2V0QWNjZWxlcmF0ZXNEcmF3aW5nRWIKIF9fWk43
V2ViQ29yZTE0VGlsZUNvbnRyb2xsZXIyMXNldE5lZWRzRGlzcGxheUluUmVjdEVSS05TXzdJbnRS
ZWN0RQogX19aTjdXZWJDb3JlMTRUaWxlQ29udHJvbGxlcjIzc2V0VGlsZURlYnVnQm9yZGVyQ29s
b3JFTlNfNUNvbG9yRQogX19aTjdXZWJDb3JlMTRUaWxlQ29udHJvbGxlcjIzc2V0VGlsZURlYnVn
Qm9yZGVyV2lkdGhFZgorX19aTjdXZWJDb3JlMTRUaWxlQ29udHJvbGxlcjI2dGlsZUdyaWRDb250
YWluZXJMYXllck5hbWVFdgogX19aTjdXZWJDb3JlMTRUaWxlQ29udHJvbGxlcjI3dGlsZUNhY2hl
TGF5ZXJCb3VuZHNDaGFuZ2VkRXYKIF9fWk43V2ViQ29yZTE0VGlsZUNvbnRyb2xsZXJDMUVQTlNf
MTVQbGF0Zm9ybUNBTGF5ZXJFCiBfX1pON1dlYkNvcmUxNGFyZVJhbmdlc0VxdWFsRVBLTlNfNVJh
bmdlRVMyXwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
VGlsZUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
VGlsZUNvbnRyb2xsZXIuY3BwCmluZGV4IDNkZjgwM2M4YWFkNzAwYTQzMzI0N2FlNWNhNmQxNmNm
YjMxZThjMTUuLjc3NjlkNmM0MDY2YjkyODI3ZGVkN2MyNzgwMTNjMzgzNjlhMTViNzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJv
bGxlci5jcHAKQEAgLTQwLDYgKzQwLDE2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorU3Ry
aW5nIFRpbGVDb250cm9sbGVyOjp0aWxlR3JpZENvbnRhaW5lckxheWVyTmFtZSgpCit7CisgICAg
cmV0dXJuICJUaWxlR3JpZCBDb250YWluZXIgTGF5ZXIiOworfQorCitTdHJpbmcgVGlsZUNvbnRy
b2xsZXI6Onpvb21lZE91dFRpbGVHcmlkQ29udGFpbmVyTGF5ZXJOYW1lKCkKK3sKKyAgICByZXR1
cm4gIlpvb21lZCBPdXQgVGlsZUdyaWQgQ29udGFpbmVyIExheWVyIjsKK30KKwogVGlsZUNvbnRy
b2xsZXI6OlRpbGVDb250cm9sbGVyKFBsYXRmb3JtQ0FMYXllciogcm9vdFBsYXRmb3JtTGF5ZXIp
CiAgICAgOiBtX3RpbGVDYWNoZUxheWVyKHJvb3RQbGF0Zm9ybUxheWVyKQogICAgICwgbV90aWxl
R3JpZChzdGQ6Om1ha2VfdW5pcXVlPFRpbGVHcmlkPigqdGhpcykpCkBAIC0xMTMsMTIgKzEyMywx
NCBAQCB2b2lkIFRpbGVDb250cm9sbGVyOjpzZXRDb250ZW50c1NjYWxlKGZsb2F0IHNjYWxlKQog
CiAgICAgaWYgKG1fem9vbWVkT3V0VGlsZUdyaWQgJiYgbV96b29tZWRPdXRUaWxlR3JpZC0+c2Nh
bGUoKSA9PSBzY2FsZSkgewogICAgICAgICBtX3RpbGVHcmlkID0gV1RGOjptb3ZlKG1fem9vbWVk
T3V0VGlsZUdyaWQpOworICAgICAgICBtX3RpbGVHcmlkLT5zZXRJc1pvb21lZE91dFRpbGVHcmlk
KGZhbHNlKTsKICAgICAgICAgbV90aWxlR3JpZC0+cmV2YWxpZGF0ZVRpbGVzKDApOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKG1fem9vbWVkT3V0Q29udGVudHNTY2FsZSAmJiBt
X3pvb21lZE91dENvbnRlbnRzU2NhbGUgPT0gdGlsZUdyaWQoKS5zY2FsZSgpICYmIHRpbGVHcmlk
KCkuc2NhbGUoKSAhPSBzY2FsZSAmJiAhbV9oYXNUaWxlc1dpdGhUZW1wb3JhcnlTY2FsZUZhY3Rv
cikgewogICAgICAgICBtX3pvb21lZE91dFRpbGVHcmlkID0gV1RGOjptb3ZlKG1fdGlsZUdyaWQp
OworICAgICAgICBtX3pvb21lZE91dFRpbGVHcmlkLT5zZXRJc1pvb21lZE91dFRpbGVHcmlkKHRy
dWUpOwogICAgICAgICBtX3RpbGVHcmlkID0gc3RkOjptYWtlX3VuaXF1ZTxUaWxlR3JpZD4oKnRo
aXMpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvVGlsZUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL1RpbGVDb250cm9sbGVyLmgKaW5kZXggN2VjMTgwMGQ3MDgxOGJiNjlkN2Q2MWVlNTg1MThi
MGJlNzU5NjFhZi4uZmQ2ZjBiNjJkZjdmODQwZjA5YmYxZDkwMTM4MTU1MDY2MDU4ZTE1MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xs
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJv
bGxlci5oCkBAIC01NCw2ICs1NCw5IEBAIGNsYXNzIFRpbGVDb250cm9sbGVyIGZpbmFsIDogcHVi
bGljIFRpbGVkQmFja2luZyB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQg
VGlsZUNvbnRyb2xsZXIoUGxhdGZvcm1DQUxheWVyKik7CiAgICAgflRpbGVDb250cm9sbGVyKCk7
CisgICAgCisgICAgc3RhdGljIFN0cmluZyB0aWxlR3JpZENvbnRhaW5lckxheWVyTmFtZSgpOwor
ICAgIHN0YXRpYyBTdHJpbmcgem9vbWVkT3V0VGlsZUdyaWRDb250YWluZXJMYXllck5hbWUoKTsK
IAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdGlsZUNhY2hlTGF5ZXJCb3VuZHNDaGFuZ2VkKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVH
cmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVHcmlkLmNw
cAppbmRleCBkNTFlMGIzZWY5NzIyMTNmNzE0NTVmMmJhNDVmZGE4MWYyNzg3ZmMzLi5kMjEzNDNj
Y2ZhNWYxNzIzZTA3YmNkNmYwZWM3ZDZhM2RkYzE1M2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUdyaWQuY3BwCkBAIC00NSw5ICs0NSw3IEBAIFRp
bGVHcmlkOjpUaWxlR3JpZChUaWxlQ29udHJvbGxlciYgY29udHJvbGxlcikKICAgICAsIG1fc2Nh
bGUoMSkKICAgICAsIG1fY29ob3J0UmVtb3ZhbFRpbWVyKCp0aGlzLCAmVGlsZUdyaWQ6OmNvaG9y
dFJlbW92YWxUaW1lckZpcmVkKQogewotI2lmbmRlZiBOREVCVUcKLSAgICBtX2NvbnRhaW5lckxh
eWVyLmdldCgpLnNldE5hbWUoIlRpbGVHcmlkIENvbnRhaW5lciBMYXllciIpOwotI2VuZGlmCisg
ICAgbV9jb250YWluZXJMYXllci5nZXQoKS5zZXROYW1lKFRpbGVDb250cm9sbGVyOjp0aWxlR3Jp
ZENvbnRhaW5lckxheWVyTmFtZSgpKTsKIH0KIAogVGlsZUdyaWQ6On5UaWxlR3JpZCgpCkBAIC01
OCw2ICs1NiwxNCBAQCBUaWxlR3JpZDo6flRpbGVHcmlkKCkKICAgICAgICAgdGlsZS5sYXllci0+
c2V0T3duZXIobnVsbHB0cik7CiB9CiAKK3ZvaWQgVGlsZUdyaWQ6OnNldElzWm9vbWVkT3V0VGls
ZUdyaWQoYm9vbCBpc1pvb21lZE91dEdyaWQpCit7CisgICAgaWYgKGlzWm9vbWVkT3V0R3JpZCkK
KyAgICAgICAgbV9jb250YWluZXJMYXllci5nZXQoKS5zZXROYW1lKFRpbGVDb250cm9sbGVyOjp6
b29tZWRPdXRUaWxlR3JpZENvbnRhaW5lckxheWVyTmFtZSgpKTsKKyAgICBlbHNlCisgICAgICAg
IG1fY29udGFpbmVyTGF5ZXIuZ2V0KCkuc2V0TmFtZShUaWxlQ29udHJvbGxlcjo6dGlsZUdyaWRD
b250YWluZXJMYXllck5hbWUoKSk7Cit9CisKIHZvaWQgVGlsZUdyaWQ6OnNldFNjYWxlKGZsb2F0
IHNjYWxlKQogewogICAgIG1fc2NhbGUgPSBzY2FsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVHcmlkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9UaWxlR3JpZC5oCmluZGV4IGM1OWFlMDk5MmVmYjMyZWI1OTM4NDk5
MWQzN2U2ZTdlNmJhMWU0NTEuLjgyODU5MjQwNTlhZDgwNTFlODFmYzA1MWQwNTExY2RlNzZiZTlm
YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVH
cmlkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUdyaWQu
aApAQCAtNTMsNiArNTMsOCBAQCBwdWJsaWM6CiAKICAgICBQbGF0Zm9ybUNBTGF5ZXImIGNvbnRh
aW5lckxheWVyKCkgeyByZXR1cm4gbV9jb250YWluZXJMYXllcjsgfQogCisgICAgdm9pZCBzZXRJ
c1pvb21lZE91dFRpbGVHcmlkKGJvb2wpOworCiAgICAgdm9pZCBzZXRTY2FsZShmbG9hdCk7CiAg
ICAgZmxvYXQgc2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3NjYWxlOyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggNjg1OWY3NzY5
Yzc0Y2RhZTQ1NTMxNDY2NDAxMDY1ODMzY2I1Yzc3Yi4uZDViNmM4YmI0MTYyMWMzNWM0MWE0YTFk
YmRkMmRjZDliMmE1ZWJjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0KQEAgLTM0LDYgKzM0LDcgQEAKICNpbXBvcnQgIkZpbmRDbGllbnQu
aCIKICNpbXBvcnQgIkxlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5oIgogI2ltcG9ydCAiTmF2aWdh
dGlvblN0YXRlLmgiCisjaW1wb3J0ICJSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5j
ZURhdGEuaCIKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmgiCiAjaW1wb3J0
ICJSZW1vdGVPYmplY3RSZWdpc3RyeS5oIgogI2ltcG9ydCAiUmVtb3RlT2JqZWN0UmVnaXN0cnlN
ZXNzYWdlcy5oIgpAQCAtODU2LDYgKzg1NywxNSBAQCBzdGF0aWMgdm9pZCBjaGFuZ2VDb250ZW50
T2Zmc2V0Qm91bmRlZEluVmFsaWRSYW5nZShVSVNjcm9sbFZpZXcgKnNjcm9sbFZpZXcsIFdlYgog
ICAgIHNjcm9sbFZpZXcuY29udGVudE9mZnNldCA9IGNvbnRlbnRPZmZzZXRCb3VuZGVkSW5WYWxp
ZFJhbmdlKHNjcm9sbFZpZXcsIGNvbnRlbnRPZmZzZXQpOwogfQogCistIChXZWJDb3JlOjpGbG9h
dFJlY3QpdmlzaWJsZVJlY3RJblNjcmVlbkNvb3JkaW5hdGVzCit7CisgICAgV2ViQ29yZTo6Rmxv
YXRSZWN0IGJvdW5kcyA9IHNlbGYuYm91bmRzOworICAgIGJvdW5kcy5tb3ZlQnkoW19zY3JvbGxW
aWV3IGNvbnRlbnRPZmZzZXRdKTsKKyAgICBXZWJDb3JlOjpGbG9hdFJlY3QgY29udGVudFZpZXdC
b3VuZHMgPSBbX2NvbnRlbnRWaWV3IGJvdW5kc107CisgICAgYm91bmRzLmludGVyc2VjdChjb250
ZW50Vmlld0JvdW5kcyk7CisgICAgcmV0dXJuIGJvdW5kczsKK30KKwogLy8gV2ViQ29yZSBzdG9y
ZXMgdGhlIHBhZ2Ugc2NhbGUgZmFjdG9yIGFzIGZsb2F0IGluc3RlYWQgb2YgZG91YmxlLiBXaGVu
IHdlIGdldCBhIHNjYWxlIGZyb20gV2ViQ29yZSwKIC8vIHdlIG5lZWQgdG8gaWdub3JlIGRpZmZl
cmVuY2VzIHRoYXQgYXJlIHdpdGhpbiBhIHNtYWxsIHJvdW5kaW5nIGVycm9yIG9uIGZsb2F0cy4K
IHN0YXRpYyBpbmxpbmUgYm9vbCBhcmVFc3NlbnRpYWxseUVxdWFsQXNGbG9hdChmbG9hdCBhLCBm
bG9hdCBiKQpAQCAtOTI2LDYgKzkzNiw5IEBAIC0gKHZvaWQpX2RpZENvbW1pdExheWVyVHJlZToo
Y29uc3QgV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbiYpbGF5ZXJUcmVlCiAgICAg
ICAgIH0KICAgICAgICAgW3NlbGYgX3VwZGF0ZVZpc2libGVDb250ZW50UmVjdHNdOwogICAgIH0K
KyAgICAKKyAgICBpZiAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5j
ZURhdGEqIHNjcm9sbFBlcmZEYXRhID0gX3BhZ2UtPnNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YSgp
KQorICAgICAgICBzY3JvbGxQZXJmRGF0YS0+ZGlkQ29tbWl0TGF5ZXJUcmVlKFtzZWxmIHZpc2li
bGVSZWN0SW5TY3JlZW5Db29yZGluYXRlc10pOwogfQogCiAtICh2b2lkKV9keW5hbWljVmlld3Bv
cnRVcGRhdGVDaGFuZ2VkVGFyZ2V0VG9TY2FsZTooZG91YmxlKW5ld1NjYWxlIHBvc2l0aW9uOihD
R1BvaW50KW5ld1Njcm9sbFBvc2l0aW9uIG5leHRWYWxpZExheWVyVHJlZVRyYW5zYWN0aW9uSUQ6
KHVpbnQ2NF90KW5leHRWYWxpZExheWVyVHJlZVRyYW5zYWN0aW9uSUQKQEAgLTEzODQsNiArMTM5
Nyw5IEBAIC0gKHZvaWQpc2Nyb2xsVmlld0RpZFNjcm9sbDooVUlTY3JvbGxWaWV3ICopc2Nyb2xs
VmlldwogICAgICAgICBbX2N1c3RvbUNvbnRlbnRWaWV3IHNjcm9sbFZpZXdEaWRTY3JvbGw6KFVJ
U2Nyb2xsVmlldyAqKXNjcm9sbFZpZXddOwogCiAgICAgW3NlbGYgX3VwZGF0ZVZpc2libGVDb250
ZW50UmVjdHNdOworICAgIAorICAgIGlmIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVNjcm9sbGlu
Z1BlcmZvcm1hbmNlRGF0YSogc2Nyb2xsUGVyZkRhdGEgPSBfcGFnZS0+c2Nyb2xsaW5nUGVyZm9y
bWFuY2VEYXRhKCkpCisgICAgICAgIHNjcm9sbFBlcmZEYXRhLT5kaWRTY3JvbGwoW3NlbGYgdmlz
aWJsZVJlY3RJblNjcmVlbkNvb3JkaW5hdGVzXSk7CiB9CiAKIC0gKHZvaWQpc2Nyb2xsVmlld0Rp
ZFpvb206KFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZpZXcKQEAgLTIxMDMsNiArMjExOSwzMCBAQCAt
IChCT09MKV9pc1Nob3dpbmdOYXZpZ2F0aW9uR2VzdHVyZVNuYXBzaG90CiAgICAgcmV0dXJuIF9w
YWdlLT5pc1Nob3dpbmdOYXZpZ2F0aW9uR2VzdHVyZVNuYXBzaG90KCk7CiB9CiAKKyNwcmFnbWEg
bWFyayBzY3JvbGxwZXJmIG1ldGhvZHMKKworLSAodm9pZClfc2V0U2Nyb2xsUGVyZm9ybWFuY2VE
YXRhQ29sbGVjdGlvbkVuYWJsZWQ6KEJPT0wpZW5hYmxlZAoreworICAgIF9wYWdlLT5zZXRTY3Jv
bGxQZXJmb3JtYW5jZURhdGFDb2xsZWN0aW9uRW5hYmxlZChlbmFibGVkKTsKK30KKworLSAoQk9P
TClfc2Nyb2xsUGVyZm9ybWFuY2VEYXRhQ29sbGVjdGlvbkVuYWJsZWQKK3sKKyAgICByZXR1cm4g
X3BhZ2UtPnNjcm9sbFBlcmZvcm1hbmNlRGF0YUNvbGxlY3Rpb25FbmFibGVkKCk7Cit9CisKKy0g
KE5TQXJyYXkgKilfc2Nyb2xsUGVyZm9ybWFuY2VEYXRhCit7CisjaWYgUExBVEZPUk0oSU9TKQor
ICAgIGlmIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YSog
c2Nyb2xsUGVmRGF0YSA9IF9wYWdlLT5zY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEoKSkKKyAgICAg
ICAgcmV0dXJuIHNjcm9sbFBlZkRhdGEtPmRhdGEoKTsKKworICAgIHJldHVybiBuaWw7CisjZWxz
ZQorICAgIHJldHVybiBuaWw7CisjZW5kaWYKK30KKwogI3ByYWdtYSBtYXJrIGlPUy1zcGVjaWZp
YyBtZXRob2RzCiAKICNpZiBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDM3MjU4MTFjNzIw
MjEwNjNkOTA0NTcyNWQ2YTY1M2QyNWM0YmNhYTUuLmFlYjRkZTIxMTVjYjgyNjBlZDY2NTBlNTJm
YTQ0ZGFjN2QzYzc0Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC0xODIsNiArMTgyLDkgQEAgdHlwZWRlZiBO
U19PUFRJT05TKE5TVUludGVnZXIsIF9XS0ZpbmRPcHRpb25zKSB7CiAKIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCByZWFkb25seSwgZ2V0dGVyPV9pc0Rpc3BsYXlpbmdTdGFuZGFsb25lSW1hZ2VEb2N1
bWVudCkgQk9PTCBfZGlzcGxheWluZ1N0YW5kYWxvbmVJbWFnZURvY3VtZW50OwogCitAcHJvcGVy
dHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRTY3JvbGxQZXJmb3JtYW5jZURhdGFDb2xsZWN0aW9u
RW5hYmxlZDopIEJPT0wgX3Njcm9sbFBlcmZvcm1hbmNlRGF0YUNvbGxlY3Rpb25FbmFibGVkIFdL
X0FWQUlMQUJMRShXS19NQUNfVEJBLCBXS19JT1NfVEJBKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCByZWFkb25seSkgTlNBcnJheSAqX3Njcm9sbFBlcmZvcm1hbmNlRGF0YSBXS19BVkFJTEFCTEUo
V0tfTUFDX1RCQSwgV0tfSU9TX1RCQSk7CisKIEBlbmQKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVy
Zm9ybWFuY2VEYXRhLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvUmVtb3RlTGF5
ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWZmOGUxMTUyMDVj
NWY4NTIwMzA2MGI0OThlZTg5OTIxMjU4MmI5OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9SZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5j
ZURhdGEuaApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisjaWZuZGVmIFJlbW90ZUxh
eWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YV9oCisjZGVmaW5lIFJlbW90ZUxheWVyVHJl
ZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YV9oCisKKyNpbXBvcnQgPFdlYkNvcmUvRmxvYXRSZWN0
Lmg+CisjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFz
cyBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OworCitjbGFzcyBSZW1vdGVMYXllclRy
ZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEgeworcHVibGljOgorICAgIFJlbW90ZUxheWVyVHJl
ZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YShSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5
Jik7CisgICAgflJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YSgpOworCisg
ICAgdm9pZCBkaWRDb21taXRMYXllclRyZWUoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB2aXNp
YmxlUmVjdCk7CisgICAgdm9pZCBkaWRTY3JvbGwoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB2
aXNpYmxlUmVjdCk7CisKKyAgICBOU0FycmF5KiBkYXRhKCk7IC8vIEFycmF5IG9mIFsgdGltZSwg
ZXZlbnQgdHlwZSwgdW5maWxsZWQgcGl4ZWwgY291bnQgXQorCitwcml2YXRlOgorICAgIHVuc2ln
bmVkIGJsYW5rUGl4ZWxDb3VudChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHZpc2libGVSZWN0
KSBjb25zdDsKKyAgICAKKyAgICBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5JiBtX2Ry
YXdpbmdBcmVhOworICAgIAorICAgIHN0cnVjdCBCbGFua1BpeGVsQ291bnQgeworICAgICAgICBl
bnVtIEV2ZW50VHlwZSB7IEZpbGxlZCwgRXhwb3NlZCB9OworCisgICAgICAgIGRvdWJsZSBzdGFy
dFRpbWU7CisgICAgICAgIGRvdWJsZSBlbmRUaW1lOworICAgICAgICBFdmVudFR5cGUgZXZlbnRU
eXBlOworICAgICAgICB1bnNpZ25lZCBibGFua1BpeGVsQ291bnQ7CisgICAgICAgIAorICAgICAg
ICBCbGFua1BpeGVsQ291bnQoZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kLCBFdmVudFR5cGUgdHlw
ZSwgdW5zaWduZWQgY291bnQpCisgICAgICAgICAgICA6IHN0YXJ0VGltZShzdGFydCkKKyAgICAg
ICAgICAgICwgZW5kVGltZShlbmQpCisgICAgICAgICAgICAsIGV2ZW50VHlwZSh0eXBlKQorICAg
ICAgICAgICAgLCBibGFua1BpeGVsQ291bnQoY291bnQpCisgICAgICAgIHsgfQorICAgICAgICAK
KyAgICAgICAgYm9vbCBjYW5Db2FsZXNjZShCbGFua1BpeGVsQ291bnQ6OkV2ZW50VHlwZSwgdW5z
aWduZWQgYmxhbmtQaXhlbENvdW50KSBjb25zdDsKKyAgICB9OworICAgIAorICAgIHZvaWQgYXBw
ZW5kQmxhbmtQaXhlbENvdW50KEJsYW5rUGl4ZWxDb3VudDo6RXZlbnRUeXBlLCB1bnNpZ25lZCBi
bGFua1BpeGVsQ291bnQpOworCisgICAgVmVjdG9yPEJsYW5rUGl4ZWxDb3VudD4gbV9ibGFua1Bp
eGVsQ291bnRzOworfTsKKworfQorCisjZW5kaWYgLy8gUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5n
UGVyZm9ybWFuY2VEYXRhX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b2NvYS9SZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEubW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFu
Y2VEYXRhLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkMzIyYzE3ZDJjNjgyNDM1NWI0ZWI0MTVkNjYzNmY3MDhh
Y2Q0NDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2Ev
UmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLm1tCkBAIC0wLDAgKzEsMTM1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJSZW1vdGVMYXll
clRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEuaCIKKworI2ltcG9ydCAiUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eS5oIgorI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlSG9zdC5oIgor
I2ltcG9ydCA8UXVhcnR6Q29yZS9DQUxheWVyLmg+CisjaW1wb3J0IDxXZWJDb3JlL1RpbGVDb250
cm9sbGVyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0
IHsKKworCitSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGE6OlJlbW90ZUxh
eWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YShSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YVByb3h5JiBkcmF3aW5nQXJlYSkKKyAgICA6IG1fZHJhd2luZ0FyZWEoZHJhd2luZ0FyZWEpCit7
Cit9CisKK1JlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YTo6flJlbW90ZUxh
eWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YSgpCit7Cit9CisKK3ZvaWQgUmVtb3RlTGF5
ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhOjpkaWRDb21taXRMYXllclRyZWUoY29uc3Qg
RmxvYXRSZWN0JiB2aXNpYmxlUmVjdCkKK3sKKyAgICAvLyBGSVhNRTogbWF5YmUgd2Ugb25seSBj
YXJlIGFib3V0IG5ld2x5IGNyZWF0ZWQgdGlsZXM/CisgICAgYXBwZW5kQmxhbmtQaXhlbENvdW50
KEJsYW5rUGl4ZWxDb3VudDo6RmlsbGVkLCBibGFua1BpeGVsQ291bnQodmlzaWJsZVJlY3QpKTsK
K30KKwordm9pZCBSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGE6OmRpZFNj
cm9sbChjb25zdCBGbG9hdFJlY3QmIHZpc2libGVSZWN0KQoreworICAgIGFwcGVuZEJsYW5rUGl4
ZWxDb3VudChCbGFua1BpeGVsQ291bnQ6OkV4cG9zZWQsIGJsYW5rUGl4ZWxDb3VudCh2aXNpYmxl
UmVjdCkpOworfQorCitib29sIFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0
YTo6QmxhbmtQaXhlbENvdW50OjpjYW5Db2FsZXNjZShCbGFua1BpeGVsQ291bnQ6OkV2ZW50VHlw
ZSB0eXBlLCB1bnNpZ25lZCBwaXhlbENvdW50KSBjb25zdAoreworICAgIHJldHVybiBldmVudFR5
cGUgPT0gdHlwZSAmJiBibGFua1BpeGVsQ291bnQgPT0gcGl4ZWxDb3VudDsKK30KKwordm9pZCBS
ZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGE6OmFwcGVuZEJsYW5rUGl4ZWxD
b3VudChCbGFua1BpeGVsQ291bnQ6OkV2ZW50VHlwZSBldmVudFR5cGUsIHVuc2lnbmVkIGJsYW5r
UGl4ZWxDb3VudCkKK3sKKyAgICBkb3VibGUgbm93ID0gV1RGOjptb25vdG9uaWNhbGx5SW5jcmVh
c2luZ1RpbWUoKTsKKworICAgIGlmICghbV9ibGFua1BpeGVsQ291bnRzLmlzRW1wdHkoKSAmJiBt
X2JsYW5rUGl4ZWxDb3VudHMubGFzdCgpLmNhbkNvYWxlc2NlKGV2ZW50VHlwZSwgYmxhbmtQaXhl
bENvdW50KSkgeworICAgICAgICBtX2JsYW5rUGl4ZWxDb3VudHMubGFzdCgpLmVuZFRpbWUgPSBu
b3c7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2JsYW5rUGl4ZWxDb3VudHMuYXBw
ZW5kKEJsYW5rUGl4ZWxDb3VudChub3csIG5vdywgZXZlbnRUeXBlLCBibGFua1BpeGVsQ291bnQp
KTsKK30KKworTlNBcnJheSAqUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRh
OjpkYXRhKCkKK3sKKyAgICBOU011dGFibGVBcnJheSogZGF0YUFycmF5ID0gW05TTXV0YWJsZUFy
cmF5IGFycmF5V2l0aENhcGFjaXR5Om1fYmxhbmtQaXhlbENvdW50cy5zaXplKCldOworICAgIAor
ICAgIGZvciAoYXV0byBwaXhlbERhdGEgOiBtX2JsYW5rUGl4ZWxDb3VudHMpIHsKKyAgICAgICAg
W2RhdGFBcnJheSBhZGRPYmplY3Q6QFsKKyAgICAgICAgICAgIEAocGl4ZWxEYXRhLnN0YXJ0VGlt
ZSksCisgICAgICAgICAgICAocGl4ZWxEYXRhLmV2ZW50VHlwZSA9PSBCbGFua1BpeGVsQ291bnQ6
OkZpbGxlZCkgPyBAImZpbGxlZCIgOiBAImV4cG9zZWQiLAorICAgICAgICAgICAgQChwaXhlbERh
dGEuYmxhbmtQaXhlbENvdW50KQorICAgICAgICBdXTsKKyAgICB9CisgICAgcmV0dXJuIGRhdGFB
cnJheTsKK30KKworc3RhdGljIENBTGF5ZXIgKmZpbmRUaWxlR3JpZENvbnRhaW5lckxheWVyKENB
TGF5ZXIgKmxheWVyKQoreworICAgIGZvciAoQ0FMYXllciAqY3VyckxheWVyIDogW2xheWVyIHN1
YmxheWVyc10pIHsKKyAgICAgICAgU3RyaW5nIGxheWVyTmFtZSA9IFtjdXJyTGF5ZXIgbmFtZV07
CisgICAgICAgIGlmIChsYXllck5hbWUgPT0gVGlsZUNvbnRyb2xsZXI6OnRpbGVHcmlkQ29udGFp
bmVyTGF5ZXJOYW1lKCkpCisgICAgICAgICAgICByZXR1cm4gY3VyckxheWVyOworCisgICAgICAg
IGlmIChDQUxheWVyICpmb3VuZExheWVyID0gZmluZFRpbGVHcmlkQ29udGFpbmVyTGF5ZXIoY3Vy
ckxheWVyKSkKKyAgICAgICAgICAgIHJldHVybiBmb3VuZExheWVyOworICAgIH0KKworICAgIHJl
dHVybiBuaWw7Cit9CisKK3Vuc2lnbmVkIFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1h
bmNlRGF0YTo6YmxhbmtQaXhlbENvdW50KGNvbnN0IEZsb2F0UmVjdCYgdmlzaWJsZVJlY3QpIGNv
bnN0Cit7CisgICAgQ0FMYXllciAqcm9vdExheWVyID0gYXNMYXllcihtX2RyYXdpbmdBcmVhLnJl
bW90ZUxheWVyVHJlZUhvc3QoKS5yb290TGF5ZXIoKSk7CisKKyAgICBDQUxheWVyICp0aWxlR3Jp
ZENvbnRhaW5lciA9IGZpbmRUaWxlR3JpZENvbnRhaW5lckxheWVyKHJvb3RMYXllcik7CisgICAg
aWYgKCF0aWxlR3JpZENvbnRhaW5lcikgeworICAgICAgICBOU0xvZyhAIkZhaWxlZCB0byBmaW5k
IFRpbGVHcmlkIENvbnRhaW5lciBMYXllciIpOworICAgICAgICByZXR1cm4gVUlOVF9NQVg7Cisg
ICAgfQorCisgICAgRmxvYXRSZWN0IHZpc2libGVSZWN0RXhjbHVkaW5nVG9vbGJhciA9IHZpc2li
bGVSZWN0OworICAgIGlmICh2aXNpYmxlUmVjdEV4Y2x1ZGluZ1Rvb2xiYXIueSgpIDwgMCkKKyAg
ICAgICAgdmlzaWJsZVJlY3RFeGNsdWRpbmdUb29sYmFyLnNldFkoMCk7CisKKyAgICBSZWdpb24g
cGFpbnRlZFZpc2libGVUaWxlUmVnaW9uOworCisgICAgZm9yIChDQUxheWVyICp0aWxlTGF5ZXIg
OiBbdGlsZUdyaWRDb250YWluZXIgc3VibGF5ZXJzXSkgeworICAgICAgICBGbG9hdFJlY3QgdGls
ZVJlY3QgPSBbdGlsZUxheWVyIGNvbnZlcnRSZWN0Olt0aWxlTGF5ZXIgYm91bmRzXSB0b0xheWVy
OnRpbGVHcmlkQ29udGFpbmVyXTsKKyAgICAKKyAgICAgICAgdGlsZVJlY3QuaW50ZXJzZWN0KHZp
c2libGVSZWN0RXhjbHVkaW5nVG9vbGJhcik7CisgICAgICAgIAorICAgICAgICBpZiAoIXRpbGVS
ZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHBhaW50ZWRWaXNpYmxlVGlsZVJlZ2lvbi51bml0
ZShlbmNsb3NpbmdJbnRSZWN0KHRpbGVSZWN0KSk7CisgICAgfQorCisgICAgUmVnaW9uIHVuY292
ZXJlZFJlZ2lvbihlbmNsb3NpbmdJbnRSZWN0KHZpc2libGVSZWN0RXhjbHVkaW5nVG9vbGJhcikp
OworICAgIHVuY292ZXJlZFJlZ2lvbi5zdWJ0cmFjdChwYWludGVkVmlzaWJsZVRpbGVSZWdpb24p
OworCisgICAgcmV0dXJuIHVuY292ZXJlZFJlZ2lvbi50b3RhbEFyZWEoKTsKK30KKworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBmMWQyMTcwNzNlN2Zj
N2YxMDNmMGU4MzQ1OThkMjNhZmQ4NGExZWYyLi5iNjk0ZTAxMzEyZDJkODRhNmEzZmU4YmRhMDQ5
MjU4M2QzNDJjM2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cApAQCAtNTUsNiArNTUsNyBAQAogI2luY2x1ZGUgIlBsdWdpbkluZm9ybWF0aW9uLmgiCiAjaW5j
bHVkZSAiUGx1Z2luUHJvY2Vzc01hbmFnZXIuaCIKICNpbmNsdWRlICJQcmludEluZm8uaCIKKyNp
bmNsdWRlICJSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEuaCIKICNpbmNs
dWRlICJUZXh0Q2hlY2tlci5oIgogI2luY2x1ZGUgIlRleHRDaGVja2VyU3RhdGUuaCIKICNpbmNs
dWRlICJVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5LmgiCkBAIC0xMjYsMTIgKzEyNywx
MiBAQAogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJSZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYVByb3h5LmgiCiAjaW5jbHVkZSAiVmlld1NuYXBzaG90U3RvcmUuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL1J1bkxvb3BPYnNlcnZlci5oPgogI2VuZGlmCiAKICNpZiBQTEFU
Rk9STShJT1MpCi0jaW5jbHVkZSAiUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5oIgog
I2luY2x1ZGUgIldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIldl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCiAjZW5kaWYKQEAgLTM3MCw2
ICszNzEsMTAgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNs
aWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCB1aW4KICAgICAsIG1fbWVkaWFWb2x1bWUo
MSkKICAgICAsIG1fbXV0ZWQoZmFsc2UpCiAgICAgLCBtX21heVN0YXJ0TWVkaWFXaGVuSW5XaW5k
b3codHJ1ZSkKKyAgICAsIG1fd2FpdGluZ0ZvckRpZFVwZGF0ZVZpZXdTdGF0ZShmYWxzZSkKKyNp
ZiBQTEFURk9STShDT0NPQSkKKyAgICAsIG1fc2Nyb2xsUGVyZm9ybWFuY2VEYXRhQ29sbGVjdGlv
bkVuYWJsZWQoZmFsc2UpCisjZW5kaWYKICAgICAsIG1fc2Nyb2xsUGlubmluZ0JlaGF2aW9yKERv
Tm90UGluKQogICAgICwgbV9uYXZpZ2F0aW9uSUQoMCkKICAgICAsIG1fY29uZmlndXJhdGlvblBy
ZWZlcmVuY2VWYWx1ZXMoY29uZmlndXJhdGlvbi5wcmVmZXJlbmNlVmFsdWVzKQpAQCAtNTIxOSw2
ICs1MjI0LDE4IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb25maXJtQ29tcG9zaXRpb25Bc3luYygp
CiAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbmZpcm1Db21wb3NpdGlv
bkFzeW5jKCksIG1fcGFnZUlEKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnNldFNjcm9sbFBl
cmZvcm1hbmNlRGF0YUNvbGxlY3Rpb25FbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBpZiAo
ZW5hYmxlZCA9PSBtX3Njcm9sbFBlcmZvcm1hbmNlRGF0YUNvbGxlY3Rpb25FbmFibGVkKQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX3Njcm9sbFBlcmZvcm1hbmNlRGF0YUNvbGxlY3Rpb25FbmFi
bGVkID0gZW5hYmxlZDsKKworICAgIGlmIChtX3Njcm9sbFBlcmZvcm1hbmNlRGF0YUNvbGxlY3Rp
b25FbmFibGVkICYmICFtX3Njcm9sbGluZ1BlcmZvcm1hbmNlRGF0YSkKKyAgICAgICAgbV9zY3Jv
bGxpbmdQZXJmb3JtYW5jZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyVHJlZVNj
cm9sbGluZ1BlcmZvcm1hbmNlRGF0YT4oZG93bmNhc3Q8UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWFQcm94eT4oKm1fZHJhd2luZ0FyZWEpKTsKKyAgICBlbHNlIGlmICghbV9zY3JvbGxQZXJmb3Jt
YW5jZURhdGFDb2xsZWN0aW9uRW5hYmxlZCkKKyAgICAgICAgbV9zY3JvbGxpbmdQZXJmb3JtYW5j
ZURhdGEgPSBudWxscHRyOworfQogI2VuZGlmCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp0YWtlU25h
cHNob3QoSW50UmVjdCByZWN0LCBJbnRTaXplIGJpdG1hcFNpemUsIFNuYXBzaG90T3B0aW9ucyBv
cHRpb25zLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxl
JiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGNhbGxiYWNrRnVuY3Rpb24pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggZjM5ZTY4YTNiN2EzNWI5Yzg1NmQ3NDYzOGE3
N2FjMzQwMWIzYWRjNC4uZDEyM2MzYmRiNjU4ZjZkYzMxYzk1YTI5YmRlZTI4ZTQxMjdkYmI2NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTU4LDYgKzE1OCw3
IEBAIGNsYXNzIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQ7CiBjbGFzcyBOYXRpdmVXZWJNb3VzZUV2
ZW50OwogY2xhc3MgTmF0aXZlV2ViV2hlZWxFdmVudDsKIGNsYXNzIFBhZ2VDbGllbnQ7CitjbGFz
cyBSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGE7CiBjbGFzcyBSZW1vdGVM
YXllclRyZWVUcmFuc2FjdGlvbjsKIGNsYXNzIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJv
eHk7CiBjbGFzcyBTdHJpbmdQYWlyVmVjdG9yOwpAQCAtNTE1LDYgKzUxNiwxMSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRDb21wb3NpdGlvbkFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgVmVjdG9y
PFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPiB1bmRlcmxpbmVzLCBjb25zdCBFZGl0aW5n
UmFuZ2UmIHNlbGVjdGlvblJhbmdlLCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50UmFu
Z2UpOwogICAgIHZvaWQgY29uZmlybUNvbXBvc2l0aW9uQXN5bmMoKTsKIAorICAgIHZvaWQgc2V0
U2Nyb2xsUGVyZm9ybWFuY2VEYXRhQ29sbGVjdGlvbkVuYWJsZWQoYm9vbCk7CisgICAgYm9vbCBz
Y3JvbGxQZXJmb3JtYW5jZURhdGFDb2xsZWN0aW9uRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
c2Nyb2xsUGVyZm9ybWFuY2VEYXRhQ29sbGVjdGlvbkVuYWJsZWQ7IH0KKyAgICBSZW1vdGVMYXll
clRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEqIHNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YSgp
IHsgcmV0dXJuIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLmdldCgpOyB9CisjZW5kaWYgLy8g
UExBVEZPUk0oQ09DT0EpCisKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBpbnNlcnREaWN0
YXRlZFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVw
bGFjZW1lbnRSYW5nZSwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlRleHRBbHRlcm5hdGl2ZVdpdGhS
YW5nZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlcywgYm9vbCByZWdpc3RlclVuZG9Hcm91cCk7CiAg
ICAgdm9pZCBhdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBF
ZGl0aW5nUmFuZ2UmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IEF0dHJpYnV0ZWRTdHJpbmcm
LCBjb25zdCBFZGl0aW5nUmFuZ2UmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4pOwpAQCAtNTMxLDIy
ICs1MzcsMjQgQEAgcHVibGljOgogICAgIFdlYkNvcmU6OkludFJlY3QgZmlyc3RSZWN0Rm9yQ2hh
cmFjdGVyUmFuZ2UoY29uc3QgRWRpdGluZ1JhbmdlJik7CiAgICAgYm9vbCBleGVjdXRlS2V5cHJl
c3NDb21tYW5kcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kPiYpOwogICAg
IHZvaWQgY2FuY2VsQ29tcG9zaXRpb24oKTsKLSNlbmRpZgorI2VuZGlmIC8vICFVU0UoQVNZTkNf
TlNURVhUSU5QVVRDTElFTlQpCiAKICAgICBXS1ZpZXcqIHdrVmlldygpIGNvbnN0OwogICAgIHZv
aWQgaW50cmluc2ljQ29udGVudFNpemVEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYg
aW50cmluc2ljQ29udGVudFNpemUpOwogICAgIENHUmVjdCBib3VuZHNPZkxheWVySW5MYXllckJh
Y2tlZFdpbmRvd0Nvb3JkaW5hdGVzKENBTGF5ZXIgKikgY29uc3Q7Ci0jZW5kaWYKLSNlbmRpZiAv
LyBQTEFURk9STShDT0NPQSkKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpCisKICNpZiBQTEFURk9S
TShFRkwpCiAgICAgdm9pZCBoYW5kbGVJbnB1dE1ldGhvZEtleWRvd24oYm9vbCYgaGFuZGxlZCk7
CiAgICAgdm9pZCBjb25maXJtQ29tcG9zaXRpb24oY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBz
ZXRDb21wb3NpdGlvbihjb25zdCBTdHJpbmcmLCBWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25V
bmRlcmxpbmU+JiwgaW50KTsKICAgICB2b2lkIGNhbmNlbENvbXBvc2l0aW9uKCk7CiAjZW5kaWYK
KwogI2lmIFBMQVRGT1JNKEdUSykKICAgICBQbGF0Zm9ybVdpZGdldCB2aWV3V2lkZ2V0KCk7CiAj
ZW5kaWYKKwogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19NVUxUSVBST0NFU1MpCiAgICAg
dm9pZCBjb21taXRQYWdlVHJhbnNpdGlvblZpZXdwb3J0KCk7CiAjZW5kaWYKQEAgLTU1NCw5ICs1
NjIsMTEgQEAgcHVibGljOgogICAgIHZvaWQgaGFuZGxlTW91c2VFdmVudChjb25zdCBOYXRpdmVX
ZWJNb3VzZUV2ZW50Jik7CiAgICAgdm9pZCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IE5hdGl2ZVdl
YldoZWVsRXZlbnQmKTsKICAgICB2b2lkIGhhbmRsZUtleWJvYXJkRXZlbnQoY29uc3QgTmF0aXZl
V2ViS2V5Ym9hcmRFdmVudCYpOworCiAjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCiAgICAg
dm9pZCBoYW5kbGVUb3VjaEV2ZW50U3luY2hyb25vdXNseShjb25zdCBOYXRpdmVXZWJUb3VjaEV2
ZW50Jik7CiAgICAgdm9pZCBoYW5kbGVUb3VjaEV2ZW50QXN5bmNocm9ub3VzbHkoY29uc3QgTmF0
aXZlV2ViVG91Y2hFdmVudCYpOworCiAjZWxpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIHZv
aWQgaGFuZGxlVG91Y2hFdmVudChjb25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50Jik7CiAjZW5kaWYK
QEAgLTE1ODksNiArMTU5OSw5IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbV90ZW1wb3JhcnlQREZGaWxlczsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6UnVuTG9vcE9ic2VydmVyPiBtX3ZpZXdTdGF0ZUNoYW5nZURpc3Bh
dGNoZXI7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVy
Zm9ybWFuY2VEYXRhPiBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlRGF0YTsKKyAgICBib29sIG1fc2Ny
b2xsUGVyZm9ybWFuY2VEYXRhQ29sbGVjdGlvbkVuYWJsZWQ7CiAjZW5kaWYKICAgICBVc2VyT2Jz
ZXJ2YWJsZVBhZ2VUb2tlbiBtX3BhZ2VJc1VzZXJPYnNlcnZhYmxlQ291bnQ7CiAgICAgUHJvY2Vz
c1N1cHByZXNzaW9uRGlzYWJsZWRUb2tlbiBtX3ByZXZlbnRQcm9jZXNzU3VwcHJlc3Npb25Db3Vu
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCAzMmYwMjBjNWUxY2ExYzc3NDVmYTQzMDEzY2IwMGY4MzNhZTBjMjlhLi4zZjkzZDEy
NmMzYjYzZTY3OGJhZjYwYTAyN2M5Y2U4OTg3MTA3MmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjAsNiArMTIwLDggQEAK
IAkJMEZDQjRFNkQxOEJCRjI2QTAwMEZDRkM5IC8qIFdLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQ0I0RTZC
MThCQkYyNkEwMDBGQ0ZDOSAvKiBXS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gKi87IH07CiAJ
CTBGRjI0QTJEMTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGRjI0QTJCMTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJMEZGMjRBMkUxODc5
RTRCQzAwM0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGMjRBMkMx
ODc5RTRCQzAwM0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdl
cy5oICovOyB9OworCQkwRkYyNjQ5RjFBMUZGOUM2MDAxRkU3NTkgLyogUmVtb3RlTGF5ZXJUcmVl
U2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY3MDdDNzcxQTFGRUU4MzAwREE3QTQ1IC8qIFJlbW90ZUxheWVy
VHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5tbSAqLzsgfTsKKwkJMEZGMjY0QTAxQTFGRjlD
QzAwMUZFNzU5IC8qIFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3MDdDNzkxQTFG
RUVBMzAwREE3QTQ1IC8qIFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5o
ICovOyB9OwogCQkxQTAwMkQ0MzE5NkIzMzcwMDBCOUFENDQgLyogX1dLU2Vzc2lvblN0YXRlSW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFB
MDAyRDQyMTk2QjMzNzAwMEI5QUQ0NCAvKiBfV0tTZXNzaW9uU3RhdGVJbnRlcm5hbC5oICovOyB9
OwogCQkxQTAwMkQ0NDE5NkIzMzg5MDBCOUFENDQgLyogX1dLU2Vzc2lvblN0YXRlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTAwMkQzRjE5NkIzMjk0
MDBCOUFENDQgLyogX1dLU2Vzc2lvblN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUEwMDJENDUxOTZCMzM4RTAwQjlBRDQ0IC8qIF9XS1Nl
c3Npb25TdGF0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFBMDAyRDNFMTk2QjMyOTQwMEI5QUQ0NCAvKiBfV0tTZXNzaW9uU3RhdGUubW0gKi87IH07
CkBAIC0yMDc3LDYgKzIwNzksOCBAQAogCQkwRjU5NDdBNjE4N0I1MTc2MDA0Mzc4NTcgLyogUmVt
b3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvck1lc3NhZ2VzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUUyMDAxMThFNzcwNTEwMDNFQzNFNSAvKiBQbGF0Zm9y
bUNBQW5pbWF0aW9uUmVtb3RlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEY1RTIwMDIxOEU3NzA1MTAwM0VDM0U1IC8qIFBsYXRmb3JtQ0FBbmltYXRpb25S
ZW1vdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1DQUFuaW1h
dGlvblJlbW90ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjcwN0M3NzFBMUZF
RTgzMDBEQTdBNDUgLyogUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVtb3RlTGF5ZXJUcmVl
U2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRjcwN0M3OTFBMUZFRUEzMDBEQTdBNDUgLyogUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVy
Zm9ybWFuY2VEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUxh
eWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjkzMUMxQTE4QzU3MTE5MDBEQkE3QzMgLyogU2Nyb2xsaW5nVHJlZU92ZXJmbG93
U2Nyb2xsaW5nTm9kZUlPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTY3Jv
bGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLmg7IHBhdGggPSBTY3JvbGxpbmcvaW9z
L1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEY5MzFDMUIxOEM1NzExOTAwREJBN0MzIC8qIFNjcm9sbGluZ1RyZWVP
dmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IG5hbWUgPSBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tOyBwYXRo
ID0gU2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkI2NTkyMjEyMDhCNERCMDA0NDgxNkMg
LyogRHJhd2luZ0FyZWFJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERy
YXdpbmdBcmVhSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDY5Nyw2ICs0
NzAxLDggQEAKIAkJCQkxQUJDM0RGMzE4OTlFNDM3MDA0RjA2MjYgLyogTmF2aWdhdGlvblN0YXRl
Lm1tICovLAogCQkJCTFBMDAyRDQ3MTk2QjM0NUQwMEI5QUQ0NCAvKiBTZXNzaW9uU3RhdGVDb2Rp
bmcuaCAqLywKIAkJCQkxQTAwMkQ0NjE5NkIzNDVEMDBCOUFENDQgLyogU2Vzc2lvblN0YXRlQ29k
aW5nLm1tICovLAorCQkJCTBGNzA3Qzc5MUExRkVFQTMwMERBN0E0NSAvKiBSZW1vdGVMYXllclRy
ZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEuaCAqLywKKwkJCQkwRjcwN0M3NzFBMUZFRTgzMDBE
QTdBNDUgLyogUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLm1tICovLAog
CQkJCTFBRkU0MzY0MThCNkMwODEwMDlDN0E0OCAvKiBVSURlbGVnYXRlLmggKi8sCiAJCQkJMUFG
RTQzNjMxOEI2QzA4MTAwOUM3QTQ4IC8qIFVJRGVsZWdhdGUubW0gKi8sCiAJCQkJMUFDMDI3M0Ux
OTY2MjJENjAwQzEyQjc1IC8qIFdlYlBhZ2VQcm94eUNvY29hLm1tICovLApAQCAtNzY2Miw2ICs3
NjY4LDcgQEAKIAkJCQlCQ0U0Njk1NjEyMTRFNkNCMDAwQjk4RUIgLyogV2ViRm9ybVN1Ym1pc3Np
b25MaXN0ZW5lclByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAzMkQ4RDEwRjQzN0EwMDA1
OEMxNUEgLyogV2ViRnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRTQ2OTc3MTIxNEYyN0Iw
MDBCOThFQiAvKiBXZWJGcmFtZUxpc3RlbmVyUHJveHkuaCBpbiBIZWFkZXJzICovLAorCQkJCTBG
RjI2NEEwMUExRkY5Q0MwMDFGRTc1OSAvKiBSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3Jt
YW5jZURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDMyRDdGMTBGNDM3OEQwMDU4QzE1QSAv
KiBXZWJGcmFtZUxvYWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM5MUYyQ0IxMjFC
NjdBRDAwRUJGN0U4IC8qIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDQjlGNkEwMTEyM0E4NEIwMEExMzdFMCAvKiBXZWJGcmFtZVBvbGljeUxpc3RlbmVy
UHJveHkuaCBpbiBIZWFkZXJzICovLApAQCAtOTI0NCw2ICs5MjUxLDcgQEAKIAkJCQkxQUEzRDc1
QjE2NTFCNDRGMDA4NzEzRDAgLyogUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTBGMEMzNjU4MThDMDUxQkEwMEY2MDdENyAvKiBSZW1vdGVMYXllclRyZWVIb3N0SU9T
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRERTBBRkIxODI5OENDOTAwRjk3RUFBIC8qIFJlbW90
ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5tbSBpbiBTb3VyY2VzICovLAorCQkJCTBGRjI2NDlG
MUExRkY5QzYwMDFGRTc1OSAvKiBSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURh
dGEubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQUYxQUM2QjE2NTE3NTlFMDBDMTdEN0YgLyogUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQlFMUI3ODQ3MzE2
M0YyNTNFMDAwN0I2OTIgLyogUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0gaW4gU291cmNlcyAq
LywKIAkJCQkxQUMxMzM3RjE4NTkwQUU0MDBGM0VDMDUgLyogUmVtb3RlT2JqZWN0UmVnaXN0cnku
bW0gaW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244774</attachid>
            <date>2015-01-16 11:13:59 -0800</date>
            <delta_ts>2015-01-16 11:14:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140474-20150116111405.patch</filename>
            <type>text/plain</type>
            <size>32927</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc4NTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzRhNzE1MWYyYjBhYjhl
NzM3YzI3NTBlY2JjYjk5NzBhYjJhMzJhMy4uZjY3OGQ5ZjY5NjNkOWM2OGYwNDBlMTY5YjlkZjU1
M2ExMzJiOThjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE1LTAxLTE2ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIHdheSB0
byBjb2xsZWN0IHNjcm9sbGluZyBwZXJmb3JtYW5jZSBkYXRhICh2aWV3cG9ydCB0aWxlIGNvdmVy
YWdlKSB3aXRoIFVJLXNpZGUgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MDQ3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhY2Nlc3NvcnMgZm9yIHN0YW5kYXJkIG5hbWVzIGZv
ciBjb250YWluZXIgQ0FMYXllciBmb3IgZWFjaCBvZiB0aGUgdGlsZSBncmlkcywKKyAgICAgICAg
YW5kIHdoZW4gdGlsZSBncmlkcyBhcmUgc3dhcHBlZCwgdXBkYXRlIHRob3NlIG5hbWVzIGFzIGFw
cHJvcHJpYXRlLgorICAgICAgICAKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUaWxlQ29udHJvbGxlcjo6dGlsZUdyaWRDb250YWluZXJMYXllck5hbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6Onpvb21lZE91dFRpbGVHcmlkQ29udGFpbmVyTGF5
ZXJOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDb250cm9sbGVyOjpzZXRDb250ZW50c1Nj
YWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVHcmlkLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRpbGVHcmlkOjpUaWxlR3JpZCk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlR3JpZDo6
c2V0SXNab29tZWRPdXRUaWxlR3JpZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
VGlsZUdyaWQuaDoKKwogMjAxNS0wMS0xNCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxl
LmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yIGFuZCByZWd1bGFyIGNvbnNvbGUgdXNlIGRp
ZmZlcmVudCBzb3VyY2UgY29kZSBsb2NhdGlvbnMgZm9yIG1lc3NhZ2VzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
ZTdkNTM4NTBhZjIxYTkyYzIzNDc3MWI1ZjllZjBiNDdkNTM5ZDIxMC4uZTI1ZjQ5YzU3Y2ViNGM3
MGZiNDMxYTBlMDg5MjhlZWRkZDFiYjA5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisy
MDE1LTAxLTE2ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAg
ICAgIEFkZCBhIHdheSB0byBjb2xsZWN0IHNjcm9sbGluZyBwZXJmb3JtYW5jZSBkYXRhICh2aWV3
cG9ydCB0aWxlIGNvdmVyYWdlKSB3aXRoIFVJLXNpZGUgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MDQ3NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQWRkIGEgcHJpdmF0
ZSBtZXRob2QgdG8gZW5hYmxlIHNjcm9sbGluZyBkYXRhIGNvbGxlY3Rpb24gdG8gV0tXZWJWaWV3
LiBXaGVuIGVuYWJsZWQsIGNyZWF0ZQorICAgICAgICBhIFJlbW90ZUxheWVyVHJlZVNjcm9sbGlu
Z1BlcmZvcm1hbmNlRGF0YSBvYmplY3QgdGhhdCBjb2xsZWN0cyAiYmxhbmsgcGl4ZWwiIGRhdGEg
b24KKyAgICAgICAgZXZlcnkgbGF5ZXIgdHJlZSBjb21taXQgYW5kIHNjcm9sbCwgYW5kIHN0b3Jl
cyB0aGVtIGluIGEgdmVjdG9yLiBBIHNlY29uZCBTUEkgY2FsbAorICAgICAgICBhbGxvd3MgcmV0
cmlldmFsIG9mIGFuIE5TQXJyYXkgb2YgdGhpcyBkYXRhLgorICAgICAgICAKKyAgICAgICAgVG8g
YWxsb3cgUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhIHRvIGZpbmQgdGhl
IGNvcnJlY3QgbGF5ZXIgd2hpY2gKKyAgICAgICAgY29udGFpbnMgdGhlIG1haW4gdGlsZSBncmlk
LCB3ZSBzZXQgYSBsYXllciBuYW1lIG9uIHRoZSBhcHByb3ByaWF0ZSBsYXllciAoZXZlbgorICAg
ICAgICBpbiByZWxlYXNlIGJ1aWxkcykuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHZpc2libGVSZWN0SW5TY3JlZW5D
b29yZGluYXRlc10pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2RpZENvbW1pdExheWVyVHJlZTpd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHNjcm9sbFZpZXdEaWRTY3JvbGw6XSk6CisgICAgICAg
ICgtW1dLV2ViVmlldyBfc2V0U2Nyb2xsUGVyZm9ybWFuY2VEYXRhQ29sbGVjdGlvbkVuYWJsZWQ6
XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2Nyb2xsUGVyZm9ybWFuY2VEYXRhQ29sbGVjdGlv
bkVuYWJsZWRdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zY3JvbGxQZXJmb3JtYW5jZURhdGFd
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFu
Y2VEYXRhLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVTY3JvbGxp
bmdQZXJmb3JtYW5jZURhdGE6OkJsYW5rUGl4ZWxDb3VudDo6QmxhbmtQaXhlbENvdW50KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFu
Y2VEYXRhLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlU2Nyb2xs
aW5nUGVyZm9ybWFuY2VEYXRhOjpSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURh
dGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5j
ZURhdGE6On5SZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGE6OmRpZENv
bW1pdExheWVyVHJlZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVNjcm9sbGlu
Z1BlcmZvcm1hbmNlRGF0YTo6ZGlkU2Nyb2xsKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5
ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhOjpCbGFua1BpeGVsQ291bnQ6OmNhbkNvYWxl
c2NlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFu
Y2VEYXRhOjphcHBlbmRCbGFua1BpeGVsQ291bnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVM
YXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGE6OmRhdGEpOgorICAgICAgICAoV2ViS2l0
OjpmaW5kVGlsZUdyaWRDb250YWluZXJMYXllcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxh
eWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YTo6YmxhbmtQaXhlbENvdW50KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpXZWJQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNl
dFNjcm9sbFBlcmZvcm1hbmNlRGF0YUNvbGxlY3Rpb25FbmFibGVkKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2Ny
b2xsUGVyZm9ybWFuY2VEYXRhQ29sbGVjdGlvbkVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YSk6CisgICAgICAgICogV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE1LTAxLTE1ICBBbmRlcnMgQ2FybHNz
b24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgQ2xlYXJpbmcgdGhlIHdlYnNpdGUg
ZGF0YSBzdG9yZSBzaG91bGQgY2xlYXIgbG9jYWwgc3RvcmFnZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpp
bmRleCA2OWVjMjFjMzQ3NWRmYTRjYWQzYTE2Nzg0MjQ0MzEyODJhNzk0YzAwLi4zMjVlNzc2ODMy
Y2UyMWQ2ZTU5MWM4OWM4MDFmZGZiMTBhZDBiNTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAt
NDc3LDYgKzQ3Nyw3IEBAIF9fWk43V2ViQ29yZTE0VGlsZUNvbnRyb2xsZXIyMXNldEFjY2VsZXJh
dGVzRHJhd2luZ0ViCiBfX1pON1dlYkNvcmUxNFRpbGVDb250cm9sbGVyMjFzZXROZWVkc0Rpc3Bs
YXlJblJlY3RFUktOU183SW50UmVjdEUKIF9fWk43V2ViQ29yZTE0VGlsZUNvbnRyb2xsZXIyM3Nl
dFRpbGVEZWJ1Z0JvcmRlckNvbG9yRU5TXzVDb2xvckUKIF9fWk43V2ViQ29yZTE0VGlsZUNvbnRy
b2xsZXIyM3NldFRpbGVEZWJ1Z0JvcmRlcldpZHRoRWYKK19fWk43V2ViQ29yZTE0VGlsZUNvbnRy
b2xsZXIyNnRpbGVHcmlkQ29udGFpbmVyTGF5ZXJOYW1lRXYKIF9fWk43V2ViQ29yZTE0VGlsZUNv
bnRyb2xsZXIyN3RpbGVDYWNoZUxheWVyQm91bmRzQ2hhbmdlZEV2CiBfX1pON1dlYkNvcmUxNFRp
bGVDb250cm9sbGVyQzFFUE5TXzE1UGxhdGZvcm1DQUxheWVyRQogX19aTjdXZWJDb3JlMTRhcmVS
YW5nZXNFcXVhbEVQS05TXzVSYW5nZUVTMl8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcAppbmRleCAzZGY4MDNjOGFhZDcw
MGE0MzMyNDdhZTVjYTZkMTZjZmIzMWU4YzE1Li43NzY5ZDZjNDA2NmI5MjgyN2RlZDdjMjc4MDEz
YzM4MzY5YTE1Yjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9UaWxlQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwCkBAIC00MCw2ICs0MCwxNiBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK1N0cmluZyBUaWxlQ29udHJvbGxlcjo6dGlsZUdyaWRDb250YWluZXJM
YXllck5hbWUoKQoreworICAgIHJldHVybiAiVGlsZUdyaWQgQ29udGFpbmVyIExheWVyIjsKK30K
KworU3RyaW5nIFRpbGVDb250cm9sbGVyOjp6b29tZWRPdXRUaWxlR3JpZENvbnRhaW5lckxheWVy
TmFtZSgpCit7CisgICAgcmV0dXJuICJab29tZWQgT3V0IFRpbGVHcmlkIENvbnRhaW5lciBMYXll
ciI7Cit9CisKIFRpbGVDb250cm9sbGVyOjpUaWxlQ29udHJvbGxlcihQbGF0Zm9ybUNBTGF5ZXIq
IHJvb3RQbGF0Zm9ybUxheWVyKQogICAgIDogbV90aWxlQ2FjaGVMYXllcihyb290UGxhdGZvcm1M
YXllcikKICAgICAsIG1fdGlsZUdyaWQoc3RkOjptYWtlX3VuaXF1ZTxUaWxlR3JpZD4oKnRoaXMp
KQpAQCAtMTEzLDEyICsxMjMsMTQgQEAgdm9pZCBUaWxlQ29udHJvbGxlcjo6c2V0Q29udGVudHNT
Y2FsZShmbG9hdCBzY2FsZSkKIAogICAgIGlmIChtX3pvb21lZE91dFRpbGVHcmlkICYmIG1fem9v
bWVkT3V0VGlsZUdyaWQtPnNjYWxlKCkgPT0gc2NhbGUpIHsKICAgICAgICAgbV90aWxlR3JpZCA9
IFdURjo6bW92ZShtX3pvb21lZE91dFRpbGVHcmlkKTsKKyAgICAgICAgbV90aWxlR3JpZC0+c2V0
SXNab29tZWRPdXRUaWxlR3JpZChmYWxzZSk7CiAgICAgICAgIG1fdGlsZUdyaWQtPnJldmFsaWRh
dGVUaWxlcygwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChtX3pvb21lZE91
dENvbnRlbnRzU2NhbGUgJiYgbV96b29tZWRPdXRDb250ZW50c1NjYWxlID09IHRpbGVHcmlkKCku
c2NhbGUoKSAmJiB0aWxlR3JpZCgpLnNjYWxlKCkgIT0gc2NhbGUgJiYgIW1faGFzVGlsZXNXaXRo
VGVtcG9yYXJ5U2NhbGVGYWN0b3IpIHsKICAgICAgICAgbV96b29tZWRPdXRUaWxlR3JpZCA9IFdU
Rjo6bW92ZShtX3RpbGVHcmlkKTsKKyAgICAgICAgbV96b29tZWRPdXRUaWxlR3JpZC0+c2V0SXNa
b29tZWRPdXRUaWxlR3JpZCh0cnVlKTsKICAgICAgICAgbV90aWxlR3JpZCA9IHN0ZDo6bWFrZV91
bmlxdWU8VGlsZUdyaWQ+KCp0aGlzKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5oCmluZGV4IDdlYzE4MDBkNzA4
MThiYjY5ZDdkNjFlZTU4NTE4YjBiZTc1OTYxYWYuLmZkNmYwYjYyZGY3Zjg0MGYwOWJmMWQ5MDEz
ODE1NTA2NjA1OGUxNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL1RpbGVDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuaApAQCAtNTQsNiArNTQsOSBAQCBjbGFzcyBUaWxlQ29u
dHJvbGxlciBmaW5hbCA6IHB1YmxpYyBUaWxlZEJhY2tpbmcgewogcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIGV4cGxpY2l0IFRpbGVDb250cm9sbGVyKFBsYXRmb3JtQ0FMYXllciopOwogICAg
IH5UaWxlQ29udHJvbGxlcigpOworICAgIAorICAgIHN0YXRpYyBTdHJpbmcgdGlsZUdyaWRDb250
YWluZXJMYXllck5hbWUoKTsKKyAgICBzdGF0aWMgU3RyaW5nIHpvb21lZE91dFRpbGVHcmlkQ29u
dGFpbmVyTGF5ZXJOYW1lKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRpbGVDYWNoZUxh
eWVyQm91bmRzQ2hhbmdlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9UaWxlR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9UaWxlR3JpZC5jcHAKaW5kZXggZDUxZTBiM2VmOTcyMjEzZjcxNDU1ZjJiYTQ1ZmRh
ODFmMjc4N2ZjMy4uZDIxMzQzY2NmYTVmMTcyM2UwN2JjZDZmMGVjN2Q2YTNkZGMxNTNmYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUdyaWQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVHcmlkLmNwcApA
QCAtNDUsOSArNDUsNyBAQCBUaWxlR3JpZDo6VGlsZUdyaWQoVGlsZUNvbnRyb2xsZXImIGNvbnRy
b2xsZXIpCiAgICAgLCBtX3NjYWxlKDEpCiAgICAgLCBtX2NvaG9ydFJlbW92YWxUaW1lcigqdGhp
cywgJlRpbGVHcmlkOjpjb2hvcnRSZW1vdmFsVGltZXJGaXJlZCkKIHsKLSNpZm5kZWYgTkRFQlVH
Ci0gICAgbV9jb250YWluZXJMYXllci5nZXQoKS5zZXROYW1lKCJUaWxlR3JpZCBDb250YWluZXIg
TGF5ZXIiKTsKLSNlbmRpZgorICAgIG1fY29udGFpbmVyTGF5ZXIuZ2V0KCkuc2V0TmFtZShUaWxl
Q29udHJvbGxlcjo6dGlsZUdyaWRDb250YWluZXJMYXllck5hbWUoKSk7CiB9CiAKIFRpbGVHcmlk
Ojp+VGlsZUdyaWQoKQpAQCAtNTgsNiArNTYsMTQgQEAgVGlsZUdyaWQ6On5UaWxlR3JpZCgpCiAg
ICAgICAgIHRpbGUubGF5ZXItPnNldE93bmVyKG51bGxwdHIpOwogfQogCit2b2lkIFRpbGVHcmlk
OjpzZXRJc1pvb21lZE91dFRpbGVHcmlkKGJvb2wgaXNab29tZWRPdXRHcmlkKQoreworICAgIGlm
IChpc1pvb21lZE91dEdyaWQpCisgICAgICAgIG1fY29udGFpbmVyTGF5ZXIuZ2V0KCkuc2V0TmFt
ZShUaWxlQ29udHJvbGxlcjo6em9vbWVkT3V0VGlsZUdyaWRDb250YWluZXJMYXllck5hbWUoKSk7
CisgICAgZWxzZQorICAgICAgICBtX2NvbnRhaW5lckxheWVyLmdldCgpLnNldE5hbWUoVGlsZUNv
bnRyb2xsZXI6OnRpbGVHcmlkQ29udGFpbmVyTGF5ZXJOYW1lKCkpOworfQorCiB2b2lkIFRpbGVH
cmlkOjpzZXRTY2FsZShmbG9hdCBzY2FsZSkKIHsKICAgICBtX3NjYWxlID0gc2NhbGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlR3JpZC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUdyaWQuaAppbmRleCBjNTlh
ZTA5OTJlZmIzMmViNTkzODQ5OTFkMzdlNmU3ZTZiYTFlNDUxLi44Mjg1OTI0MDU5YWQ4MDUxZTgx
ZmMwNTFkMDUxMWNkZTc2YmU5ZmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9UaWxlR3JpZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL1RpbGVHcmlkLmgKQEAgLTUzLDYgKzUzLDggQEAgcHVibGljOgogCiAgICAgUGxh
dGZvcm1DQUxheWVyJiBjb250YWluZXJMYXllcigpIHsgcmV0dXJuIG1fY29udGFpbmVyTGF5ZXI7
IH0KIAorICAgIHZvaWQgc2V0SXNab29tZWRPdXRUaWxlR3JpZChib29sKTsKKwogICAgIHZvaWQg
c2V0U2NhbGUoZmxvYXQpOwogICAgIGZsb2F0IHNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV9zY2Fs
ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tCmluZGV4IDFhZGU5MzBjOTFlZTI2MmQzNzZmOTkyYTViNmY0NzA1ODUxNjlmYjkuLjc4NTEz
MjUyMzIxZGM3NDZlYjVjYmVkNDlkN2RlNWM0OTMwMzRiNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0zNCw2ICszNCw3IEBACiAj
aW1wb3J0ICJGaW5kQ2xpZW50LmgiCiAjaW1wb3J0ICJMZWdhY3lTZXNzaW9uU3RhdGVDb2Rpbmcu
aCIKICNpbXBvcnQgIk5hdmlnYXRpb25TdGF0ZS5oIgorI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVl
U2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLmgiCiAjaW1wb3J0ICJSZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbi5oIgogI2ltcG9ydCAiUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCIKICNpbXBvcnQgIlJl
bW90ZU9iamVjdFJlZ2lzdHJ5TWVzc2FnZXMuaCIKQEAgLTg0NSw2ICs4NDYsMTUgQEAgc3RhdGlj
IHZvaWQgY2hhbmdlQ29udGVudE9mZnNldEJvdW5kZWRJblZhbGlkUmFuZ2UoVUlTY3JvbGxWaWV3
ICpzY3JvbGxWaWV3LCBXZWIKICAgICBzY3JvbGxWaWV3LmNvbnRlbnRPZmZzZXQgPSBjb250ZW50
T2Zmc2V0Qm91bmRlZEluVmFsaWRSYW5nZShzY3JvbGxWaWV3LCBjb250ZW50T2Zmc2V0KTsKIH0K
IAorLSAoV2ViQ29yZTo6RmxvYXRSZWN0KXZpc2libGVSZWN0SW5TY3JlZW5Db29yZGluYXRlcwor
eworICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBib3VuZHMgPSBzZWxmLmJvdW5kczsKKyAgICBib3Vu
ZHMubW92ZUJ5KFtfc2Nyb2xsVmlldyBjb250ZW50T2Zmc2V0XSk7CisgICAgV2ViQ29yZTo6Rmxv
YXRSZWN0IGNvbnRlbnRWaWV3Qm91bmRzID0gW19jb250ZW50VmlldyBib3VuZHNdOworICAgIGJv
dW5kcy5pbnRlcnNlY3QoY29udGVudFZpZXdCb3VuZHMpOworICAgIHJldHVybiBib3VuZHM7Cit9
CisKIC8vIFdlYkNvcmUgc3RvcmVzIHRoZSBwYWdlIHNjYWxlIGZhY3RvciBhcyBmbG9hdCBpbnN0
ZWFkIG9mIGRvdWJsZS4gV2hlbiB3ZSBnZXQgYSBzY2FsZSBmcm9tIFdlYkNvcmUsCiAvLyB3ZSBu
ZWVkIHRvIGlnbm9yZSBkaWZmZXJlbmNlcyB0aGF0IGFyZSB3aXRoaW4gYSBzbWFsbCByb3VuZGlu
ZyBlcnJvciBvbiBmbG9hdHMuCiBzdGF0aWMgaW5saW5lIGJvb2wgYXJlRXNzZW50aWFsbHlFcXVh
bEFzRmxvYXQoZmxvYXQgYSwgZmxvYXQgYikKQEAgLTkxNSw2ICs5MjUsOSBAQCAtICh2b2lkKV9k
aWRDb21taXRMYXllclRyZWU6KGNvbnN0IFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b24mKWxheWVyVHJlZQogICAgICAgICB9CiAgICAgICAgIFtzZWxmIF91cGRhdGVWaXNpYmxlQ29u
dGVudFJlY3RzXTsKICAgICB9CisgICAgCisgICAgaWYgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVl
U2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhKiBzY3JvbGxQZXJmRGF0YSA9IF9wYWdlLT5zY3JvbGxp
bmdQZXJmb3JtYW5jZURhdGEoKSkKKyAgICAgICAgc2Nyb2xsUGVyZkRhdGEtPmRpZENvbW1pdExh
eWVyVHJlZShbc2VsZiB2aXNpYmxlUmVjdEluU2NyZWVuQ29vcmRpbmF0ZXNdKTsKIH0KIAogLSAo
dm9pZClfZHluYW1pY1ZpZXdwb3J0VXBkYXRlQ2hhbmdlZFRhcmdldFRvU2NhbGU6KGRvdWJsZSlu
ZXdTY2FsZSBwb3NpdGlvbjooQ0dQb2ludCluZXdTY3JvbGxQb3NpdGlvbiBuZXh0VmFsaWRMYXll
clRyZWVUcmFuc2FjdGlvbklEOih1aW50NjRfdCluZXh0VmFsaWRMYXllclRyZWVUcmFuc2FjdGlv
bklECkBAIC0xMzczLDYgKzEzODYsOSBAQCAtICh2b2lkKXNjcm9sbFZpZXdEaWRTY3JvbGw6KFVJ
U2Nyb2xsVmlldyAqKXNjcm9sbFZpZXcKICAgICAgICAgW19jdXN0b21Db250ZW50VmlldyBzY3Jv
bGxWaWV3RGlkU2Nyb2xsOihVSVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3XTsKIAogICAgIFtzZWxm
IF91cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzXTsKKyAgICAKKyAgICBpZiAoV2ViS2l0OjpSZW1v
dGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEqIHNjcm9sbFBlcmZEYXRhID0gX3Bh
Z2UtPnNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YSgpKQorICAgICAgICBzY3JvbGxQZXJmRGF0YS0+
ZGlkU2Nyb2xsKFtzZWxmIHZpc2libGVSZWN0SW5TY3JlZW5Db29yZGluYXRlc10pOwogfQogCiAt
ICh2b2lkKXNjcm9sbFZpZXdEaWRab29tOihVSVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3CkBAIC0y
MDg4LDYgKzIxMDQsMzAgQEAgLSAoQk9PTClfaXNTaG93aW5nTmF2aWdhdGlvbkdlc3R1cmVTbmFw
c2hvdAogICAgIHJldHVybiBfcGFnZS0+aXNTaG93aW5nTmF2aWdhdGlvbkdlc3R1cmVTbmFwc2hv
dCgpOwogfQogCisjcHJhZ21hIG1hcmsgc2Nyb2xscGVyZiBtZXRob2RzCisKKy0gKHZvaWQpX3Nl
dFNjcm9sbFBlcmZvcm1hbmNlRGF0YUNvbGxlY3Rpb25FbmFibGVkOihCT09MKWVuYWJsZWQKK3sK
KyAgICBfcGFnZS0+c2V0U2Nyb2xsUGVyZm9ybWFuY2VEYXRhQ29sbGVjdGlvbkVuYWJsZWQoZW5h
YmxlZCk7Cit9CisKKy0gKEJPT0wpX3Njcm9sbFBlcmZvcm1hbmNlRGF0YUNvbGxlY3Rpb25FbmFi
bGVkCit7CisgICAgcmV0dXJuIF9wYWdlLT5zY3JvbGxQZXJmb3JtYW5jZURhdGFDb2xsZWN0aW9u
RW5hYmxlZCgpOworfQorCistIChOU0FycmF5ICopX3Njcm9sbFBlcmZvcm1hbmNlRGF0YQorewor
I2lmIFBMQVRGT1JNKElPUykKKyAgICBpZiAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVTY3JvbGxp
bmdQZXJmb3JtYW5jZURhdGEqIHNjcm9sbFBlZkRhdGEgPSBfcGFnZS0+c2Nyb2xsaW5nUGVyZm9y
bWFuY2VEYXRhKCkpCisgICAgICAgIHJldHVybiBzY3JvbGxQZWZEYXRhLT5kYXRhKCk7CisKKyAg
ICByZXR1cm4gbmlsOworI2Vsc2UKKyAgICByZXR1cm4gbmlsOworI2VuZGlmCit9CisKICNwcmFn
bWEgbWFyayBpT1Mtc3BlY2lmaWMgbWV0aG9kcwogCiAjaWYgUExBVEZPUk0oSU9TKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRl
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUu
aAppbmRleCAzNzI1ODExYzcyMDIxMDYzZDkwNDU3MjVkNmE2NTNkMjVjNGJjYWE1Li5hZWI0ZGUy
MTE1Y2I4MjYwZWQ2NjUwZTUyZmE0NGRhYzdkM2M3NGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtMTgyLDYg
KzE4Miw5IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tGaW5kT3B0aW9ucykg
ewogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGdldHRlcj1faXNEaXNwbGF5aW5n
U3RhbmRhbG9uZUltYWdlRG9jdW1lbnQpIEJPT0wgX2Rpc3BsYXlpbmdTdGFuZGFsb25lSW1hZ2VE
b2N1bWVudDsKIAorQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0U2Nyb2xsUGVyZm9y
bWFuY2VEYXRhQ29sbGVjdGlvbkVuYWJsZWQ6KSBCT09MIF9zY3JvbGxQZXJmb3JtYW5jZURhdGFD
b2xsZWN0aW9uRW5hYmxlZCBXS19BVkFJTEFCTEUoV0tfTUFDX1RCQSwgV0tfSU9TX1RCQSk7CitA
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TQXJyYXkgKl9zY3JvbGxQZXJmb3JtYW5j
ZURhdGEgV0tfQVZBSUxBQkxFKFdLX01BQ19UQkEsIFdLX0lPU19UQkEpOworCiBAZW5kCiAKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1JlbW90ZUxh
eWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL1JlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjFmZjhlMTE1MjA1YzVmODUyMDMwNjBiNDk4ZWU4OTkyMTI1ODJiOTgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvUmVtb3RlTGF5ZXJUcmVl
U2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLmgKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KworI2lmbmRlZiBSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGFfaAorI2Rl
ZmluZSBSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGFfaAorCisjaW1wb3J0
IDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgorI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTsKKwor
Y2xhc3MgUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhIHsKK3B1YmxpYzoK
KyAgICBSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEoUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eSYpOworICAgIH5SZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJm
b3JtYW5jZURhdGEoKTsKKworICAgIHZvaWQgZGlkQ29tbWl0TGF5ZXJUcmVlKGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYgdmlzaWJsZVJlY3QpOworICAgIHZvaWQgZGlkU2Nyb2xsKGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYgdmlzaWJsZVJlY3QpOworCisgICAgTlNBcnJheSogZGF0YSgpOyAv
LyBBcnJheSBvZiBbIHRpbWUsIGV2ZW50IHR5cGUsIHVuZmlsbGVkIHBpeGVsIGNvdW50IF0KKwor
cHJpdmF0ZToKKyAgICB1bnNpZ25lZCBibGFua1BpeGVsQ291bnQoY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiB2aXNpYmxlUmVjdCkgY29uc3Q7CisgICAgCisgICAgUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWFQcm94eSYgbV9kcmF3aW5nQXJlYTsKKyAgICAKKyAgICBzdHJ1Y3QgQmxhbmtQaXhl
bENvdW50IHsKKyAgICAgICAgZW51bSBFdmVudFR5cGUgeyBGaWxsZWQsIEV4cG9zZWQgfTsKKwor
ICAgICAgICBkb3VibGUgc3RhcnRUaW1lOworICAgICAgICBkb3VibGUgZW5kVGltZTsKKyAgICAg
ICAgRXZlbnRUeXBlIGV2ZW50VHlwZTsKKyAgICAgICAgdW5zaWduZWQgYmxhbmtQaXhlbENvdW50
OworICAgICAgICAKKyAgICAgICAgQmxhbmtQaXhlbENvdW50KGRvdWJsZSBzdGFydCwgZG91Ymxl
IGVuZCwgRXZlbnRUeXBlIHR5cGUsIHVuc2lnbmVkIGNvdW50KQorICAgICAgICAgICAgOiBzdGFy
dFRpbWUoc3RhcnQpCisgICAgICAgICAgICAsIGVuZFRpbWUoZW5kKQorICAgICAgICAgICAgLCBl
dmVudFR5cGUodHlwZSkKKyAgICAgICAgICAgICwgYmxhbmtQaXhlbENvdW50KGNvdW50KQorICAg
ICAgICB7IH0KKyAgICAgICAgCisgICAgICAgIGJvb2wgY2FuQ29hbGVzY2UoQmxhbmtQaXhlbENv
dW50OjpFdmVudFR5cGUsIHVuc2lnbmVkIGJsYW5rUGl4ZWxDb3VudCkgY29uc3Q7CisgICAgfTsK
KyAgICAKKyAgICB2b2lkIGFwcGVuZEJsYW5rUGl4ZWxDb3VudChCbGFua1BpeGVsQ291bnQ6OkV2
ZW50VHlwZSwgdW5zaWduZWQgYmxhbmtQaXhlbENvdW50KTsKKworICAgIFZlY3RvcjxCbGFua1Bp
eGVsQ291bnQ+IG1fYmxhbmtQaXhlbENvdW50czsKK307CisKK30KKworI2VuZGlmIC8vIFJlbW90
ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YV9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFu
Y2VEYXRhLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1JlbW90ZUxheWVyVHJl
ZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZDMyMmMxN2QyYzY4MjQz
NTViNGViNDE1ZDY2MzZmNzA4YWNkNDQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0NvY29hL1JlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0
YS5tbQpAQCAtMCwwICsxLDEzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgor
I2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLmgiCisKKyNp
bXBvcnQgIlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkuaCIKKyNpbXBvcnQgIlJlbW90
ZUxheWVyVHJlZUhvc3QuaCIKKyNpbXBvcnQgPFF1YXJ0ekNvcmUvQ0FMYXllci5oPgorI2ltcG9y
dCA8V2ViQ29yZS9UaWxlQ29udHJvbGxlci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKKworUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9y
bWFuY2VEYXRhOjpSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEoUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eSYgZHJhd2luZ0FyZWEpCisgICAgOiBtX2RyYXdpbmdB
cmVhKGRyYXdpbmdBcmVhKQoreworfQorCitSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3Jt
YW5jZURhdGE6On5SZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEoKQorewor
fQorCit2b2lkIFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YTo6ZGlkQ29t
bWl0TGF5ZXJUcmVlKGNvbnN0IEZsb2F0UmVjdCYgdmlzaWJsZVJlY3QpCit7CisgICAgLy8gRklY
TUU6IG1heWJlIHdlIG9ubHkgY2FyZSBhYm91dCBuZXdseSBjcmVhdGVkIHRpbGVzPworICAgIGFw
cGVuZEJsYW5rUGl4ZWxDb3VudChCbGFua1BpeGVsQ291bnQ6OkZpbGxlZCwgYmxhbmtQaXhlbENv
dW50KHZpc2libGVSZWN0KSk7Cit9CisKK3ZvaWQgUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVy
Zm9ybWFuY2VEYXRhOjpkaWRTY3JvbGwoY29uc3QgRmxvYXRSZWN0JiB2aXNpYmxlUmVjdCkKK3sK
KyAgICBhcHBlbmRCbGFua1BpeGVsQ291bnQoQmxhbmtQaXhlbENvdW50OjpFeHBvc2VkLCBibGFu
a1BpeGVsQ291bnQodmlzaWJsZVJlY3QpKTsKK30KKworYm9vbCBSZW1vdGVMYXllclRyZWVTY3Jv
bGxpbmdQZXJmb3JtYW5jZURhdGE6OkJsYW5rUGl4ZWxDb3VudDo6Y2FuQ29hbGVzY2UoQmxhbmtQ
aXhlbENvdW50OjpFdmVudFR5cGUgdHlwZSwgdW5zaWduZWQgcGl4ZWxDb3VudCkgY29uc3QKK3sK
KyAgICByZXR1cm4gZXZlbnRUeXBlID09IHR5cGUgJiYgYmxhbmtQaXhlbENvdW50ID09IHBpeGVs
Q291bnQ7Cit9CisKK3ZvaWQgUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRh
OjphcHBlbmRCbGFua1BpeGVsQ291bnQoQmxhbmtQaXhlbENvdW50OjpFdmVudFR5cGUgZXZlbnRU
eXBlLCB1bnNpZ25lZCBibGFua1BpeGVsQ291bnQpCit7CisgICAgZG91YmxlIG5vdyA9IFdURjo6
bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CisKKyAgICBpZiAoIW1fYmxhbmtQaXhlbENv
dW50cy5pc0VtcHR5KCkgJiYgbV9ibGFua1BpeGVsQ291bnRzLmxhc3QoKS5jYW5Db2FsZXNjZShl
dmVudFR5cGUsIGJsYW5rUGl4ZWxDb3VudCkpIHsKKyAgICAgICAgbV9ibGFua1BpeGVsQ291bnRz
Lmxhc3QoKS5lbmRUaW1lID0gbm93OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9i
bGFua1BpeGVsQ291bnRzLmFwcGVuZChCbGFua1BpeGVsQ291bnQobm93LCBub3csIGV2ZW50VHlw
ZSwgYmxhbmtQaXhlbENvdW50KSk7Cit9CisKK05TQXJyYXkgKlJlbW90ZUxheWVyVHJlZVNjcm9s
bGluZ1BlcmZvcm1hbmNlRGF0YTo6ZGF0YSgpCit7CisgICAgTlNNdXRhYmxlQXJyYXkqIGRhdGFB
cnJheSA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTptX2JsYW5rUGl4ZWxDb3Vu
dHMuc2l6ZSgpXTsKKyAgICAKKyAgICBmb3IgKGF1dG8gcGl4ZWxEYXRhIDogbV9ibGFua1BpeGVs
Q291bnRzKSB7CisgICAgICAgIFtkYXRhQXJyYXkgYWRkT2JqZWN0OkBbCisgICAgICAgICAgICBA
KHBpeGVsRGF0YS5zdGFydFRpbWUpLAorICAgICAgICAgICAgKHBpeGVsRGF0YS5ldmVudFR5cGUg
PT0gQmxhbmtQaXhlbENvdW50OjpGaWxsZWQpID8gQCJmaWxsZWQiIDogQCJleHBvc2VkIiwKKyAg
ICAgICAgICAgIEAocGl4ZWxEYXRhLmJsYW5rUGl4ZWxDb3VudCkKKyAgICAgICAgXV07CisgICAg
fQorICAgIHJldHVybiBkYXRhQXJyYXk7Cit9CisKK3N0YXRpYyBDQUxheWVyICpmaW5kVGlsZUdy
aWRDb250YWluZXJMYXllcihDQUxheWVyICpsYXllcikKK3sKKyAgICBmb3IgKENBTGF5ZXIgKmN1
cnJMYXllciA6IFtsYXllciBzdWJsYXllcnNdKSB7CisgICAgICAgIFN0cmluZyBsYXllck5hbWUg
PSBbY3VyckxheWVyIG5hbWVdOworICAgICAgICBpZiAobGF5ZXJOYW1lID09IFRpbGVDb250cm9s
bGVyOjp0aWxlR3JpZENvbnRhaW5lckxheWVyTmFtZSgpKQorICAgICAgICAgICAgcmV0dXJuIGN1
cnJMYXllcjsKKworICAgICAgICBpZiAoQ0FMYXllciAqZm91bmRMYXllciA9IGZpbmRUaWxlR3Jp
ZENvbnRhaW5lckxheWVyKGN1cnJMYXllcikpCisgICAgICAgICAgICByZXR1cm4gZm91bmRMYXll
cjsKKyAgICB9CisKKyAgICByZXR1cm4gbmlsOworfQorCit1bnNpZ25lZCBSZW1vdGVMYXllclRy
ZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGE6OmJsYW5rUGl4ZWxDb3VudChjb25zdCBGbG9hdFJl
Y3QmIHZpc2libGVSZWN0KSBjb25zdAoreworICAgIENBTGF5ZXIgKnJvb3RMYXllciA9IGFzTGF5
ZXIobV9kcmF3aW5nQXJlYS5yZW1vdGVMYXllclRyZWVIb3N0KCkucm9vdExheWVyKCkpOworCisg
ICAgQ0FMYXllciAqdGlsZUdyaWRDb250YWluZXIgPSBmaW5kVGlsZUdyaWRDb250YWluZXJMYXll
cihyb290TGF5ZXIpOworICAgIGlmICghdGlsZUdyaWRDb250YWluZXIpIHsKKyAgICAgICAgTlNM
b2coQCJGYWlsZWQgdG8gZmluZCBUaWxlR3JpZCBDb250YWluZXIgTGF5ZXIiKTsKKyAgICAgICAg
cmV0dXJuIFVJTlRfTUFYOworICAgIH0KKworICAgIEZsb2F0UmVjdCB2aXNpYmxlUmVjdEV4Y2x1
ZGluZ1Rvb2xiYXIgPSB2aXNpYmxlUmVjdDsKKyAgICBpZiAodmlzaWJsZVJlY3RFeGNsdWRpbmdU
b29sYmFyLnkoKSA8IDApCisgICAgICAgIHZpc2libGVSZWN0RXhjbHVkaW5nVG9vbGJhci5zZXRZ
KDApOworCisgICAgUmVnaW9uIHBhaW50ZWRWaXNpYmxlVGlsZVJlZ2lvbjsKKworICAgIGZvciAo
Q0FMYXllciAqdGlsZUxheWVyIDogW3RpbGVHcmlkQ29udGFpbmVyIHN1YmxheWVyc10pIHsKKyAg
ICAgICAgRmxvYXRSZWN0IHRpbGVSZWN0ID0gW3RpbGVMYXllciBjb252ZXJ0UmVjdDpbdGlsZUxh
eWVyIGJvdW5kc10gdG9MYXllcjp0aWxlR3JpZENvbnRhaW5lcl07CisgICAgCisgICAgICAgIHRp
bGVSZWN0LmludGVyc2VjdCh2aXNpYmxlUmVjdEV4Y2x1ZGluZ1Rvb2xiYXIpOworICAgICAgICAK
KyAgICAgICAgaWYgKCF0aWxlUmVjdC5pc0VtcHR5KCkpCisgICAgICAgICAgICBwYWludGVkVmlz
aWJsZVRpbGVSZWdpb24udW5pdGUoZW5jbG9zaW5nSW50UmVjdCh0aWxlUmVjdCkpOworICAgIH0K
KworICAgIFJlZ2lvbiB1bmNvdmVyZWRSZWdpb24oZW5jbG9zaW5nSW50UmVjdCh2aXNpYmxlUmVj
dEV4Y2x1ZGluZ1Rvb2xiYXIpKTsKKyAgICB1bmNvdmVyZWRSZWdpb24uc3VidHJhY3QocGFpbnRl
ZFZpc2libGVUaWxlUmVnaW9uKTsKKworICAgIHJldHVybiB1bmNvdmVyZWRSZWdpb24udG90YWxB
cmVhKCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
aW5kZXggNjhiYmQwNjk1NGJkYzI2MjAwMDJiN2Y0OTZkMjlhNDBkYjAyOGFjZC4uYWQ3NzhhMWJm
NWZkYTE0ZmI5OTU5NDQxY2U1NWJmMDM0ZmQ5MzM1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEyOCwxMiArMTI4LDEzIEBACiAjZW5kaWYKIAogI2lm
IFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHkuaCIKKyNpbmNsdWRlICJSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEu
aCIKICNpbmNsdWRlICJWaWV3U25hcHNob3RTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUnVu
TG9vcE9ic2VydmVyLmg+CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPUykKLSNpbmNsdWRlICJS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5TWVzc2FnZXMuaCIKICNlbmRpZgpAQCAtMzczLDYgKzM3NCwxMCBAQCBXZWJQYWdlUHJv
eHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkm
IHByb2Nlc3MsIHVpbgogICAgICwgbV9tZWRpYVZvbHVtZSgxKQogICAgICwgbV9tdXRlZChmYWxz
ZSkKICAgICAsIG1fbWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdyh0cnVlKQorICAgICwgbV93YWl0
aW5nRm9yRGlkVXBkYXRlVmlld1N0YXRlKGZhbHNlKQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
ICwgbV9zY3JvbGxQZXJmb3JtYW5jZURhdGFDb2xsZWN0aW9uRW5hYmxlZChmYWxzZSkKKyNlbmRp
ZgogICAgICwgbV9zY3JvbGxQaW5uaW5nQmVoYXZpb3IoRG9Ob3RQaW4pCiAgICAgLCBtX25hdmln
YXRpb25JRCgwKQogICAgICwgbV9jb25maWd1cmF0aW9uUHJlZmVyZW5jZVZhbHVlcyhjb25maWd1
cmF0aW9uLnByZWZlcmVuY2VWYWx1ZXMpCkBAIC01Mjg4LDYgKzUyOTMsMTggQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmNvbmZpcm1Db21wb3NpdGlvbkFzeW5jKCkKICAgICBwcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6Q29uZmlybUNvbXBvc2l0aW9uQXN5bmMoKSwgbV9wYWdlSUQpOwog
fQogCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U2Nyb2xsUGVyZm9ybWFuY2VEYXRhQ29sbGVjdGlv
bkVuYWJsZWQoYm9vbCBlbmFibGVkKQoreworICAgIGlmIChlbmFibGVkID09IG1fc2Nyb2xsUGVy
Zm9ybWFuY2VEYXRhQ29sbGVjdGlvbkVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
c2Nyb2xsUGVyZm9ybWFuY2VEYXRhQ29sbGVjdGlvbkVuYWJsZWQgPSBlbmFibGVkOworCisgICAg
aWYgKG1fc2Nyb2xsUGVyZm9ybWFuY2VEYXRhQ29sbGVjdGlvbkVuYWJsZWQgJiYgIW1fc2Nyb2xs
aW5nUGVyZm9ybWFuY2VEYXRhKQorICAgICAgICBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlRGF0YSA9
IHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRh
Pihkb3duY2FzdDxSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5PigqbV9kcmF3aW5nQXJl
YSkpOworICAgIGVsc2UgaWYgKCFtX3Njcm9sbFBlcmZvcm1hbmNlRGF0YUNvbGxlY3Rpb25FbmFi
bGVkKQorICAgICAgICBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlRGF0YSA9IG51bGxwdHI7Cit9CiAj
ZW5kaWYKIAogdm9pZCBXZWJQYWdlUHJveHk6OnRha2VTbmFwc2hvdChJbnRSZWN0IHJlY3QsIElu
dFNpemUgYml0bWFwU2l6ZSwgU25hcHNob3RPcHRpb25zIG9wdGlvbnMsIHN0ZDo6ZnVuY3Rpb248
dm9pZCAoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmLCBDYWxsYmFja0Jhc2U6OkVycm9y
KT4gY2FsbGJhY2tGdW5jdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAppbmRleCAzMTkwZTYyYWZlZTlhODYwMGJkMjQ4YmRmNjcxMDg4NGY4YjI4NTEzLi4wMzIxMWU0
MzEwNzY3OTNhZjNmM2QxZjQyMTcyYzgzNjU3MDY1MGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xNjAsNiArMTYwLDcgQEAgY2xhc3MgTmF0aXZlV2ViS2V5
Ym9hcmRFdmVudDsKIGNsYXNzIE5hdGl2ZVdlYk1vdXNlRXZlbnQ7CiBjbGFzcyBOYXRpdmVXZWJX
aGVlbEV2ZW50OwogY2xhc3MgUGFnZUNsaWVudDsKK2NsYXNzIFJlbW90ZUxheWVyVHJlZVNjcm9s
bGluZ1BlcmZvcm1hbmNlRGF0YTsKIGNsYXNzIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOwog
Y2xhc3MgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTsKIGNsYXNzIFN0cmluZ1BhaXJW
ZWN0b3I7CkBAIC01MjIsNiArNTIzLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENvbXBvc2l0
aW9uQXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25V
bmRlcmxpbmU+IHVuZGVybGluZXMsIGNvbnN0IEVkaXRpbmdSYW5nZSYgc2VsZWN0aW9uUmFuZ2Us
IGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5nZSk7CiAgICAgdm9pZCBjb25maXJt
Q29tcG9zaXRpb25Bc3luYygpOwogCisgICAgdm9pZCBzZXRTY3JvbGxQZXJmb3JtYW5jZURhdGFD
b2xsZWN0aW9uRW5hYmxlZChib29sKTsKKyAgICBib29sIHNjcm9sbFBlcmZvcm1hbmNlRGF0YUNv
bGxlY3Rpb25FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxQZXJmb3JtYW5jZURhdGFD
b2xsZWN0aW9uRW5hYmxlZDsgfQorICAgIFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1h
bmNlRGF0YSogc2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhKCkgeyByZXR1cm4gbV9zY3JvbGxpbmdQ
ZXJmb3JtYW5jZURhdGEuZ2V0KCk7IH0KKyNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKKwogI2lm
IFBMQVRGT1JNKE1BQykKICAgICB2b2lkIGluc2VydERpY3RhdGVkVGV4dEFzeW5jKGNvbnN0IFN0
cmluZyYgdGV4dCwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYWNlbWVudFJhbmdlLCBjb25zdCBW
ZWN0b3I8V2ViQ29yZTo6VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlPiYgZGljdGF0aW9uQWx0ZXJu
YXRpdmVzLCBib29sIHJlZ2lzdGVyVW5kb0dyb3VwKTsKICAgICB2b2lkIGF0dHJpYnV0ZWRTdWJz
dHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdSYW5nZSYsIHN0ZDo6ZnVu
Y3Rpb248dm9pZCAoY29uc3QgQXR0cmlidXRlZFN0cmluZyYsIGNvbnN0IEVkaXRpbmdSYW5nZSYs
IENhbGxiYWNrQmFzZTo6RXJyb3IpPik7CkBAIC01MzgsMjIgKzU0NCwyNCBAQCBwdWJsaWM6CiAg
ICAgV2ViQ29yZTo6SW50UmVjdCBmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZShjb25zdCBFZGl0
aW5nUmFuZ2UmKTsKICAgICBib29sIGV4ZWN1dGVLZXlwcmVzc0NvbW1hbmRzKGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQ+Jik7CiAgICAgdm9pZCBjYW5jZWxDb21wb3NpdGlv
bigpOwotI2VuZGlmCisjZW5kaWYgLy8gIVVTRShBU1lOQ19OU1RFWFRJTlBVVENMSUVOVCkKIAog
ICAgIFdLVmlldyogd2tWaWV3KCkgY29uc3Q7CiAgICAgdm9pZCBpbnRyaW5zaWNDb250ZW50U2l6
ZURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBpbnRyaW5zaWNDb250ZW50U2l6ZSk7
CiAgICAgQ0dSZWN0IGJvdW5kc09mTGF5ZXJJbkxheWVyQmFja2VkV2luZG93Q29vcmRpbmF0ZXMo
Q0FMYXllciAqKSBjb25zdDsKLSNlbmRpZgotI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQorI2Vu
ZGlmIC8vIFBMQVRGT1JNKE1BQykKKwogI2lmIFBMQVRGT1JNKEVGTCkKICAgICB2b2lkIGhhbmRs
ZUlucHV0TWV0aG9kS2V5ZG93bihib29sJiBoYW5kbGVkKTsKICAgICB2b2lkIGNvbmZpcm1Db21w
b3NpdGlvbihjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldENvbXBvc2l0aW9uKGNvbnN0IFN0
cmluZyYsIFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4mLCBpbnQpOwogICAg
IHZvaWQgY2FuY2VsQ29tcG9zaXRpb24oKTsKICNlbmRpZgorCiAjaWYgUExBVEZPUk0oR1RLKQog
ICAgIFBsYXRmb3JtV2lkZ2V0IHZpZXdXaWRnZXQoKTsKICNlbmRpZgorCiAjaWYgVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTX01VTFRJUFJPQ0VTUykKICAgICB2b2lkIGNvbW1pdFBhZ2VUcmFuc2l0
aW9uVmlld3BvcnQoKTsKICNlbmRpZgpAQCAtNTYxLDkgKzU2OSwxMSBAQCBwdWJsaWM6CiAgICAg
dm9pZCBoYW5kbGVNb3VzZUV2ZW50KGNvbnN0IE5hdGl2ZVdlYk1vdXNlRXZlbnQmKTsKICAgICB2
b2lkIGhhbmRsZVdoZWVsRXZlbnQoY29uc3QgTmF0aXZlV2ViV2hlZWxFdmVudCYpOwogICAgIHZv
aWQgaGFuZGxlS2V5Ym9hcmRFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50Jik7CisK
ICNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKICAgICB2b2lkIGhhbmRsZVRvdWNoRXZlbnRT
eW5jaHJvbm91c2x5KGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZlbnQmKTsKICAgICB2b2lkIGhhbmRs
ZVRvdWNoRXZlbnRBc3luY2hyb25vdXNseShjb25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50Jik7CisK
ICNlbGlmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgdm9pZCBoYW5kbGVUb3VjaEV2ZW50KGNv
bnN0IE5hdGl2ZVdlYlRvdWNoRXZlbnQmKTsKICNlbmRpZgpAQCAtMTYwMiw2ICsxNjEyLDkgQEAg
cHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5n
PiBtX3RlbXBvcmFyeVBERkZpbGVzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpSdW5M
b29wT2JzZXJ2ZXI+IG1fdmlld1N0YXRlQ2hhbmdlRGlzcGF0Y2hlcjsKKworICAgIHN0ZDo6dW5p
cXVlX3B0cjxSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGE+IG1fc2Nyb2xs
aW5nUGVyZm9ybWFuY2VEYXRhOworICAgIGJvb2wgbV9zY3JvbGxQZXJmb3JtYW5jZURhdGFDb2xs
ZWN0aW9uRW5hYmxlZDsKICNlbmRpZgogICAgIFVzZXJPYnNlcnZhYmxlUGFnZVRva2VuIG1fcGFn
ZUlzVXNlck9ic2VydmFibGVDb3VudDsKICAgICBQcm9jZXNzU3VwcHJlc3Npb25EaXNhYmxlZFRv
a2VuIG1fcHJldmVudFByb2Nlc3NTdXBwcmVzc2lvbkNvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktp
dDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDE0MzU1ZWVjYjYyNGY4
ZTg1NWNlN2ZkNTkyZWRiZDY1YmUxZjk0YzkuLmY1MGIxZWRjMTc0NzEyMGExZGM4YmI2YzgyOGY1
M2FiNGI3YmZjZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTEyMCw2ICsxMjAsOCBAQAogCQkwRkNCNEU2RDE4QkJGMjZBMDAw
RkNGQzkgLyogV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDQjRFNkIxOEJCRjI2QTAwMEZDRkM5IC8qIFdL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSAqLzsgfTsKIAkJMEZGMjRBMkQxODc5RTRCQzAwM0FC
RjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGMjRBMkIx
ODc5RTRCQzAwM0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwICovOyB9OwogCQkwRkYyNEEyRTE4NzlFNEJDMDAzQUJGMEMgLyogUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkYyNEEyQzE4NzlFNEJDMDAzQUJGMEMgLyogUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmggKi87IH07CisJCTBGRjI2NDlG
MUExRkY5QzYwMDFGRTc1OSAvKiBSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURh
dGEubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjcw
N0M3NzFBMUZFRTgzMDBEQTdBNDUgLyogUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFu
Y2VEYXRhLm1tICovOyB9OworCQkwRkYyNjRBMDFBMUZGOUNDMDAxRkU3NTkgLyogUmVtb3RlTGF5
ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjcwN0M3OTFBMUZFRUEzMDBEQTdBNDUgLyogUmVtb3Rl
TGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLmggKi87IH07CiAJCTFBMDAyRDQzMTk2
QjMzNzAwMEI5QUQ0NCAvKiBfV0tTZXNzaW9uU3RhdGVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEwMDJENDIxOTZCMzM3MDAwQjlBRDQ0
IC8qIF9XS1Nlc3Npb25TdGF0ZUludGVybmFsLmggKi87IH07CiAJCTFBMDAyRDQ0MTk2QjMzODkw
MEI5QUQ0NCAvKiBfV0tTZXNzaW9uU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFBMDAyRDNGMTk2QjMyOTQwMEI5QUQ0NCAvKiBfV0tTZXNzaW9u
U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkxQTAwMkQ0NTE5NkIzMzhFMDBCOUFENDQgLyogX1dLU2Vzc2lvblN0YXRlLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEwMDJEM0UxOTZCMzI5NDAw
QjlBRDQ0IC8qIF9XS1Nlc3Npb25TdGF0ZS5tbSAqLzsgfTsKQEAgLTIwODUsNiArMjA4Nyw4IEBA
CiAJCTBGNTk0N0E2MTg3QjUxNzYwMDQzNzg1NyAvKiBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRv
ck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVNjcm9s
bGluZ0Nvb3JkaW5hdG9yTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEY1RTIwMDExOEU3NzA1MTAwM0VDM0U1IC8qIFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQbGF0Zm9ybUNBQW5pbWF0
aW9uUmVtb3RlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjVFMjAwMjE4RTc3
MDUxMDAzRUMzRTUgLyogUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNzA3Qzc3MUExRkVFODMwMERBN0E0NSAvKiBSZW1vdGVM
YXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURh
dGEubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNzA3Qzc5MUExRkVFQTMwMERB
N0E0NSAvKiBSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9y
bWFuY2VEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOTMxQzFBMThDNTcx
MTkwMERCQTdDMyAvKiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9s
bGluZ05vZGVJT1MuaDsgcGF0aCA9IFNjcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93
U2Nyb2xsaW5nTm9kZUlPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjkzMUMx
QjE4QzU3MTE5MDBEQkE3QzMgLyogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlP
Uy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFNjcm9sbGluZ1Ry
ZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW07IHBhdGggPSBTY3JvbGxpbmcvaW9zL1Njcm9s
bGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGQjY1OTIyMTIwOEI0REIwMDQ0ODE2QyAvKiBEcmF3aW5nQXJlYUluZm8uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRHJhd2luZ0FyZWFJbmZvLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NzEzLDYgKzQ3MTcsOCBAQAogCQkJCTFBQkMzREYz
MTg5OUU0MzcwMDRGMDYyNiAvKiBOYXZpZ2F0aW9uU3RhdGUubW0gKi8sCiAJCQkJMUEwMDJENDcx
OTZCMzQ1RDAwQjlBRDQ0IC8qIFNlc3Npb25TdGF0ZUNvZGluZy5oICovLAogCQkJCTFBMDAyRDQ2
MTk2QjM0NUQwMEI5QUQ0NCAvKiBTZXNzaW9uU3RhdGVDb2RpbmcubW0gKi8sCisJCQkJMEY3MDdD
NzkxQTFGRUVBMzAwREE3QTQ1IC8qIFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNl
RGF0YS5oICovLAorCQkJCTBGNzA3Qzc3MUExRkVFODMwMERBN0E0NSAvKiBSZW1vdGVMYXllclRy
ZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEubW0gKi8sCiAJCQkJMUFGRTQzNjQxOEI2QzA4MTAw
OUM3QTQ4IC8qIFVJRGVsZWdhdGUuaCAqLywKIAkJCQkxQUZFNDM2MzE4QjZDMDgxMDA5QzdBNDgg
LyogVUlEZWxlZ2F0ZS5tbSAqLywKIAkJCQkxQUMwMjczRTE5NjYyMkQ2MDBDMTJCNzUgLyogV2Vi
UGFnZVByb3h5Q29jb2EubW0gKi8sCkBAIC03NjgwLDYgKzc2ODYsNyBAQAogCQkJCUJDRTQ2OTU2
MTIxNEU2Q0IwMDBCOThFQiAvKiBXZWJGb3JtU3VibWlzc2lvbkxpc3RlbmVyUHJveHkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDMDMyRDhEMTBGNDM3QTAwMDU4QzE1QSAvKiBXZWJGcmFtZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkNFNDY5NzcxMjE0RjI3QjAwMEI5OEVCIC8qIFdlYkZyYW1lTGlz
dGVuZXJQcm94eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZGMjY0QTAxQTFGRjlDQzAwMUZFNzU5
IC8qIFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMwMzJEN0YxMEY0Mzc4RDAwNThDMTVBIC8qIFdlYkZyYW1lTG9hZGVyQ2xpZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzkxRjJDQjEyMUI2N0FEMDBFQkY3RTggLyogV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCOUY2QTAxMTIzQTg0
QjAwQTEzN0UwIC8qIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5oIGluIEhlYWRlcnMgKi8s
CkBAIC05MjY2LDYgKzkyNzMsNyBAQAogCQkJCTFBQTNENzVCMTY1MUI0NEYwMDg3MTNEMCAvKiBS
ZW1vdGVMYXllclRyZWVIb3N0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYwQzM2NTgxOEMwNTFC
QTAwRjYwN0Q3IC8qIFJlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0gaW4gU291cmNlcyAqLywKIAkJ
CQkyRERFMEFGQjE4Mjk4Q0M5MDBGOTdFQUEgLyogUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBs
aWVyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMEZGMjY0OUYxQTFGRjlDNjAwMUZFNzU5IC8qIFJl
bW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTFBRjFBQzZCMTY1MTc1OUUwMEMxN0Q3RiAvKiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlv
bi5tbSBpbiBTb3VyY2VzICovLAogCQkJCUUxQjc4NDczMTYzRjI1M0UwMDA3QjY5MiAvKiBSZW1v
dGVOZXR3b3JraW5nQ29udGV4dC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBQzEzMzdGMTg1OTBB
RTQwMEYzRUMwNSAvKiBSZW1vdGVPYmplY3RSZWdpc3RyeS5tbSBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvV2ViS2l0Lnhjd29ya3NwYWNlL3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvQWxsIFNv
dXJjZS54Y3NjaGVtZSBiL1dlYktpdC54Y3dvcmtzcGFjZS94Y3NoYXJlZGRhdGEveGNzY2hlbWVz
L0FsbCBTb3VyY2UueGNzY2hlbWUKaW5kZXggMjIzZTg4YmJjNDBlNTlhMmUzZjQ3NjYyMWNkMzIw
ZmNmNWJlNTNmZS4uYTQxOTgxZTFlZDc1NTNiZWIzZThiYjNiYzJlNDgxNWM2NGVhZTE2ZiAxMDA2
NDQKLS0tIGEvV2ViS2l0Lnhjd29ya3NwYWNlL3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvQWxsIFNv
dXJjZS54Y3NjaGVtZQkKKysrIGIvV2ViS2l0Lnhjd29ya3NwYWNlL3hjc2hhcmVkZGF0YS94Y3Nj
aGVtZXMvQWxsIFNvdXJjZS54Y3NjaGVtZQkKQEAgLTE2Miw4ICsxNjIsMTAgQEAKICAgICAgIGJ1
aWxkQ29uZmlndXJhdGlvbiA9ICJEZWJ1ZyIKICAgICAgIGlnbm9yZXNQZXJzaXN0ZW50U3RhdGVP
bkxhdW5jaCA9ICJZRVMiCiAgICAgICBkZWJ1Z0RvY3VtZW50VmVyc2lvbmluZyA9ICJZRVMiCisg
ICAgICBkZWJ1Z1NlcnZpY2VFeHRlbnNpb24gPSAiaW50ZXJuYWwiCiAgICAgICBhbGxvd0xvY2F0
aW9uU2ltdWxhdGlvbiA9ICJZRVMiPgotICAgICAgPEJ1aWxkYWJsZVByb2R1Y3RSdW5uYWJsZT4K
KyAgICAgIDxCdWlsZGFibGVQcm9kdWN0UnVubmFibGUKKyAgICAgICAgIHJ1bm5hYmxlRGVidWdn
aW5nTW9kZSA9ICIwIj4KICAgICAgICAgIDxCdWlsZGFibGVSZWZlcmVuY2UKICAgICAgICAgICAg
IEJ1aWxkYWJsZUlkZW50aWZpZXIgPSAicHJpbWFyeSIKICAgICAgICAgICAgIEJsdWVwcmludElk
ZW50aWZpZXIgPSAiOEQxMTA3MjYwNDg2Q0VCODAwRTQ3MDkwIgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244775</attachid>
            <date>2015-01-16 11:14:48 -0800</date>
            <delta_ts>2015-01-16 11:36:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140474-20150116111455.patch</filename>
            <type>text/plain</type>
            <size>32087</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc4NTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzRhNzE1MWYyYjBhYjhl
NzM3YzI3NTBlY2JjYjk5NzBhYjJhMzJhMy4uZjY3OGQ5ZjY5NjNkOWM2OGYwNDBlMTY5YjlkZjU1
M2ExMzJiOThjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE1LTAxLTE2ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIHdheSB0
byBjb2xsZWN0IHNjcm9sbGluZyBwZXJmb3JtYW5jZSBkYXRhICh2aWV3cG9ydCB0aWxlIGNvdmVy
YWdlKSB3aXRoIFVJLXNpZGUgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MDQ3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhY2Nlc3NvcnMgZm9yIHN0YW5kYXJkIG5hbWVzIGZv
ciBjb250YWluZXIgQ0FMYXllciBmb3IgZWFjaCBvZiB0aGUgdGlsZSBncmlkcywKKyAgICAgICAg
YW5kIHdoZW4gdGlsZSBncmlkcyBhcmUgc3dhcHBlZCwgdXBkYXRlIHRob3NlIG5hbWVzIGFzIGFw
cHJvcHJpYXRlLgorICAgICAgICAKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUaWxlQ29udHJvbGxlcjo6dGlsZUdyaWRDb250YWluZXJMYXllck5hbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6Onpvb21lZE91dFRpbGVHcmlkQ29udGFpbmVyTGF5
ZXJOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDb250cm9sbGVyOjpzZXRDb250ZW50c1Nj
YWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVHcmlkLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRpbGVHcmlkOjpUaWxlR3JpZCk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlR3JpZDo6
c2V0SXNab29tZWRPdXRUaWxlR3JpZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
VGlsZUdyaWQuaDoKKwogMjAxNS0wMS0xNCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxl
LmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yIGFuZCByZWd1bGFyIGNvbnNvbGUgdXNlIGRp
ZmZlcmVudCBzb3VyY2UgY29kZSBsb2NhdGlvbnMgZm9yIG1lc3NhZ2VzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
ZTdkNTM4NTBhZjIxYTkyYzIzNDc3MWI1ZjllZjBiNDdkNTM5ZDIxMC4uZTI1ZjQ5YzU3Y2ViNGM3
MGZiNDMxYTBlMDg5MjhlZWRkZDFiYjA5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisy
MDE1LTAxLTE2ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAg
ICAgIEFkZCBhIHdheSB0byBjb2xsZWN0IHNjcm9sbGluZyBwZXJmb3JtYW5jZSBkYXRhICh2aWV3
cG9ydCB0aWxlIGNvdmVyYWdlKSB3aXRoIFVJLXNpZGUgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MDQ3NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQWRkIGEgcHJpdmF0
ZSBtZXRob2QgdG8gZW5hYmxlIHNjcm9sbGluZyBkYXRhIGNvbGxlY3Rpb24gdG8gV0tXZWJWaWV3
LiBXaGVuIGVuYWJsZWQsIGNyZWF0ZQorICAgICAgICBhIFJlbW90ZUxheWVyVHJlZVNjcm9sbGlu
Z1BlcmZvcm1hbmNlRGF0YSBvYmplY3QgdGhhdCBjb2xsZWN0cyAiYmxhbmsgcGl4ZWwiIGRhdGEg
b24KKyAgICAgICAgZXZlcnkgbGF5ZXIgdHJlZSBjb21taXQgYW5kIHNjcm9sbCwgYW5kIHN0b3Jl
cyB0aGVtIGluIGEgdmVjdG9yLiBBIHNlY29uZCBTUEkgY2FsbAorICAgICAgICBhbGxvd3MgcmV0
cmlldmFsIG9mIGFuIE5TQXJyYXkgb2YgdGhpcyBkYXRhLgorICAgICAgICAKKyAgICAgICAgVG8g
YWxsb3cgUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhIHRvIGZpbmQgdGhl
IGNvcnJlY3QgbGF5ZXIgd2hpY2gKKyAgICAgICAgY29udGFpbnMgdGhlIG1haW4gdGlsZSBncmlk
LCB3ZSBzZXQgYSBsYXllciBuYW1lIG9uIHRoZSBhcHByb3ByaWF0ZSBsYXllciAoZXZlbgorICAg
ICAgICBpbiByZWxlYXNlIGJ1aWxkcykuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHZpc2libGVSZWN0SW5TY3JlZW5D
b29yZGluYXRlc10pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2RpZENvbW1pdExheWVyVHJlZTpd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHNjcm9sbFZpZXdEaWRTY3JvbGw6XSk6CisgICAgICAg
ICgtW1dLV2ViVmlldyBfc2V0U2Nyb2xsUGVyZm9ybWFuY2VEYXRhQ29sbGVjdGlvbkVuYWJsZWQ6
XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2Nyb2xsUGVyZm9ybWFuY2VEYXRhQ29sbGVjdGlv
bkVuYWJsZWRdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zY3JvbGxQZXJmb3JtYW5jZURhdGFd
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFu
Y2VEYXRhLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVTY3JvbGxp
bmdQZXJmb3JtYW5jZURhdGE6OkJsYW5rUGl4ZWxDb3VudDo6QmxhbmtQaXhlbENvdW50KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFu
Y2VEYXRhLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlU2Nyb2xs
aW5nUGVyZm9ybWFuY2VEYXRhOjpSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURh
dGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5j
ZURhdGE6On5SZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGE6OmRpZENv
bW1pdExheWVyVHJlZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVNjcm9sbGlu
Z1BlcmZvcm1hbmNlRGF0YTo6ZGlkU2Nyb2xsKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5
ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhOjpCbGFua1BpeGVsQ291bnQ6OmNhbkNvYWxl
c2NlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFu
Y2VEYXRhOjphcHBlbmRCbGFua1BpeGVsQ291bnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVM
YXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGE6OmRhdGEpOgorICAgICAgICAoV2ViS2l0
OjpmaW5kVGlsZUdyaWRDb250YWluZXJMYXllcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxh
eWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YTo6YmxhbmtQaXhlbENvdW50KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpXZWJQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNl
dFNjcm9sbFBlcmZvcm1hbmNlRGF0YUNvbGxlY3Rpb25FbmFibGVkKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2Ny
b2xsUGVyZm9ybWFuY2VEYXRhQ29sbGVjdGlvbkVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YSk6CisgICAgICAgICogV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE1LTAxLTE1ICBBbmRlcnMgQ2FybHNz
b24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgQ2xlYXJpbmcgdGhlIHdlYnNpdGUg
ZGF0YSBzdG9yZSBzaG91bGQgY2xlYXIgbG9jYWwgc3RvcmFnZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpp
bmRleCA2OWVjMjFjMzQ3NWRmYTRjYWQzYTE2Nzg0MjQ0MzEyODJhNzk0YzAwLi4zMjVlNzc2ODMy
Y2UyMWQ2ZTU5MWM4OWM4MDFmZGZiMTBhZDBiNTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAt
NDc3LDYgKzQ3Nyw3IEBAIF9fWk43V2ViQ29yZTE0VGlsZUNvbnRyb2xsZXIyMXNldEFjY2VsZXJh
dGVzRHJhd2luZ0ViCiBfX1pON1dlYkNvcmUxNFRpbGVDb250cm9sbGVyMjFzZXROZWVkc0Rpc3Bs
YXlJblJlY3RFUktOU183SW50UmVjdEUKIF9fWk43V2ViQ29yZTE0VGlsZUNvbnRyb2xsZXIyM3Nl
dFRpbGVEZWJ1Z0JvcmRlckNvbG9yRU5TXzVDb2xvckUKIF9fWk43V2ViQ29yZTE0VGlsZUNvbnRy
b2xsZXIyM3NldFRpbGVEZWJ1Z0JvcmRlcldpZHRoRWYKK19fWk43V2ViQ29yZTE0VGlsZUNvbnRy
b2xsZXIyNnRpbGVHcmlkQ29udGFpbmVyTGF5ZXJOYW1lRXYKIF9fWk43V2ViQ29yZTE0VGlsZUNv
bnRyb2xsZXIyN3RpbGVDYWNoZUxheWVyQm91bmRzQ2hhbmdlZEV2CiBfX1pON1dlYkNvcmUxNFRp
bGVDb250cm9sbGVyQzFFUE5TXzE1UGxhdGZvcm1DQUxheWVyRQogX19aTjdXZWJDb3JlMTRhcmVS
YW5nZXNFcXVhbEVQS05TXzVSYW5nZUVTMl8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcAppbmRleCAzZGY4MDNjOGFhZDcw
MGE0MzMyNDdhZTVjYTZkMTZjZmIzMWU4YzE1Li43NzY5ZDZjNDA2NmI5MjgyN2RlZDdjMjc4MDEz
YzM4MzY5YTE1Yjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9UaWxlQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwCkBAIC00MCw2ICs0MCwxNiBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK1N0cmluZyBUaWxlQ29udHJvbGxlcjo6dGlsZUdyaWRDb250YWluZXJM
YXllck5hbWUoKQoreworICAgIHJldHVybiAiVGlsZUdyaWQgQ29udGFpbmVyIExheWVyIjsKK30K
KworU3RyaW5nIFRpbGVDb250cm9sbGVyOjp6b29tZWRPdXRUaWxlR3JpZENvbnRhaW5lckxheWVy
TmFtZSgpCit7CisgICAgcmV0dXJuICJab29tZWQgT3V0IFRpbGVHcmlkIENvbnRhaW5lciBMYXll
ciI7Cit9CisKIFRpbGVDb250cm9sbGVyOjpUaWxlQ29udHJvbGxlcihQbGF0Zm9ybUNBTGF5ZXIq
IHJvb3RQbGF0Zm9ybUxheWVyKQogICAgIDogbV90aWxlQ2FjaGVMYXllcihyb290UGxhdGZvcm1M
YXllcikKICAgICAsIG1fdGlsZUdyaWQoc3RkOjptYWtlX3VuaXF1ZTxUaWxlR3JpZD4oKnRoaXMp
KQpAQCAtMTEzLDEyICsxMjMsMTQgQEAgdm9pZCBUaWxlQ29udHJvbGxlcjo6c2V0Q29udGVudHNT
Y2FsZShmbG9hdCBzY2FsZSkKIAogICAgIGlmIChtX3pvb21lZE91dFRpbGVHcmlkICYmIG1fem9v
bWVkT3V0VGlsZUdyaWQtPnNjYWxlKCkgPT0gc2NhbGUpIHsKICAgICAgICAgbV90aWxlR3JpZCA9
IFdURjo6bW92ZShtX3pvb21lZE91dFRpbGVHcmlkKTsKKyAgICAgICAgbV90aWxlR3JpZC0+c2V0
SXNab29tZWRPdXRUaWxlR3JpZChmYWxzZSk7CiAgICAgICAgIG1fdGlsZUdyaWQtPnJldmFsaWRh
dGVUaWxlcygwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChtX3pvb21lZE91
dENvbnRlbnRzU2NhbGUgJiYgbV96b29tZWRPdXRDb250ZW50c1NjYWxlID09IHRpbGVHcmlkKCku
c2NhbGUoKSAmJiB0aWxlR3JpZCgpLnNjYWxlKCkgIT0gc2NhbGUgJiYgIW1faGFzVGlsZXNXaXRo
VGVtcG9yYXJ5U2NhbGVGYWN0b3IpIHsKICAgICAgICAgbV96b29tZWRPdXRUaWxlR3JpZCA9IFdU
Rjo6bW92ZShtX3RpbGVHcmlkKTsKKyAgICAgICAgbV96b29tZWRPdXRUaWxlR3JpZC0+c2V0SXNa
b29tZWRPdXRUaWxlR3JpZCh0cnVlKTsKICAgICAgICAgbV90aWxlR3JpZCA9IHN0ZDo6bWFrZV91
bmlxdWU8VGlsZUdyaWQ+KCp0aGlzKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5oCmluZGV4IDdlYzE4MDBkNzA4
MThiYjY5ZDdkNjFlZTU4NTE4YjBiZTc1OTYxYWYuLmZkNmYwYjYyZGY3Zjg0MGYwOWJmMWQ5MDEz
ODE1NTA2NjA1OGUxNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL1RpbGVDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuaApAQCAtNTQsNiArNTQsOSBAQCBjbGFzcyBUaWxlQ29u
dHJvbGxlciBmaW5hbCA6IHB1YmxpYyBUaWxlZEJhY2tpbmcgewogcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIGV4cGxpY2l0IFRpbGVDb250cm9sbGVyKFBsYXRmb3JtQ0FMYXllciopOwogICAg
IH5UaWxlQ29udHJvbGxlcigpOworICAgIAorICAgIHN0YXRpYyBTdHJpbmcgdGlsZUdyaWRDb250
YWluZXJMYXllck5hbWUoKTsKKyAgICBzdGF0aWMgU3RyaW5nIHpvb21lZE91dFRpbGVHcmlkQ29u
dGFpbmVyTGF5ZXJOYW1lKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRpbGVDYWNoZUxh
eWVyQm91bmRzQ2hhbmdlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9UaWxlR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9UaWxlR3JpZC5jcHAKaW5kZXggZDUxZTBiM2VmOTcyMjEzZjcxNDU1ZjJiYTQ1ZmRh
ODFmMjc4N2ZjMy4uZDIxMzQzY2NmYTVmMTcyM2UwN2JjZDZmMGVjN2Q2YTNkZGMxNTNmYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUdyaWQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVHcmlkLmNwcApA
QCAtNDUsOSArNDUsNyBAQCBUaWxlR3JpZDo6VGlsZUdyaWQoVGlsZUNvbnRyb2xsZXImIGNvbnRy
b2xsZXIpCiAgICAgLCBtX3NjYWxlKDEpCiAgICAgLCBtX2NvaG9ydFJlbW92YWxUaW1lcigqdGhp
cywgJlRpbGVHcmlkOjpjb2hvcnRSZW1vdmFsVGltZXJGaXJlZCkKIHsKLSNpZm5kZWYgTkRFQlVH
Ci0gICAgbV9jb250YWluZXJMYXllci5nZXQoKS5zZXROYW1lKCJUaWxlR3JpZCBDb250YWluZXIg
TGF5ZXIiKTsKLSNlbmRpZgorICAgIG1fY29udGFpbmVyTGF5ZXIuZ2V0KCkuc2V0TmFtZShUaWxl
Q29udHJvbGxlcjo6dGlsZUdyaWRDb250YWluZXJMYXllck5hbWUoKSk7CiB9CiAKIFRpbGVHcmlk
Ojp+VGlsZUdyaWQoKQpAQCAtNTgsNiArNTYsMTQgQEAgVGlsZUdyaWQ6On5UaWxlR3JpZCgpCiAg
ICAgICAgIHRpbGUubGF5ZXItPnNldE93bmVyKG51bGxwdHIpOwogfQogCit2b2lkIFRpbGVHcmlk
OjpzZXRJc1pvb21lZE91dFRpbGVHcmlkKGJvb2wgaXNab29tZWRPdXRHcmlkKQoreworICAgIGlm
IChpc1pvb21lZE91dEdyaWQpCisgICAgICAgIG1fY29udGFpbmVyTGF5ZXIuZ2V0KCkuc2V0TmFt
ZShUaWxlQ29udHJvbGxlcjo6em9vbWVkT3V0VGlsZUdyaWRDb250YWluZXJMYXllck5hbWUoKSk7
CisgICAgZWxzZQorICAgICAgICBtX2NvbnRhaW5lckxheWVyLmdldCgpLnNldE5hbWUoVGlsZUNv
bnRyb2xsZXI6OnRpbGVHcmlkQ29udGFpbmVyTGF5ZXJOYW1lKCkpOworfQorCiB2b2lkIFRpbGVH
cmlkOjpzZXRTY2FsZShmbG9hdCBzY2FsZSkKIHsKICAgICBtX3NjYWxlID0gc2NhbGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlR3JpZC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUdyaWQuaAppbmRleCBjNTlh
ZTA5OTJlZmIzMmViNTkzODQ5OTFkMzdlNmU3ZTZiYTFlNDUxLi44Mjg1OTI0MDU5YWQ4MDUxZTgx
ZmMwNTFkMDUxMWNkZTc2YmU5ZmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9UaWxlR3JpZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL1RpbGVHcmlkLmgKQEAgLTUzLDYgKzUzLDggQEAgcHVibGljOgogCiAgICAgUGxh
dGZvcm1DQUxheWVyJiBjb250YWluZXJMYXllcigpIHsgcmV0dXJuIG1fY29udGFpbmVyTGF5ZXI7
IH0KIAorICAgIHZvaWQgc2V0SXNab29tZWRPdXRUaWxlR3JpZChib29sKTsKKwogICAgIHZvaWQg
c2V0U2NhbGUoZmxvYXQpOwogICAgIGZsb2F0IHNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV9zY2Fs
ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tCmluZGV4IDFhZGU5MzBjOTFlZTI2MmQzNzZmOTkyYTViNmY0NzA1ODUxNjlmYjkuLjc4NTEz
MjUyMzIxZGM3NDZlYjVjYmVkNDlkN2RlNWM0OTMwMzRiNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0zNCw2ICszNCw3IEBACiAj
aW1wb3J0ICJGaW5kQ2xpZW50LmgiCiAjaW1wb3J0ICJMZWdhY3lTZXNzaW9uU3RhdGVDb2Rpbmcu
aCIKICNpbXBvcnQgIk5hdmlnYXRpb25TdGF0ZS5oIgorI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVl
U2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLmgiCiAjaW1wb3J0ICJSZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbi5oIgogI2ltcG9ydCAiUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCIKICNpbXBvcnQgIlJl
bW90ZU9iamVjdFJlZ2lzdHJ5TWVzc2FnZXMuaCIKQEAgLTg0NSw2ICs4NDYsMTUgQEAgc3RhdGlj
IHZvaWQgY2hhbmdlQ29udGVudE9mZnNldEJvdW5kZWRJblZhbGlkUmFuZ2UoVUlTY3JvbGxWaWV3
ICpzY3JvbGxWaWV3LCBXZWIKICAgICBzY3JvbGxWaWV3LmNvbnRlbnRPZmZzZXQgPSBjb250ZW50
T2Zmc2V0Qm91bmRlZEluVmFsaWRSYW5nZShzY3JvbGxWaWV3LCBjb250ZW50T2Zmc2V0KTsKIH0K
IAorLSAoV2ViQ29yZTo6RmxvYXRSZWN0KXZpc2libGVSZWN0SW5TY3JlZW5Db29yZGluYXRlcwor
eworICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBib3VuZHMgPSBzZWxmLmJvdW5kczsKKyAgICBib3Vu
ZHMubW92ZUJ5KFtfc2Nyb2xsVmlldyBjb250ZW50T2Zmc2V0XSk7CisgICAgV2ViQ29yZTo6Rmxv
YXRSZWN0IGNvbnRlbnRWaWV3Qm91bmRzID0gW19jb250ZW50VmlldyBib3VuZHNdOworICAgIGJv
dW5kcy5pbnRlcnNlY3QoY29udGVudFZpZXdCb3VuZHMpOworICAgIHJldHVybiBib3VuZHM7Cit9
CisKIC8vIFdlYkNvcmUgc3RvcmVzIHRoZSBwYWdlIHNjYWxlIGZhY3RvciBhcyBmbG9hdCBpbnN0
ZWFkIG9mIGRvdWJsZS4gV2hlbiB3ZSBnZXQgYSBzY2FsZSBmcm9tIFdlYkNvcmUsCiAvLyB3ZSBu
ZWVkIHRvIGlnbm9yZSBkaWZmZXJlbmNlcyB0aGF0IGFyZSB3aXRoaW4gYSBzbWFsbCByb3VuZGlu
ZyBlcnJvciBvbiBmbG9hdHMuCiBzdGF0aWMgaW5saW5lIGJvb2wgYXJlRXNzZW50aWFsbHlFcXVh
bEFzRmxvYXQoZmxvYXQgYSwgZmxvYXQgYikKQEAgLTkxNSw2ICs5MjUsOSBAQCAtICh2b2lkKV9k
aWRDb21taXRMYXllclRyZWU6KGNvbnN0IFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b24mKWxheWVyVHJlZQogICAgICAgICB9CiAgICAgICAgIFtzZWxmIF91cGRhdGVWaXNpYmxlQ29u
dGVudFJlY3RzXTsKICAgICB9CisgICAgCisgICAgaWYgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVl
U2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhKiBzY3JvbGxQZXJmRGF0YSA9IF9wYWdlLT5zY3JvbGxp
bmdQZXJmb3JtYW5jZURhdGEoKSkKKyAgICAgICAgc2Nyb2xsUGVyZkRhdGEtPmRpZENvbW1pdExh
eWVyVHJlZShbc2VsZiB2aXNpYmxlUmVjdEluU2NyZWVuQ29vcmRpbmF0ZXNdKTsKIH0KIAogLSAo
dm9pZClfZHluYW1pY1ZpZXdwb3J0VXBkYXRlQ2hhbmdlZFRhcmdldFRvU2NhbGU6KGRvdWJsZSlu
ZXdTY2FsZSBwb3NpdGlvbjooQ0dQb2ludCluZXdTY3JvbGxQb3NpdGlvbiBuZXh0VmFsaWRMYXll
clRyZWVUcmFuc2FjdGlvbklEOih1aW50NjRfdCluZXh0VmFsaWRMYXllclRyZWVUcmFuc2FjdGlv
bklECkBAIC0xMzczLDYgKzEzODYsOSBAQCAtICh2b2lkKXNjcm9sbFZpZXdEaWRTY3JvbGw6KFVJ
U2Nyb2xsVmlldyAqKXNjcm9sbFZpZXcKICAgICAgICAgW19jdXN0b21Db250ZW50VmlldyBzY3Jv
bGxWaWV3RGlkU2Nyb2xsOihVSVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3XTsKIAogICAgIFtzZWxm
IF91cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzXTsKKyAgICAKKyAgICBpZiAoV2ViS2l0OjpSZW1v
dGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEqIHNjcm9sbFBlcmZEYXRhID0gX3Bh
Z2UtPnNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YSgpKQorICAgICAgICBzY3JvbGxQZXJmRGF0YS0+
ZGlkU2Nyb2xsKFtzZWxmIHZpc2libGVSZWN0SW5TY3JlZW5Db29yZGluYXRlc10pOwogfQogCiAt
ICh2b2lkKXNjcm9sbFZpZXdEaWRab29tOihVSVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3CkBAIC0y
MDg4LDYgKzIxMDQsMzAgQEAgLSAoQk9PTClfaXNTaG93aW5nTmF2aWdhdGlvbkdlc3R1cmVTbmFw
c2hvdAogICAgIHJldHVybiBfcGFnZS0+aXNTaG93aW5nTmF2aWdhdGlvbkdlc3R1cmVTbmFwc2hv
dCgpOwogfQogCisjcHJhZ21hIG1hcmsgc2Nyb2xscGVyZiBtZXRob2RzCisKKy0gKHZvaWQpX3Nl
dFNjcm9sbFBlcmZvcm1hbmNlRGF0YUNvbGxlY3Rpb25FbmFibGVkOihCT09MKWVuYWJsZWQKK3sK
KyAgICBfcGFnZS0+c2V0U2Nyb2xsUGVyZm9ybWFuY2VEYXRhQ29sbGVjdGlvbkVuYWJsZWQoZW5h
YmxlZCk7Cit9CisKKy0gKEJPT0wpX3Njcm9sbFBlcmZvcm1hbmNlRGF0YUNvbGxlY3Rpb25FbmFi
bGVkCit7CisgICAgcmV0dXJuIF9wYWdlLT5zY3JvbGxQZXJmb3JtYW5jZURhdGFDb2xsZWN0aW9u
RW5hYmxlZCgpOworfQorCistIChOU0FycmF5ICopX3Njcm9sbFBlcmZvcm1hbmNlRGF0YQorewor
I2lmIFBMQVRGT1JNKElPUykKKyAgICBpZiAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVTY3JvbGxp
bmdQZXJmb3JtYW5jZURhdGEqIHNjcm9sbFBlZkRhdGEgPSBfcGFnZS0+c2Nyb2xsaW5nUGVyZm9y
bWFuY2VEYXRhKCkpCisgICAgICAgIHJldHVybiBzY3JvbGxQZWZEYXRhLT5kYXRhKCk7CisKKyAg
ICByZXR1cm4gbmlsOworI2Vsc2UKKyAgICByZXR1cm4gbmlsOworI2VuZGlmCit9CisKICNwcmFn
bWEgbWFyayBpT1Mtc3BlY2lmaWMgbWV0aG9kcwogCiAjaWYgUExBVEZPUk0oSU9TKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRl
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUu
aAppbmRleCAzNzI1ODExYzcyMDIxMDYzZDkwNDU3MjVkNmE2NTNkMjVjNGJjYWE1Li5hZWI0ZGUy
MTE1Y2I4MjYwZWQ2NjUwZTUyZmE0NGRhYzdkM2M3NGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtMTgyLDYg
KzE4Miw5IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tGaW5kT3B0aW9ucykg
ewogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGdldHRlcj1faXNEaXNwbGF5aW5n
U3RhbmRhbG9uZUltYWdlRG9jdW1lbnQpIEJPT0wgX2Rpc3BsYXlpbmdTdGFuZGFsb25lSW1hZ2VE
b2N1bWVudDsKIAorQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0U2Nyb2xsUGVyZm9y
bWFuY2VEYXRhQ29sbGVjdGlvbkVuYWJsZWQ6KSBCT09MIF9zY3JvbGxQZXJmb3JtYW5jZURhdGFD
b2xsZWN0aW9uRW5hYmxlZCBXS19BVkFJTEFCTEUoV0tfTUFDX1RCQSwgV0tfSU9TX1RCQSk7CitA
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TQXJyYXkgKl9zY3JvbGxQZXJmb3JtYW5j
ZURhdGEgV0tfQVZBSUxBQkxFKFdLX01BQ19UQkEsIFdLX0lPU19UQkEpOworCiBAZW5kCiAKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1JlbW90ZUxh
eWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL1JlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjFmZjhlMTE1MjA1YzVmODUyMDMwNjBiNDk4ZWU4OTkyMTI1ODJiOTgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvUmVtb3RlTGF5ZXJUcmVl
U2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLmgKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KworI2lmbmRlZiBSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGFfaAorI2Rl
ZmluZSBSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGFfaAorCisjaW1wb3J0
IDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgorI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTsKKwor
Y2xhc3MgUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhIHsKK3B1YmxpYzoK
KyAgICBSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEoUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eSYpOworICAgIH5SZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJm
b3JtYW5jZURhdGEoKTsKKworICAgIHZvaWQgZGlkQ29tbWl0TGF5ZXJUcmVlKGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYgdmlzaWJsZVJlY3QpOworICAgIHZvaWQgZGlkU2Nyb2xsKGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYgdmlzaWJsZVJlY3QpOworCisgICAgTlNBcnJheSogZGF0YSgpOyAv
LyBBcnJheSBvZiBbIHRpbWUsIGV2ZW50IHR5cGUsIHVuZmlsbGVkIHBpeGVsIGNvdW50IF0KKwor
cHJpdmF0ZToKKyAgICB1bnNpZ25lZCBibGFua1BpeGVsQ291bnQoY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiB2aXNpYmxlUmVjdCkgY29uc3Q7CisgICAgCisgICAgUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWFQcm94eSYgbV9kcmF3aW5nQXJlYTsKKyAgICAKKyAgICBzdHJ1Y3QgQmxhbmtQaXhl
bENvdW50IHsKKyAgICAgICAgZW51bSBFdmVudFR5cGUgeyBGaWxsZWQsIEV4cG9zZWQgfTsKKwor
ICAgICAgICBkb3VibGUgc3RhcnRUaW1lOworICAgICAgICBkb3VibGUgZW5kVGltZTsKKyAgICAg
ICAgRXZlbnRUeXBlIGV2ZW50VHlwZTsKKyAgICAgICAgdW5zaWduZWQgYmxhbmtQaXhlbENvdW50
OworICAgICAgICAKKyAgICAgICAgQmxhbmtQaXhlbENvdW50KGRvdWJsZSBzdGFydCwgZG91Ymxl
IGVuZCwgRXZlbnRUeXBlIHR5cGUsIHVuc2lnbmVkIGNvdW50KQorICAgICAgICAgICAgOiBzdGFy
dFRpbWUoc3RhcnQpCisgICAgICAgICAgICAsIGVuZFRpbWUoZW5kKQorICAgICAgICAgICAgLCBl
dmVudFR5cGUodHlwZSkKKyAgICAgICAgICAgICwgYmxhbmtQaXhlbENvdW50KGNvdW50KQorICAg
ICAgICB7IH0KKyAgICAgICAgCisgICAgICAgIGJvb2wgY2FuQ29hbGVzY2UoQmxhbmtQaXhlbENv
dW50OjpFdmVudFR5cGUsIHVuc2lnbmVkIGJsYW5rUGl4ZWxDb3VudCkgY29uc3Q7CisgICAgfTsK
KyAgICAKKyAgICB2b2lkIGFwcGVuZEJsYW5rUGl4ZWxDb3VudChCbGFua1BpeGVsQ291bnQ6OkV2
ZW50VHlwZSwgdW5zaWduZWQgYmxhbmtQaXhlbENvdW50KTsKKworICAgIFZlY3RvcjxCbGFua1Bp
eGVsQ291bnQ+IG1fYmxhbmtQaXhlbENvdW50czsKK307CisKK30KKworI2VuZGlmIC8vIFJlbW90
ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YV9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFu
Y2VEYXRhLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1JlbW90ZUxheWVyVHJl
ZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZDMyMmMxN2QyYzY4MjQz
NTViNGViNDE1ZDY2MzZmNzA4YWNkNDQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0NvY29hL1JlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0
YS5tbQpAQCAtMCwwICsxLDEzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgor
I2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLmgiCisKKyNp
bXBvcnQgIlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkuaCIKKyNpbXBvcnQgIlJlbW90
ZUxheWVyVHJlZUhvc3QuaCIKKyNpbXBvcnQgPFF1YXJ0ekNvcmUvQ0FMYXllci5oPgorI2ltcG9y
dCA8V2ViQ29yZS9UaWxlQ29udHJvbGxlci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKKworUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9y
bWFuY2VEYXRhOjpSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEoUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eSYgZHJhd2luZ0FyZWEpCisgICAgOiBtX2RyYXdpbmdB
cmVhKGRyYXdpbmdBcmVhKQoreworfQorCitSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3Jt
YW5jZURhdGE6On5SZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEoKQorewor
fQorCit2b2lkIFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YTo6ZGlkQ29t
bWl0TGF5ZXJUcmVlKGNvbnN0IEZsb2F0UmVjdCYgdmlzaWJsZVJlY3QpCit7CisgICAgLy8gRklY
TUU6IG1heWJlIHdlIG9ubHkgY2FyZSBhYm91dCBuZXdseSBjcmVhdGVkIHRpbGVzPworICAgIGFw
cGVuZEJsYW5rUGl4ZWxDb3VudChCbGFua1BpeGVsQ291bnQ6OkZpbGxlZCwgYmxhbmtQaXhlbENv
dW50KHZpc2libGVSZWN0KSk7Cit9CisKK3ZvaWQgUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVy
Zm9ybWFuY2VEYXRhOjpkaWRTY3JvbGwoY29uc3QgRmxvYXRSZWN0JiB2aXNpYmxlUmVjdCkKK3sK
KyAgICBhcHBlbmRCbGFua1BpeGVsQ291bnQoQmxhbmtQaXhlbENvdW50OjpFeHBvc2VkLCBibGFu
a1BpeGVsQ291bnQodmlzaWJsZVJlY3QpKTsKK30KKworYm9vbCBSZW1vdGVMYXllclRyZWVTY3Jv
bGxpbmdQZXJmb3JtYW5jZURhdGE6OkJsYW5rUGl4ZWxDb3VudDo6Y2FuQ29hbGVzY2UoQmxhbmtQ
aXhlbENvdW50OjpFdmVudFR5cGUgdHlwZSwgdW5zaWduZWQgcGl4ZWxDb3VudCkgY29uc3QKK3sK
KyAgICByZXR1cm4gZXZlbnRUeXBlID09IHR5cGUgJiYgYmxhbmtQaXhlbENvdW50ID09IHBpeGVs
Q291bnQ7Cit9CisKK3ZvaWQgUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRh
OjphcHBlbmRCbGFua1BpeGVsQ291bnQoQmxhbmtQaXhlbENvdW50OjpFdmVudFR5cGUgZXZlbnRU
eXBlLCB1bnNpZ25lZCBibGFua1BpeGVsQ291bnQpCit7CisgICAgZG91YmxlIG5vdyA9IFdURjo6
bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CisKKyAgICBpZiAoIW1fYmxhbmtQaXhlbENv
dW50cy5pc0VtcHR5KCkgJiYgbV9ibGFua1BpeGVsQ291bnRzLmxhc3QoKS5jYW5Db2FsZXNjZShl
dmVudFR5cGUsIGJsYW5rUGl4ZWxDb3VudCkpIHsKKyAgICAgICAgbV9ibGFua1BpeGVsQ291bnRz
Lmxhc3QoKS5lbmRUaW1lID0gbm93OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9i
bGFua1BpeGVsQ291bnRzLmFwcGVuZChCbGFua1BpeGVsQ291bnQobm93LCBub3csIGV2ZW50VHlw
ZSwgYmxhbmtQaXhlbENvdW50KSk7Cit9CisKK05TQXJyYXkgKlJlbW90ZUxheWVyVHJlZVNjcm9s
bGluZ1BlcmZvcm1hbmNlRGF0YTo6ZGF0YSgpCit7CisgICAgTlNNdXRhYmxlQXJyYXkqIGRhdGFB
cnJheSA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTptX2JsYW5rUGl4ZWxDb3Vu
dHMuc2l6ZSgpXTsKKyAgICAKKyAgICBmb3IgKGF1dG8gcGl4ZWxEYXRhIDogbV9ibGFua1BpeGVs
Q291bnRzKSB7CisgICAgICAgIFtkYXRhQXJyYXkgYWRkT2JqZWN0OkBbCisgICAgICAgICAgICBA
KHBpeGVsRGF0YS5zdGFydFRpbWUpLAorICAgICAgICAgICAgKHBpeGVsRGF0YS5ldmVudFR5cGUg
PT0gQmxhbmtQaXhlbENvdW50OjpGaWxsZWQpID8gQCJmaWxsZWQiIDogQCJleHBvc2VkIiwKKyAg
ICAgICAgICAgIEAocGl4ZWxEYXRhLmJsYW5rUGl4ZWxDb3VudCkKKyAgICAgICAgXV07CisgICAg
fQorICAgIHJldHVybiBkYXRhQXJyYXk7Cit9CisKK3N0YXRpYyBDQUxheWVyICpmaW5kVGlsZUdy
aWRDb250YWluZXJMYXllcihDQUxheWVyICpsYXllcikKK3sKKyAgICBmb3IgKENBTGF5ZXIgKmN1
cnJMYXllciA6IFtsYXllciBzdWJsYXllcnNdKSB7CisgICAgICAgIFN0cmluZyBsYXllck5hbWUg
PSBbY3VyckxheWVyIG5hbWVdOworICAgICAgICBpZiAobGF5ZXJOYW1lID09IFRpbGVDb250cm9s
bGVyOjp0aWxlR3JpZENvbnRhaW5lckxheWVyTmFtZSgpKQorICAgICAgICAgICAgcmV0dXJuIGN1
cnJMYXllcjsKKworICAgICAgICBpZiAoQ0FMYXllciAqZm91bmRMYXllciA9IGZpbmRUaWxlR3Jp
ZENvbnRhaW5lckxheWVyKGN1cnJMYXllcikpCisgICAgICAgICAgICByZXR1cm4gZm91bmRMYXll
cjsKKyAgICB9CisKKyAgICByZXR1cm4gbmlsOworfQorCit1bnNpZ25lZCBSZW1vdGVMYXllclRy
ZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGE6OmJsYW5rUGl4ZWxDb3VudChjb25zdCBGbG9hdFJl
Y3QmIHZpc2libGVSZWN0KSBjb25zdAoreworICAgIENBTGF5ZXIgKnJvb3RMYXllciA9IGFzTGF5
ZXIobV9kcmF3aW5nQXJlYS5yZW1vdGVMYXllclRyZWVIb3N0KCkucm9vdExheWVyKCkpOworCisg
ICAgQ0FMYXllciAqdGlsZUdyaWRDb250YWluZXIgPSBmaW5kVGlsZUdyaWRDb250YWluZXJMYXll
cihyb290TGF5ZXIpOworICAgIGlmICghdGlsZUdyaWRDb250YWluZXIpIHsKKyAgICAgICAgTlNM
b2coQCJGYWlsZWQgdG8gZmluZCBUaWxlR3JpZCBDb250YWluZXIgTGF5ZXIiKTsKKyAgICAgICAg
cmV0dXJuIFVJTlRfTUFYOworICAgIH0KKworICAgIEZsb2F0UmVjdCB2aXNpYmxlUmVjdEV4Y2x1
ZGluZ1Rvb2xiYXIgPSB2aXNpYmxlUmVjdDsKKyAgICBpZiAodmlzaWJsZVJlY3RFeGNsdWRpbmdU
b29sYmFyLnkoKSA8IDApCisgICAgICAgIHZpc2libGVSZWN0RXhjbHVkaW5nVG9vbGJhci5zZXRZ
KDApOworCisgICAgUmVnaW9uIHBhaW50ZWRWaXNpYmxlVGlsZVJlZ2lvbjsKKworICAgIGZvciAo
Q0FMYXllciAqdGlsZUxheWVyIDogW3RpbGVHcmlkQ29udGFpbmVyIHN1YmxheWVyc10pIHsKKyAg
ICAgICAgRmxvYXRSZWN0IHRpbGVSZWN0ID0gW3RpbGVMYXllciBjb252ZXJ0UmVjdDpbdGlsZUxh
eWVyIGJvdW5kc10gdG9MYXllcjp0aWxlR3JpZENvbnRhaW5lcl07CisgICAgCisgICAgICAgIHRp
bGVSZWN0LmludGVyc2VjdCh2aXNpYmxlUmVjdEV4Y2x1ZGluZ1Rvb2xiYXIpOworICAgICAgICAK
KyAgICAgICAgaWYgKCF0aWxlUmVjdC5pc0VtcHR5KCkpCisgICAgICAgICAgICBwYWludGVkVmlz
aWJsZVRpbGVSZWdpb24udW5pdGUoZW5jbG9zaW5nSW50UmVjdCh0aWxlUmVjdCkpOworICAgIH0K
KworICAgIFJlZ2lvbiB1bmNvdmVyZWRSZWdpb24oZW5jbG9zaW5nSW50UmVjdCh2aXNpYmxlUmVj
dEV4Y2x1ZGluZ1Rvb2xiYXIpKTsKKyAgICB1bmNvdmVyZWRSZWdpb24uc3VidHJhY3QocGFpbnRl
ZFZpc2libGVUaWxlUmVnaW9uKTsKKworICAgIHJldHVybiB1bmNvdmVyZWRSZWdpb24udG90YWxB
cmVhKCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
aW5kZXggNjhiYmQwNjk1NGJkYzI2MjAwMDJiN2Y0OTZkMjlhNDBkYjAyOGFjZC4uYWQ3NzhhMWJm
NWZkYTE0ZmI5OTU5NDQxY2U1NWJmMDM0ZmQ5MzM1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEyOCwxMiArMTI4LDEzIEBACiAjZW5kaWYKIAogI2lm
IFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHkuaCIKKyNpbmNsdWRlICJSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEu
aCIKICNpbmNsdWRlICJWaWV3U25hcHNob3RTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUnVu
TG9vcE9ic2VydmVyLmg+CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPUykKLSNpbmNsdWRlICJS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5TWVzc2FnZXMuaCIKICNlbmRpZgpAQCAtMzczLDYgKzM3NCwxMCBAQCBXZWJQYWdlUHJv
eHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkm
IHByb2Nlc3MsIHVpbgogICAgICwgbV9tZWRpYVZvbHVtZSgxKQogICAgICwgbV9tdXRlZChmYWxz
ZSkKICAgICAsIG1fbWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdyh0cnVlKQorICAgICwgbV93YWl0
aW5nRm9yRGlkVXBkYXRlVmlld1N0YXRlKGZhbHNlKQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
ICwgbV9zY3JvbGxQZXJmb3JtYW5jZURhdGFDb2xsZWN0aW9uRW5hYmxlZChmYWxzZSkKKyNlbmRp
ZgogICAgICwgbV9zY3JvbGxQaW5uaW5nQmVoYXZpb3IoRG9Ob3RQaW4pCiAgICAgLCBtX25hdmln
YXRpb25JRCgwKQogICAgICwgbV9jb25maWd1cmF0aW9uUHJlZmVyZW5jZVZhbHVlcyhjb25maWd1
cmF0aW9uLnByZWZlcmVuY2VWYWx1ZXMpCkBAIC01Mjg4LDYgKzUyOTMsMTggQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmNvbmZpcm1Db21wb3NpdGlvbkFzeW5jKCkKICAgICBwcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6Q29uZmlybUNvbXBvc2l0aW9uQXN5bmMoKSwgbV9wYWdlSUQpOwog
fQogCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U2Nyb2xsUGVyZm9ybWFuY2VEYXRhQ29sbGVjdGlv
bkVuYWJsZWQoYm9vbCBlbmFibGVkKQoreworICAgIGlmIChlbmFibGVkID09IG1fc2Nyb2xsUGVy
Zm9ybWFuY2VEYXRhQ29sbGVjdGlvbkVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
c2Nyb2xsUGVyZm9ybWFuY2VEYXRhQ29sbGVjdGlvbkVuYWJsZWQgPSBlbmFibGVkOworCisgICAg
aWYgKG1fc2Nyb2xsUGVyZm9ybWFuY2VEYXRhQ29sbGVjdGlvbkVuYWJsZWQgJiYgIW1fc2Nyb2xs
aW5nUGVyZm9ybWFuY2VEYXRhKQorICAgICAgICBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlRGF0YSA9
IHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRh
Pihkb3duY2FzdDxSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5PigqbV9kcmF3aW5nQXJl
YSkpOworICAgIGVsc2UgaWYgKCFtX3Njcm9sbFBlcmZvcm1hbmNlRGF0YUNvbGxlY3Rpb25FbmFi
bGVkKQorICAgICAgICBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlRGF0YSA9IG51bGxwdHI7Cit9CiAj
ZW5kaWYKIAogdm9pZCBXZWJQYWdlUHJveHk6OnRha2VTbmFwc2hvdChJbnRSZWN0IHJlY3QsIElu
dFNpemUgYml0bWFwU2l6ZSwgU25hcHNob3RPcHRpb25zIG9wdGlvbnMsIHN0ZDo6ZnVuY3Rpb248
dm9pZCAoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmLCBDYWxsYmFja0Jhc2U6OkVycm9y
KT4gY2FsbGJhY2tGdW5jdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAppbmRleCAzMTkwZTYyYWZlZTlhODYwMGJkMjQ4YmRmNjcxMDg4NGY4YjI4NTEzLi4wMzIxMWU0
MzEwNzY3OTNhZjNmM2QxZjQyMTcyYzgzNjU3MDY1MGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xNjAsNiArMTYwLDcgQEAgY2xhc3MgTmF0aXZlV2ViS2V5
Ym9hcmRFdmVudDsKIGNsYXNzIE5hdGl2ZVdlYk1vdXNlRXZlbnQ7CiBjbGFzcyBOYXRpdmVXZWJX
aGVlbEV2ZW50OwogY2xhc3MgUGFnZUNsaWVudDsKK2NsYXNzIFJlbW90ZUxheWVyVHJlZVNjcm9s
bGluZ1BlcmZvcm1hbmNlRGF0YTsKIGNsYXNzIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOwog
Y2xhc3MgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTsKIGNsYXNzIFN0cmluZ1BhaXJW
ZWN0b3I7CkBAIC01MjIsNiArNTIzLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENvbXBvc2l0
aW9uQXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25V
bmRlcmxpbmU+IHVuZGVybGluZXMsIGNvbnN0IEVkaXRpbmdSYW5nZSYgc2VsZWN0aW9uUmFuZ2Us
IGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5nZSk7CiAgICAgdm9pZCBjb25maXJt
Q29tcG9zaXRpb25Bc3luYygpOwogCisgICAgdm9pZCBzZXRTY3JvbGxQZXJmb3JtYW5jZURhdGFD
b2xsZWN0aW9uRW5hYmxlZChib29sKTsKKyAgICBib29sIHNjcm9sbFBlcmZvcm1hbmNlRGF0YUNv
bGxlY3Rpb25FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxQZXJmb3JtYW5jZURhdGFD
b2xsZWN0aW9uRW5hYmxlZDsgfQorICAgIFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1h
bmNlRGF0YSogc2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhKCkgeyByZXR1cm4gbV9zY3JvbGxpbmdQ
ZXJmb3JtYW5jZURhdGEuZ2V0KCk7IH0KKyNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKKwogI2lm
IFBMQVRGT1JNKE1BQykKICAgICB2b2lkIGluc2VydERpY3RhdGVkVGV4dEFzeW5jKGNvbnN0IFN0
cmluZyYgdGV4dCwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYWNlbWVudFJhbmdlLCBjb25zdCBW
ZWN0b3I8V2ViQ29yZTo6VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlPiYgZGljdGF0aW9uQWx0ZXJu
YXRpdmVzLCBib29sIHJlZ2lzdGVyVW5kb0dyb3VwKTsKICAgICB2b2lkIGF0dHJpYnV0ZWRTdWJz
dHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdSYW5nZSYsIHN0ZDo6ZnVu
Y3Rpb248dm9pZCAoY29uc3QgQXR0cmlidXRlZFN0cmluZyYsIGNvbnN0IEVkaXRpbmdSYW5nZSYs
IENhbGxiYWNrQmFzZTo6RXJyb3IpPik7CkBAIC01MzgsMjIgKzU0NCwyNCBAQCBwdWJsaWM6CiAg
ICAgV2ViQ29yZTo6SW50UmVjdCBmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZShjb25zdCBFZGl0
aW5nUmFuZ2UmKTsKICAgICBib29sIGV4ZWN1dGVLZXlwcmVzc0NvbW1hbmRzKGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQ+Jik7CiAgICAgdm9pZCBjYW5jZWxDb21wb3NpdGlv
bigpOwotI2VuZGlmCisjZW5kaWYgLy8gIVVTRShBU1lOQ19OU1RFWFRJTlBVVENMSUVOVCkKIAog
ICAgIFdLVmlldyogd2tWaWV3KCkgY29uc3Q7CiAgICAgdm9pZCBpbnRyaW5zaWNDb250ZW50U2l6
ZURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBpbnRyaW5zaWNDb250ZW50U2l6ZSk7
CiAgICAgQ0dSZWN0IGJvdW5kc09mTGF5ZXJJbkxheWVyQmFja2VkV2luZG93Q29vcmRpbmF0ZXMo
Q0FMYXllciAqKSBjb25zdDsKLSNlbmRpZgotI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQorI2Vu
ZGlmIC8vIFBMQVRGT1JNKE1BQykKKwogI2lmIFBMQVRGT1JNKEVGTCkKICAgICB2b2lkIGhhbmRs
ZUlucHV0TWV0aG9kS2V5ZG93bihib29sJiBoYW5kbGVkKTsKICAgICB2b2lkIGNvbmZpcm1Db21w
b3NpdGlvbihjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldENvbXBvc2l0aW9uKGNvbnN0IFN0
cmluZyYsIFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4mLCBpbnQpOwogICAg
IHZvaWQgY2FuY2VsQ29tcG9zaXRpb24oKTsKICNlbmRpZgorCiAjaWYgUExBVEZPUk0oR1RLKQog
ICAgIFBsYXRmb3JtV2lkZ2V0IHZpZXdXaWRnZXQoKTsKICNlbmRpZgorCiAjaWYgVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTX01VTFRJUFJPQ0VTUykKICAgICB2b2lkIGNvbW1pdFBhZ2VUcmFuc2l0
aW9uVmlld3BvcnQoKTsKICNlbmRpZgpAQCAtNTYxLDkgKzU2OSwxMSBAQCBwdWJsaWM6CiAgICAg
dm9pZCBoYW5kbGVNb3VzZUV2ZW50KGNvbnN0IE5hdGl2ZVdlYk1vdXNlRXZlbnQmKTsKICAgICB2
b2lkIGhhbmRsZVdoZWVsRXZlbnQoY29uc3QgTmF0aXZlV2ViV2hlZWxFdmVudCYpOwogICAgIHZv
aWQgaGFuZGxlS2V5Ym9hcmRFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50Jik7CisK
ICNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKICAgICB2b2lkIGhhbmRsZVRvdWNoRXZlbnRT
eW5jaHJvbm91c2x5KGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZlbnQmKTsKICAgICB2b2lkIGhhbmRs
ZVRvdWNoRXZlbnRBc3luY2hyb25vdXNseShjb25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50Jik7CisK
ICNlbGlmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgdm9pZCBoYW5kbGVUb3VjaEV2ZW50KGNv
bnN0IE5hdGl2ZVdlYlRvdWNoRXZlbnQmKTsKICNlbmRpZgpAQCAtMTYwMiw2ICsxNjEyLDkgQEAg
cHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5n
PiBtX3RlbXBvcmFyeVBERkZpbGVzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpSdW5M
b29wT2JzZXJ2ZXI+IG1fdmlld1N0YXRlQ2hhbmdlRGlzcGF0Y2hlcjsKKworICAgIHN0ZDo6dW5p
cXVlX3B0cjxSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGE+IG1fc2Nyb2xs
aW5nUGVyZm9ybWFuY2VEYXRhOworICAgIGJvb2wgbV9zY3JvbGxQZXJmb3JtYW5jZURhdGFDb2xs
ZWN0aW9uRW5hYmxlZDsKICNlbmRpZgogICAgIFVzZXJPYnNlcnZhYmxlUGFnZVRva2VuIG1fcGFn
ZUlzVXNlck9ic2VydmFibGVDb3VudDsKICAgICBQcm9jZXNzU3VwcHJlc3Npb25EaXNhYmxlZFRv
a2VuIG1fcHJldmVudFByb2Nlc3NTdXBwcmVzc2lvbkNvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktp
dDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDE0MzU1ZWVjYjYyNGY4
ZTg1NWNlN2ZkNTkyZWRiZDY1YmUxZjk0YzkuLmY1MGIxZWRjMTc0NzEyMGExZGM4YmI2YzgyOGY1
M2FiNGI3YmZjZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTEyMCw2ICsxMjAsOCBAQAogCQkwRkNCNEU2RDE4QkJGMjZBMDAw
RkNGQzkgLyogV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDQjRFNkIxOEJCRjI2QTAwMEZDRkM5IC8qIFdL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSAqLzsgfTsKIAkJMEZGMjRBMkQxODc5RTRCQzAwM0FC
RjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGMjRBMkIx
ODc5RTRCQzAwM0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwICovOyB9OwogCQkwRkYyNEEyRTE4NzlFNEJDMDAzQUJGMEMgLyogUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkYyNEEyQzE4NzlFNEJDMDAzQUJGMEMgLyogUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmggKi87IH07CisJCTBGRjI2NDlG
MUExRkY5QzYwMDFGRTc1OSAvKiBSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURh
dGEubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjcw
N0M3NzFBMUZFRTgzMDBEQTdBNDUgLyogUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFu
Y2VEYXRhLm1tICovOyB9OworCQkwRkYyNjRBMDFBMUZGOUNDMDAxRkU3NTkgLyogUmVtb3RlTGF5
ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjcwN0M3OTFBMUZFRUEzMDBEQTdBNDUgLyogUmVtb3Rl
TGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLmggKi87IH07CiAJCTFBMDAyRDQzMTk2
QjMzNzAwMEI5QUQ0NCAvKiBfV0tTZXNzaW9uU3RhdGVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEwMDJENDIxOTZCMzM3MDAwQjlBRDQ0
IC8qIF9XS1Nlc3Npb25TdGF0ZUludGVybmFsLmggKi87IH07CiAJCTFBMDAyRDQ0MTk2QjMzODkw
MEI5QUQ0NCAvKiBfV0tTZXNzaW9uU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFBMDAyRDNGMTk2QjMyOTQwMEI5QUQ0NCAvKiBfV0tTZXNzaW9u
U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkxQTAwMkQ0NTE5NkIzMzhFMDBCOUFENDQgLyogX1dLU2Vzc2lvblN0YXRlLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEwMDJEM0UxOTZCMzI5NDAw
QjlBRDQ0IC8qIF9XS1Nlc3Npb25TdGF0ZS5tbSAqLzsgfTsKQEAgLTIwODUsNiArMjA4Nyw4IEBA
CiAJCTBGNTk0N0E2MTg3QjUxNzYwMDQzNzg1NyAvKiBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRv
ck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVNjcm9s
bGluZ0Nvb3JkaW5hdG9yTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEY1RTIwMDExOEU3NzA1MTAwM0VDM0U1IC8qIFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQbGF0Zm9ybUNBQW5pbWF0
aW9uUmVtb3RlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjVFMjAwMjE4RTc3
MDUxMDAzRUMzRTUgLyogUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNzA3Qzc3MUExRkVFODMwMERBN0E0NSAvKiBSZW1vdGVM
YXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURh
dGEubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNzA3Qzc5MUExRkVFQTMwMERB
N0E0NSAvKiBSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9y
bWFuY2VEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOTMxQzFBMThDNTcx
MTkwMERCQTdDMyAvKiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9s
bGluZ05vZGVJT1MuaDsgcGF0aCA9IFNjcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93
U2Nyb2xsaW5nTm9kZUlPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjkzMUMx
QjE4QzU3MTE5MDBEQkE3QzMgLyogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlP
Uy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFNjcm9sbGluZ1Ry
ZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW07IHBhdGggPSBTY3JvbGxpbmcvaW9zL1Njcm9s
bGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGQjY1OTIyMTIwOEI0REIwMDQ0ODE2QyAvKiBEcmF3aW5nQXJlYUluZm8uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRHJhd2luZ0FyZWFJbmZvLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NzEzLDYgKzQ3MTcsOCBAQAogCQkJCTFBQkMzREYz
MTg5OUU0MzcwMDRGMDYyNiAvKiBOYXZpZ2F0aW9uU3RhdGUubW0gKi8sCiAJCQkJMUEwMDJENDcx
OTZCMzQ1RDAwQjlBRDQ0IC8qIFNlc3Npb25TdGF0ZUNvZGluZy5oICovLAogCQkJCTFBMDAyRDQ2
MTk2QjM0NUQwMEI5QUQ0NCAvKiBTZXNzaW9uU3RhdGVDb2RpbmcubW0gKi8sCisJCQkJMEY3MDdD
NzkxQTFGRUVBMzAwREE3QTQ1IC8qIFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNl
RGF0YS5oICovLAorCQkJCTBGNzA3Qzc3MUExRkVFODMwMERBN0E0NSAvKiBSZW1vdGVMYXllclRy
ZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEubW0gKi8sCiAJCQkJMUFGRTQzNjQxOEI2QzA4MTAw
OUM3QTQ4IC8qIFVJRGVsZWdhdGUuaCAqLywKIAkJCQkxQUZFNDM2MzE4QjZDMDgxMDA5QzdBNDgg
LyogVUlEZWxlZ2F0ZS5tbSAqLywKIAkJCQkxQUMwMjczRTE5NjYyMkQ2MDBDMTJCNzUgLyogV2Vi
UGFnZVByb3h5Q29jb2EubW0gKi8sCkBAIC03NjgwLDYgKzc2ODYsNyBAQAogCQkJCUJDRTQ2OTU2
MTIxNEU2Q0IwMDBCOThFQiAvKiBXZWJGb3JtU3VibWlzc2lvbkxpc3RlbmVyUHJveHkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDMDMyRDhEMTBGNDM3QTAwMDU4QzE1QSAvKiBXZWJGcmFtZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkNFNDY5NzcxMjE0RjI3QjAwMEI5OEVCIC8qIFdlYkZyYW1lTGlz
dGVuZXJQcm94eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZGMjY0QTAxQTFGRjlDQzAwMUZFNzU5
IC8qIFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMwMzJEN0YxMEY0Mzc4RDAwNThDMTVBIC8qIFdlYkZyYW1lTG9hZGVyQ2xpZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzkxRjJDQjEyMUI2N0FEMDBFQkY3RTggLyogV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCOUY2QTAxMTIzQTg0
QjAwQTEzN0UwIC8qIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5oIGluIEhlYWRlcnMgKi8s
CkBAIC05MjY2LDYgKzkyNzMsNyBAQAogCQkJCTFBQTNENzVCMTY1MUI0NEYwMDg3MTNEMCAvKiBS
ZW1vdGVMYXllclRyZWVIb3N0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYwQzM2NTgxOEMwNTFC
QTAwRjYwN0Q3IC8qIFJlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0gaW4gU291cmNlcyAqLywKIAkJ
CQkyRERFMEFGQjE4Mjk4Q0M5MDBGOTdFQUEgLyogUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBs
aWVyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMEZGMjY0OUYxQTFGRjlDNjAwMUZFNzU5IC8qIFJl
bW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTFBRjFBQzZCMTY1MTc1OUUwMEMxN0Q3RiAvKiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlv
bi5tbSBpbiBTb3VyY2VzICovLAogCQkJCUUxQjc4NDczMTYzRjI1M0UwMDA3QjY5MiAvKiBSZW1v
dGVOZXR3b3JraW5nQ29udGV4dC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBQzEzMzdGMTg1OTBB
RTQwMEYzRUMwNSAvKiBSZW1vdGVPYmplY3RSZWdpc3RyeS5tbSBpbiBTb3VyY2VzICovLAo=
</data>
<flag name="review"
          id="269703"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>