<?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>231909</bug_id>
          
          <creation_ts>2021-10-18 13:24:37 -0700</creation_ts>
          <short_desc>cachedCGColor() and nsColor() should return smart pointers</short_desc>
          <delta_ts>2021-10-19 09:54:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=223033</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>hi</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mifenton</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pangle</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>samuel_white</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1805699</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-10-18 13:24:37 -0700</bug_when>
    <thetext>cachedCGColor() and nsColor() should return smart pointers to be truly thread-safe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805735</commentid>
    <comment_count>1</comment_count>
      <attachid>441645</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-10-18 15:23:05 -0700</bug_when>
    <thetext>Created attachment 441645
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805751</commentid>
    <comment_count>2</comment_count>
      <attachid>441651</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-10-18 15:58:44 -0700</bug_when>
    <thetext>Created attachment 441651
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805997</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-19 07:51:31 -0700</bug_when>
    <thetext>Committed r284453 (243213@main): &lt;https://commits.webkit.org/243213@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 441651.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805998</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-19 07:52:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/84414751&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806044</commentid>
    <comment_count>5</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-10-19 09:12:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/84348887&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806089</commentid>
    <comment_count>6</comment_count>
      <attachid>441651</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-10-19 09:45:42 -0700</bug_when>
    <thetext>Comment on attachment 441651
Patch

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

Looking at all these call sites makes me think about how to improve further:

It’s not great that we have both platformColor in ColorCocoa.h and nsColor in ColorMac.h. Maybe we can retire nsColor?

&gt; Source/WebCore/platform/ios/PlatformPasteboardIOS.mm:424
&gt; +    UIColor *uiColor = [PAL::getUIColorClass() colorWithCGColor:cachedCGColor(color).get()];

Seems like this should use platformColor, not cachedCGColor.

&gt; Source/WebCore/rendering/RenderThemeMac.mm:2354
&gt; +        (__bridge id)kCTForegroundColorAttributeName: (__bridge NSColor *)cachedCGColor(titleTextColorForAttachment(attachment, style)).get()

Food for thought: Is this really a cast to NSColor? If so, then I am surprised that we aren’t using the nsColor function instead of the cachedCGColor function; and I will note that the nsColor function does *not* just use cachedCGColor with toll-free bridging to convert to NSColor. So I wonder why here we do that, but elsewhere we don’t.

One possibility is that maybe this is supposed to be a CGColor that just happens to be stored in a dictionary, and thus is not really an NSColor, and toll-free bridging is not relevant. In that case this really is more of an &quot;id&quot; cast, written as if it’s an NSColor * cast.

&gt; Source/WebCore/rendering/RenderThemeMac.mm:2413
&gt; +        (__bridge id)kCTForegroundColorAttributeName: (__bridge NSColor *)cachedCGColor(subtitleColor).get()

Same.

&gt; Source/WebKit/Shared/Cocoa/ArgumentCodersCocoa.mm:294
&gt; +    return { adoptNS([[UIColor alloc] initWithCGColor:cachedCGColor(color).get()]) };

Seems like this should use platformColor, not cachedCGColor.

&gt; Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm:547
&gt; +        auto uiBackgroundColor = adoptNS([[UIColor alloc] initWithCGColor:cachedCGColor(newScrollViewBackgroundColor).get()]);

Seems like this should use platformColor, not cachedCGColor.

&gt; Source/WebKit/UIProcess/ios/DragDropInteractionState.mm:229
&gt; +    auto preview = createTargetedDragPreview(textIndicatorImage.get(), contentView, previewContainer, indicator.textBoundingRectInRootViewCoordinates, indicator.textRectsInBoundingRectCoordinates, [UIColor colorWithCGColor:cachedCGColor(indicator.estimatedBackgroundColor).get()], nil);

Seems like this should use platformColor, not cachedCGColor.

&gt; Source/WebKit/UIProcess/ios/DragDropInteractionState.mm:316
&gt; +        return createTargetedDragPreview(textIndicatorImage.get(), contentView, previewContainer, indicator.textBoundingRectInRootViewCoordinates, indicator.textRectsInBoundingRectCoordinates, [UIColor colorWithCGColor:cachedCGColor(indicator.estimatedBackgroundColor).get()], nil).autorelease();

Seems like this should use platformColor, not cachedCGColor.

&gt; Source/WebKit/UIProcess/ios/ViewGestureControllerIOS.mm:228
&gt; +            backgroundColor = adoptNS([[UIColor alloc] initWithCGColor:WebCore::cachedCGColor(coreColor).get()]);

Seems like this should use platformColor, not cachedCGColor.

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:2015
&gt; +    [_highlightView setColor:adoptNS([[UIColor alloc] initWithCGColor:cachedCGColor(_tapHighlightInformation.color).get()]).get()];

Seems like this should use platformColor, not cachedCGColor.

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:3694
&gt; +            return [UIColor colorWithCGColor:cachedCGColor(caretColor).get()];

Seems like this should use platformColor, not cachedCGColor.

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:8600
&gt; +        targetedPreview = createTargetedPreview(textIndicatorImage.get(), self, self.containerForContextMenuHintPreviews, indicator.textBoundingRectInRootViewCoordinates, indicator.textRectsInBoundingRectCoordinates, [UIColor colorWithCGColor:cachedCGColor(indicator.estimatedBackgroundColor).get()]);

Seems like this should use platformColor, not cachedCGColor.

&gt; Source/WebKit/UIProcess/ios/forms/WKFormColorControl.mm:82
&gt; +        [colors addObject:[UIColor colorWithCGColor:cachedCGColor(color).get()]];

Seems like this should use platformColor, not cachedCGColor.

&gt; Source/WebKit/UIProcess/ios/forms/WKFormColorControl.mm:90
&gt; +    [_colorPickerViewController setSelectedColor:[UIColor colorWithCGColor:cachedCGColor(_view.focusedElementInformation.colorValue).get()]];

Seems like this should use platformColor, not cachedCGColor.

&gt; Source/WebKitLegacy/mac/WebView/WebView.mm:885
&gt; +        _estimatedBackgroundColor = [PAL::allocUIColorInstance() initWithCGColor:cachedCGColor(indicatorData.estimatedBackgroundColor).get()];

Seems like this should use platformColor, not cachedCGColor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806090</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-10-19 09:46:02 -0700</bug_when>
    <thetext>I’ll tackle these changes I am suggesting in another bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806096</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-10-19 09:54:06 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #7)
&gt; I’ll tackle these changes I am suggesting in another bug.

Thanks.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441645</attachid>
            <date>2021-10-18 15:23:05 -0700</date>
            <delta_ts>2021-10-18 16:08:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231909-20211018152304.patch</filename>
            <type>text/plain</type>
            <size>83461</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0Mzg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjNjN2ViZGQ4MzA5ZjUw
MjgxNDk5MzJmYzI0MTJjZWNiODRkNTc5YS4uOWFkZDdkODk0NGI0NTI5MjlmMzAyODQ4N2NkZTIx
NjlmMTEyOWVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc0IEBACisyMDIxLTEwLTE4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgY2FjaGVkQ0dDb2xvcigpIGFu
ZCBuc0NvbG9yKCkgc2hvdWxkIHJldHVybiBzbWFydCBwb2ludGVycworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxOTA5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgcjI3NjI4MyBhdHRlbXB0ZWQgdG8gbWFr
ZSBjYWNoZWRDR0NvbG9yKCkgYW5kIG5zQ29sb3IoKSB0aHJlYWQtc2FmZSBidXQgdGhlIGZpeCB3
YXMgaW5jb21wbGV0ZQorICAgICAgICBzaW5jZSB0aG9zZSBmdW5jdGlvbnMgcmV0dXJuIHVucmV0
YWluZWQgb2JqZWN0cyB0aGF0IGNhbiBiZSByZWxlYXNlZCBmcm9tIHRoZSBjYWNoZSBvbiBhbnkK
KyAgICAgICAgb3RoZXIgdGhyZWFkLiBUaGlzIHBhdGNoIHVwZGF0ZXMgY2FjaGVkQ0dDb2xvcigp
IGFuZCBuc0NvbG9yKCkgdG8gcmV0dXJuIGEgUmV0YWluUHRyIHRvIGFkZHJlc3MKKyAgICAgICAg
dGhlIGlzc3VlLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJNYWMubW06CisgICAgICAgIChBWEF0dHJpYnV0ZVN0cmluZ1NldFN0eWxl
KToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0ZvbnRBdHRyaWJ1dGVzQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpGb250QXR0cmlidXRlczo6Y3JlYXRlRGljdGlvbmFyeSBjb25zdCk6Cisg
ICAgICAgICogZWRpdGluZy9jb2NvYS9Gb250U2hhZG93Q29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjpGb250U2hhZG93OjpjcmVhdGVTaGFkb3cgY29uc3QpOgorICAgICAgICAqIGVkaXRpbmcv
Y29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAgKEhUTUxDb252ZXJ0ZXI6OmNvbnZlcnQp
OgorICAgICAgICAoSFRNTENvbnZlcnRlcjo6X2NvbG9yRm9yRWxlbWVudCk6CisgICAgICAgIChI
VE1MQ29udmVydGVyOjpjb21wdXRlZEF0dHJpYnV0ZXNGb3JFbGVtZW50KToKKyAgICAgICAgKEhU
TUxDb252ZXJ0ZXI6Ol9maWxsSW5CbG9jayk6CisgICAgICAgIChIVE1MQ29udmVydGVyOjpfcHJv
Y2Vzc0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6ZWRpdGluZ0F0dHJpYnV0ZWRTdHJpbmcp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6
aW5pdGlhbGl6ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxh
eWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6ZHJhd1RleHRBdFBv
aW50IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9y
bUNBRmlsdGVyc0NvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUZpbHRlcnM6
OnNldEZpbHRlcnNPbkxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2Nv
YS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FM
YXllckNvY29hOjpzZXRCYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1DQUxheWVyQ29jb2E6OnNldEJvcmRlckNvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9Db2xvckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhY2hlZENHQ29sb3IpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50Q0cuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R3JhZGllbnQ6OmNyZWF0ZUNHR3JhZGllbnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNl
dENHRmlsbENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldENHU2hhZG93KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENHOjpkaWRVcGRhdGVTdGF0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQ29sb3JDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0NvbG9yQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9y
bUNvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3Jl
VGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGRBdHRyaWJ1dGVzRm9yQ3VzdG9tRm9udFBh
bGV0dGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRl
eHRDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdGb2N1c1JpbmdBdFRpbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6Y29sb3JGb3JNYXJrZXJMaW5lU3R5bGUpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0Q0c6OmRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbToKKyAgICAgICAgKFdURjo6UmV0YWluUHRyPE5TQ29s
b3I+Pjo6Y3JlYXRlVmFsdWVGb3JLZXkpOgorICAgICAgICAoV2ViQ29yZTo6bnNDb2xvcik6Cisg
ICAgICAgICogcGxhdGZvcm0vbWFjL0xvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UubW06Cisg
ICAgICAgIChXZWJDb3JlOjpMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlOjpMb2NhbERlZmF1
bHRTeXN0ZW1BcHBlYXJhbmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0
ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRD
b2xvcik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6OnNldFVwT3ZlcmhhbmdBcmVhQmFja2dy
b3VuZCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6ZHJhd0NlbGxGb2N1c1JpbmdXaXRoRnJhbWVBdFRpbWUpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkF0dGFjaG1lbnRMYXlv
dXQ6OmxheU91dFRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6OkF0dGFjaG1lbnRMYXlvdXQ6Omxh
eU91dFN1YnRpdGxlKToKKyAgICAgICAgKiB0ZXN0aW5nL2NvY29hL1dlYlZpZXdWaXN1YWxJZGVu
dGlmaWNhdGlvbk92ZXJsYXkubW06CisgICAgICAgICgtW1dlYlZpZXdWaXN1YWxJZGVudGlmaWNh
dGlvbk92ZXJsYXkgaW5pdFdpdGhXZWJWaWV3OmtpbmQ6ZGVwcmVjYXRlZDpdKToKKyAgICAgICAg
KGRyYXdQYXR0ZXJuKToKKwogMjAyMS0xMC0xOCAgVHlsZXIgV2lsY29jayAgPHR5bGVyX3dAYXBw
bGUuY29tPgogCiAgICAgICAgIEFYOiBSZXR1cm4gQVhFbXB0eUdyb3VwIHN1YnJvbGUgZm9yIGdy
b3VwcyB3aXRoIG5vIGFjY2Vzc2libGUgY29udGVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0NjM3M2Y0MjRkMDdl
MjNlMTljZTlmZWY5NzY1Y2M5YzQ2YjQ4MmFlLi5mZWJiNDdiZGIwNTkwZGNjYjllNzRkODRhYmFi
ODI1OWYyNTQyN2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIxLTEwLTE4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgY2FjaGVkQ0dDb2xvcigpIGFu
ZCBuc0NvbG9yKCkgc2hvdWxkIHJldHVybiBzbWFydCBwb2ludGVycworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxOTA5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgcjI3NjI4MyBhdHRlbXB0ZWQgdG8gbWFr
ZSBjYWNoZWRDR0NvbG9yKCkgYW5kIG5zQ29sb3IoKSB0aHJlYWQtc2FmZSBidXQgdGhlIGZpeCB3
YXMgaW5jb21wbGV0ZQorICAgICAgICBzaW5jZSB0aG9zZSBmdW5jdGlvbnMgcmV0dXJuIHVucmV0
YWluZWQgb2JqZWN0cyB0aGF0IGNhbiBiZSByZWxlYXNlZCBmcm9tIHRoZSBjYWNoZSBvbiBhbnkK
KyAgICAgICAgb3RoZXIgdGhyZWFkLiBUaGlzIHBhdGNoIHVwZGF0ZXMgY2FjaGVkQ0dDb2xvcigp
IGFuZCBuc0NvbG9yKCkgdG8gcmV0dXJuIGEgUmV0YWluUHRyIHRvIGFkZHJlc3MKKyAgICAgICAg
dGhlIGlzc3VlLgorCisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
clRyZWVQcm9wZXJ0eUFwcGxpZXIubW06CisgICAgICAgIChXZWJLaXQ6OmNnQ29sb3JGcm9tQ29s
b3IpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXI6OmFw
cGx5UHJvcGVydGllc1RvTGF5ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgdGhlbWVDb2xvcl0pOgorICAgICAgICAo
LVtXS1dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyBfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yXSk6CisgICAgICAgICgtW1dLV2ViVmll
dyBfc2FtcGxlZFBhZ2VUb3BDb2xvcl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbToKKyAgICAgICAgKC1bX1dLQXBwbGljYXRpb25NYW5p
ZmVzdCB0aGVtZUNvbG9yXSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1t
OgorICAgICAgICAoLVtXS1ZpZXcgdW5kZXJsYXlDb2xvcl0pOgorICAgICAgICAoLVtXS1ZpZXcg
X3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
bWFjL1dLV2ViVmlld01hYy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF91bmRlcmxheUNvbG9y
XSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
SW1wbDo6dXBkYXRlVGV4dFRvdWNoQmFyKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6
OnVuZGVybGF5Q29sb3IgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cGFn
ZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvUERG
L1dLUERGSFVEVmlldy5tbToKKyAgICAgICAgKC1bV0tQREZIVURWaWV3IF9zZXR1cExheWVyOl0p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViQ29sb3JQaWNrZXJNYWMubW06CisgICAgICAg
IChXZWJLaXQ6OldlYkNvbG9yUGlja2VyTWFjOjpzZXRTZWxlY3RlZENvbG9yKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29sb3JQaWNrZXJNYWM6OnNob3dDb2xvclBpY2tlcik6CisgICAgICAgICgt
W1dLQ29sb3JQb3BvdmVyTWFjIHNldEFuZFNob3dQaWNrZXI6d2l0aENvbG9yOnN1Z2dlc3Rpb25z
Ol0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0QWNjZW50Q29sb3IpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZW50ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1l
bnQpOgorCiAyMDIxLTEwLTE4ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgUmV2ZXJ0IHIyODQyMTYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZwppbmRleCA0MjU5NzE2NTY4MjE3MTcwMGFkYzQwNTVhMzBhYThiM2I5OWY4NDVlLi5iZjZhYWEz
NWE5MzIxYTc5NGNkYTI3NmQyMDA5Mjc1YzI5ODE5M2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjEtMTAtMTggIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBjYWNoZWRDR0NvbG9yKCkgYW5kIG5zQ29sb3IoKSBzaG91
bGQgcmV0dXJuIHNtYXJ0IHBvaW50ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzE5MDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICByMjc2MjgzIGF0dGVtcHRlZCB0byBtYWtlIGNhY2hlZENHQ29sb3Io
KSBhbmQgbnNDb2xvcigpIHRocmVhZC1zYWZlIGJ1dCB0aGUgZml4IHdhcyBpbmNvbXBsZXRlCisg
ICAgICAgIHNpbmNlIHRob3NlIGZ1bmN0aW9ucyByZXR1cm4gdW5yZXRhaW5lZCBvYmplY3RzIHRo
YXQgY2FuIGJlIHJlbGVhc2VkIGZyb20gdGhlIGNhY2hlIG9uIGFueQorICAgICAgICBvdGhlciB0
aHJlYWQuIFRoaXMgcGF0Y2ggdXBkYXRlcyBjYWNoZWRDR0NvbG9yKCkgYW5kIG5zQ29sb3IoKSB0
byByZXR1cm4gYSBSZXRhaW5QdHIgdG8gYWRkcmVzcworICAgICAgICB0aGUgaXNzdWUuCisKKyAg
ICAgICAgKiBET00vRE9NUkdCQ29sb3IubW06CisgICAgICAgICgtW0RPTVJHQkNvbG9yIGNvbG9y
XSk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUg
X2JvZHlCYWNrZ3JvdW5kQ29sb3JdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06Cisg
ICAgICAgICgtW1dlYlZpZXcgdXBkYXRlVGV4dFRvdWNoQmFyXSk6CisKIDIwMjEtMTAtMTUgIEJy
YWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYktpdCBNYW5hZ2Vk
IE5vdGlmaWNhdGlvbnM6IFNrZWxldG9uIE5vdGlmaWNhdGlvblByb3ZpZGVyLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQppbmRleCAzMjkyNWQwNzBiZWFkYjBkNTNmYzkx
M2IyOTY0ZmY4ODE4ZmEzODEzLi4yZjI5MTg5ODk3Y2IzODVlMWM2YmRmMDVkNjg4MTdjNmRkMmFl
Y2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQpAQCAtODU0LDgg
Kzg1NCw4IEBAIHN0YXRpYyB2b2lkIEFYQXR0cmlidXRlU3RyaW5nU2V0U3R5bGUoTlNNdXRhYmxl
QXR0cmlidXRlZFN0cmluZyogYXR0clN0cmluZywgUmVuCiAgICAgQVhBdHRyaWJ1dGVTdHJpbmdT
ZXRGb250KGF0dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eUZvbnRUZXh0QXR0cmlidXRlLCBzdHls
ZS5mb250Q2FzY2FkZSgpLnByaW1hcnlGb250KCkuZ2V0Q1RGb250KCksIHJhbmdlKTsKICAgICAK
ICAgICAvLyBzZXQgYmFzaWMgY29sb3JzCi0gICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRDb2xvcihh
dHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlGb3JlZ3JvdW5kQ29sb3JUZXh0QXR0cmlidXRlLCBu
c0NvbG9yKHN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSksIHJh
bmdlKTsKLSAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldENvbG9yKGF0dHJTdHJpbmcsIE5TQWNjZXNz
aWJpbGl0eUJhY2tncm91bmRDb2xvclRleHRBdHRyaWJ1dGUsIG5zQ29sb3Ioc3R5bGUudmlzaXRl
ZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKSksIHJhbmdlKTsKKyAg
ICBBWEF0dHJpYnV0ZVN0cmluZ1NldENvbG9yKGF0dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eUZv
cmVncm91bmRDb2xvclRleHRBdHRyaWJ1dGUsIG5zQ29sb3Ioc3R5bGUudmlzaXRlZERlcGVuZGVu
dENvbG9yKENTU1Byb3BlcnR5Q29sb3IpKS5nZXQoKSwgcmFuZ2UpOworICAgIEFYQXR0cmlidXRl
U3RyaW5nU2V0Q29sb3IoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5QmFja2dyb3VuZENvbG9y
VGV4dEF0dHJpYnV0ZSwgbnNDb2xvcihzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kQ29sb3IpKS5nZXQoKSwgcmFuZ2UpOwogICAgIAogICAgIC8vIHNldCBz
dXBlci9zdWIgc2NyaXB0aW5nCiAgICAgVmVydGljYWxBbGlnbiBhbGlnbm1lbnQgPSBzdHlsZS52
ZXJ0aWNhbEFsaWduKCk7CkBAIC04OTAsMTIgKzg5MCwxMiBAQCBzdGF0aWMgdm9pZCBBWEF0dHJp
YnV0ZVN0cmluZ1NldFN0eWxlKE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJpbmcs
IFJlbgogCiAgICAgICAgIGlmIChkZWNvciAmIFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmUpIHsK
ICAgICAgICAgICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0TnVtYmVyKGF0dHJTdHJpbmcsIE5TQWNj
ZXNzaWJpbGl0eVVuZGVybGluZVRleHRBdHRyaWJ1dGUsIEBZRVMsIHJhbmdlKTsKLSAgICAgICAg
ICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0Q29sb3IoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5
VW5kZXJsaW5lQ29sb3JUZXh0QXR0cmlidXRlLCBuc0NvbG9yKGRlY29yYXRpb25TdHlsZXMudW5k
ZXJsaW5lQ29sb3IpLCByYW5nZSk7CisgICAgICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldENv
bG9yKGF0dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eVVuZGVybGluZUNvbG9yVGV4dEF0dHJpYnV0
ZSwgbnNDb2xvcihkZWNvcmF0aW9uU3R5bGVzLnVuZGVybGluZUNvbG9yKS5nZXQoKSwgcmFuZ2Up
OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAoZGVjb3IgJiBUZXh0RGVjb3JhdGlv
bjo6TGluZVRocm91Z2gpIHsKICAgICAgICAgICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0TnVtYmVy
KGF0dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eVN0cmlrZXRocm91Z2hUZXh0QXR0cmlidXRlLCBA
WUVTLCByYW5nZSk7Ci0gICAgICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldENvbG9yKGF0dHJT
dHJpbmcsIE5TQWNjZXNzaWJpbGl0eVN0cmlrZXRocm91Z2hDb2xvclRleHRBdHRyaWJ1dGUsIG5z
Q29sb3IoZGVjb3JhdGlvblN0eWxlcy5saW5ldGhyb3VnaENvbG9yKSwgcmFuZ2UpOworICAgICAg
ICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRDb2xvcihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxp
dHlTdHJpa2V0aHJvdWdoQ29sb3JUZXh0QXR0cmlidXRlLCBuc0NvbG9yKGRlY29yYXRpb25TdHls
ZXMubGluZXRocm91Z2hDb2xvcikuZ2V0KCksIHJhbmdlKTsKICAgICAgICAgfQogICAgIH0KICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRm9udEF0dHJpYnV0
ZXNDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRm9udEF0dHJpYnV0ZXND
b2NvYS5tbQppbmRleCBkMTgzMzM0MjMwYWM4Njg5ZTk2YzBkNDg0NjRkODE1YTc5MWYxYTUxLi4y
YTNjMWU0ODYxZDJjYjM4NTdjMjk4YWFkMWM5ZmM4MjA4ZWE5OWIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0ZvbnRBdHRyaWJ1dGVzQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9Gb250QXR0cmlidXRlc0NvY29hLm1tCkBAIC05MSwx
MCArOTEsMTAgQEAgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gRm9udEF0dHJpYnV0ZXM6OmNyZWF0
ZURpY3Rpb25hcnkoKSBjb25zdAogICAgICAgICBhdHRyaWJ1dGVzW05TRm9udEF0dHJpYnV0ZU5h
bWVdID0gZm9udC5nZXQoKTsKIAogICAgIGlmIChmb3JlZ3JvdW5kQ29sb3IuaXNWYWxpZCgpKQot
ICAgICAgICBhdHRyaWJ1dGVzW05TRm9yZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZV0gPSBwbGF0
Zm9ybUNvbG9yKGZvcmVncm91bmRDb2xvcik7CisgICAgICAgIGF0dHJpYnV0ZXNbTlNGb3JlZ3Jv
dW5kQ29sb3JBdHRyaWJ1dGVOYW1lXSA9IHBsYXRmb3JtQ29sb3IoZm9yZWdyb3VuZENvbG9yKS5n
ZXQoKTsKIAogICAgIGlmIChiYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpKQotICAgICAgICBhdHRy
aWJ1dGVzW05TQmFja2dyb3VuZENvbG9yQXR0cmlidXRlTmFtZV0gPSBwbGF0Zm9ybUNvbG9yKGJh
Y2tncm91bmRDb2xvcik7CisgICAgICAgIGF0dHJpYnV0ZXNbTlNCYWNrZ3JvdW5kQ29sb3JBdHRy
aWJ1dGVOYW1lXSA9IHBsYXRmb3JtQ29sb3IoYmFja2dyb3VuZENvbG9yKS5nZXQoKTsKIAogICAg
IGlmIChmb250U2hhZG93LmNvbG9yLmlzVmFsaWQoKSAmJiAoIWZvbnRTaGFkb3cub2Zmc2V0Lmlz
WmVybygpIHx8IGZvbnRTaGFkb3cuYmx1clJhZGl1cykpCiAgICAgICAgIGF0dHJpYnV0ZXNbTlNT
aGFkb3dBdHRyaWJ1dGVOYW1lXSA9IGZvbnRTaGFkb3cuY3JlYXRlU2hhZG93KCkuZ2V0KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0ZvbnRTaGFkb3dDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRm9udFNoYWRvd0NvY29hLm1tCmluZGV4
IDA0NThkMDYxNDZkYjUwZDgyNjA5ZWY0OGUyMjExZTJhM2M5N2YxNmMuLjhlZjhhMDNjYmY1YTI0
ZjA2Yzk3MTAwM2MzOTFhYzU4MzI5ZjNkOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvRm9udFNoYWRvd0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvRm9udFNoYWRvd0NvY29hLm1tCkBAIC00Miw3ICs0Miw3IEBAIFJldGFpblB0cjxO
U1NoYWRvdz4gRm9udFNoYWRvdzo6Y3JlYXRlU2hhZG93KCkgY29uc3QKICNlbGlmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgYXV0byBzaGFkb3cgPSBhZG9wdE5TKFtQQUw6OmdldE5TU2hhZG93
Q2xhc3MoKSBuZXddKTsKICNlbmRpZgotICAgIFtzaGFkb3cgc2V0U2hhZG93Q29sb3I6cGxhdGZv
cm1Db2xvcihjb2xvcildOworICAgIFtzaGFkb3cgc2V0U2hhZG93Q29sb3I6cGxhdGZvcm1Db2xv
cihjb2xvcikuZ2V0KCldOwogICAgIFtzaGFkb3cgc2V0U2hhZG93T2Zmc2V0Om9mZnNldF07CiAg
ICAgW3NoYWRvdyBzZXRTaGFkb3dCbHVyUmFkaXVzOmJsdXJSYWRpdXNdOwogICAgIHJldHVybiBz
aGFkb3c7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252
ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0K
aW5kZXggODQ1OTg0NmE0YWFiMWU3ODU4NTk2YThjMTQ0OWRiYTZiNmY0OTI2YS4uNzljNGYxMjY0
NWNjOTIzMjkzNWU0NjQ1OGNkN2QyODNkN2UxOTNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtMzIyLDcgKzMyMiw3IEBAIHByaXZhdGU6
CiAgICAgICAgIHVuc2lnbmVkIGludCBwYWQ6MjY7CiAgICAgfSBfZmxhZ3M7CiAgICAgCi0gICAg
UGxhdGZvcm1Db2xvciAqX2NvbG9yRm9yRWxlbWVudChFbGVtZW50JiwgQ1NTUHJvcGVydHlJRCk7
CisgICAgUmV0YWluUHRyPFBsYXRmb3JtQ29sb3I+IF9jb2xvckZvckVsZW1lbnQoRWxlbWVudCYs
IENTU1Byb3BlcnR5SUQpOwogICAgIAogICAgIHZvaWQgX3RyYXZlcnNlTm9kZShOb2RlJiwgdW5z
aWduZWQgZGVwdGgsIGJvb2wgZW1iZWRkZWQpOwogICAgIHZvaWQgX3RyYXZlcnNlRm9vdGVyTm9k
ZShFbGVtZW50JiwgdW5zaWduZWQgZGVwdGgpOwpAQCAtNDAwLDggKzQwMCw4IEBAIEF0dHJpYnV0
ZWRTdHJpbmcgSFRNTENvbnZlcnRlcjo6Y29udmVydCgpCiAKICAgICBEb2N1bWVudCYgZG9jdW1l
bnQgPSBjb21tb25BbmNlc3RvckNvbnRhaW5lci0+ZG9jdW1lbnQoKTsKICAgICBpZiAoYXV0byog
Ym9keSA9IGRvY3VtZW50LmJvZHlPckZyYW1lc2V0KCkpIHsKLSAgICAgICAgaWYgKFBsYXRmb3Jt
Q29sb3IgKmJhY2tncm91bmRDb2xvciA9IF9jb2xvckZvckVsZW1lbnQoKmJvZHksIENTU1Byb3Bl
cnR5QmFja2dyb3VuZENvbG9yKSkKLSAgICAgICAgICAgIFtfZG9jdW1lbnRBdHRycyBzZXRPYmpl
Y3Q6YmFja2dyb3VuZENvbG9yIGZvcktleTpOU0JhY2tncm91bmRDb2xvckRvY3VtZW50QXR0cmli
dXRlXTsKKyAgICAgICAgaWYgKGF1dG8gYmFja2dyb3VuZENvbG9yID0gX2NvbG9yRm9yRWxlbWVu
dCgqYm9keSwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpKQorICAgICAgICAgICAgW19kb2N1
bWVudEF0dHJzIHNldE9iamVjdDpiYWNrZ3JvdW5kQ29sb3IuZ2V0KCkgZm9yS2V5Ok5TQmFja2dy
b3VuZENvbG9yRG9jdW1lbnRBdHRyaWJ1dGVdOwogICAgIH0KIAogICAgIF9kb21SYW5nZVN0YXJ0
SW5kZXggPSAwOwpAQCAtOTA1LDEzICs5MDUsMTMgQEAgQ29sb3IgSFRNTENvbnZlcnRlckNhY2hl
czo6Y29sb3JQcm9wZXJ0eVZhbHVlRm9yTm9kZShOb2RlJiBub2RlLCBDU1NQcm9wZXJ0eUlEIHAK
ICAgICByZXR1cm4gQ29sb3IoKTsKIH0KIAotUGxhdGZvcm1Db2xvciAqSFRNTENvbnZlcnRlcjo6
X2NvbG9yRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5
SWQpCitSZXRhaW5QdHI8UGxhdGZvcm1Db2xvcj4gSFRNTENvbnZlcnRlcjo6X2NvbG9yRm9yRWxl
bWVudChFbGVtZW50JiBlbGVtZW50LCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SWQpCiB7CiAgICAg
Q29sb3IgcmVzdWx0ID0gX2NhY2hlcy0+Y29sb3JQcm9wZXJ0eVZhbHVlRm9yTm9kZShlbGVtZW50
LCBwcm9wZXJ0eUlkKTsKICAgICBpZiAoIXJlc3VsdC5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVy
biBuaWw7Ci0gICAgUGxhdGZvcm1Db2xvciAqcGxhdGZvcm1SZXN1bHQgPSBwbGF0Zm9ybUNvbG9y
KHJlc3VsdCk7Ci0gICAgaWYgKFtbUGxhdGZvcm1Db2xvckNsYXNzIGNsZWFyQ29sb3JdIGlzRXF1
YWw6cGxhdGZvcm1SZXN1bHRdIHx8IChbcGxhdGZvcm1SZXN1bHQgYWxwaGFDb21wb25lbnRdID09
IDAuMCkpCisgICAgYXV0byBwbGF0Zm9ybVJlc3VsdCA9IHBsYXRmb3JtQ29sb3IocmVzdWx0KTsK
KyAgICBpZiAoW1tQbGF0Zm9ybUNvbG9yQ2xhc3MgY2xlYXJDb2xvcl0gaXNFcXVhbDpwbGF0Zm9y
bVJlc3VsdC5nZXQoKV0gfHwgKFtwbGF0Zm9ybVJlc3VsdCBhbHBoYUNvbXBvbmVudF0gPT0gMC4w
KSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICByZXR1cm4gcGxhdGZvcm1SZXN1bHQ7CiB9CkBA
IC05MzMsOSArOTMzLDkgQEAgTlNEaWN0aW9uYXJ5ICpIVE1MQ29udmVydGVyOjpjb21wdXRlZEF0
dHJpYnV0ZXNGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiAKICAgICBQbGF0Zm9ybUZvbnQg
KmZvbnQgPSBuaWw7CiAgICAgUGxhdGZvcm1Gb250ICphY3R1YWxGb250ID0gX2ZvbnQoZWxlbWVu
dCk7Ci0gICAgUGxhdGZvcm1Db2xvciAqZm9yZWdyb3VuZENvbG9yID0gX2NvbG9yRm9yRWxlbWVu
dChlbGVtZW50LCBDU1NQcm9wZXJ0eUNvbG9yKTsKLSAgICBQbGF0Zm9ybUNvbG9yICpiYWNrZ3Jv
dW5kQ29sb3IgPSBfY29sb3JGb3JFbGVtZW50KGVsZW1lbnQsIENTU1Byb3BlcnR5QmFja2dyb3Vu
ZENvbG9yKTsKLSAgICBQbGF0Zm9ybUNvbG9yICpzdHJva2VDb2xvciA9IF9jb2xvckZvckVsZW1l
bnQoZWxlbWVudCwgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3IpOworICAgIGF1dG8g
Zm9yZWdyb3VuZENvbG9yID0gX2NvbG9yRm9yRWxlbWVudChlbGVtZW50LCBDU1NQcm9wZXJ0eUNv
bG9yKTsKKyAgICBhdXRvIGJhY2tncm91bmRDb2xvciA9IF9jb2xvckZvckVsZW1lbnQoZWxlbWVu
dCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOworICAgIGF1dG8gc3Ryb2tlQ29sb3IgPSBf
Y29sb3JGb3JFbGVtZW50KGVsZW1lbnQsIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9y
KTsKIAogICAgIGZsb2F0IGZvbnRTaXplID0gMDsKICAgICBpZiAoIV9jYWNoZXMtPmZsb2F0UHJv
cGVydHlWYWx1ZUZvck5vZGUoZWxlbWVudCwgQ1NTUHJvcGVydHlGb250U2l6ZSwgZm9udFNpemUp
IHx8IGZvbnRTaXplIDw9IDAuMCkKQEAgLTEwMDEsOSArMTAwMSw5IEBAIE5TRGljdGlvbmFyeSAq
SFRNTENvbnZlcnRlcjo6Y29tcHV0ZWRBdHRyaWJ1dGVzRm9yRWxlbWVudChFbGVtZW50JiBlbGVt
ZW50KQogICAgIGlmIChmb250KQogICAgICAgICBbYXR0cnMgc2V0T2JqZWN0OmZvbnQgZm9yS2V5
Ok5TRm9udEF0dHJpYnV0ZU5hbWVdOwogICAgIGlmIChmb3JlZ3JvdW5kQ29sb3IpCi0gICAgICAg
IFthdHRycyBzZXRPYmplY3Q6Zm9yZWdyb3VuZENvbG9yIGZvcktleTpOU0ZvcmVncm91bmRDb2xv
ckF0dHJpYnV0ZU5hbWVdOworICAgICAgICBbYXR0cnMgc2V0T2JqZWN0OmZvcmVncm91bmRDb2xv
ci5nZXQoKSBmb3JLZXk6TlNGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lXTsKICAgICBpZiAo
YmFja2dyb3VuZENvbG9yICYmICFfY2FjaGVzLT5lbGVtZW50SGFzT3duQmFja2dyb3VuZENvbG9y
KGVsZW1lbnQpKQotICAgICAgICBbYXR0cnMgc2V0T2JqZWN0OmJhY2tncm91bmRDb2xvciBmb3JL
ZXk6TlNCYWNrZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lXTsKKyAgICAgICAgW2F0dHJzIHNldE9i
amVjdDpiYWNrZ3JvdW5kQ29sb3IuZ2V0KCkgZm9yS2V5Ok5TQmFja2dyb3VuZENvbG9yQXR0cmli
dXRlTmFtZV07CiAKICAgICBmbG9hdCBzdHJva2VXaWR0aCA9IDAuMDsKICAgICBpZiAoX2NhY2hl
cy0+ZmxvYXRQcm9wZXJ0eVZhbHVlRm9yTm9kZShlbGVtZW50LCBDU1NQcm9wZXJ0eVdlYmtpdFRl
eHRTdHJva2VXaWR0aCwgc3Ryb2tlV2lkdGgpKSB7CkBAIC0xMDExLDcgKzEwMTEsNyBAQCBOU0Rp
Y3Rpb25hcnkgKkhUTUxDb252ZXJ0ZXI6OmNvbXB1dGVkQXR0cmlidXRlc0ZvckVsZW1lbnQoRWxl
bWVudCYgZWxlbWVudCkKICAgICAgICAgW2F0dHJzIHNldE9iamVjdDpAKHRleHRTdHJva2VXaWR0
aCkgZm9yS2V5Ok5TU3Ryb2tlV2lkdGhBdHRyaWJ1dGVOYW1lXTsKICAgICB9CiAgICAgaWYgKHN0
cm9rZUNvbG9yKQotICAgICAgICBbYXR0cnMgc2V0T2JqZWN0OnN0cm9rZUNvbG9yIGZvcktleTpO
U1N0cm9rZUNvbG9yQXR0cmlidXRlTmFtZV07CisgICAgICAgIFthdHRycyBzZXRPYmplY3Q6c3Ry
b2tlQ29sb3IuZ2V0KCkgZm9yS2V5Ok5TU3Ryb2tlQ29sb3JBdHRyaWJ1dGVOYW1lXTsKIAogICAg
IFN0cmluZyBmb250S2VybmluZyA9IF9jYWNoZXMtPnByb3BlcnR5VmFsdWVGb3JOb2RlKGVsZW1l
bnQsIENTU1Byb3BlcnR5V2Via2l0Rm9udEtlcm5pbmcpOwogICAgIFN0cmluZyBsZXR0ZXJTcGFj
aW5nID0gX2NhY2hlcy0+cHJvcGVydHlWYWx1ZUZvck5vZGUoZWxlbWVudCwgQ1NTUHJvcGVydHlM
ZXR0ZXJTcGFjaW5nKTsKQEAgLTE0NDgsMjEgKzE0NDgsMjEgQEAgdm9pZCBIVE1MQ29udmVydGVy
OjpfZmlsbEluQmxvY2soTlNUZXh0QmxvY2sgKmJsb2NrLCBFbGVtZW50JiBlbGVtZW50LCBQbGF0
Zm9ybUMKICAgICBlbHNlCiAgICAgICAgIFtibG9jayBzZXRXaWR0aDpleHRyYU1hcmdpbiB0eXBl
Ok5TVGV4dEJsb2NrQWJzb2x1dGVWYWx1ZVR5cGUgZm9yTGF5ZXI6TlNUZXh0QmxvY2tNYXJnaW4g
ZWRnZTpOU01heFlFZGdlXTsKICAgICAKLSAgICBQbGF0Zm9ybUNvbG9yICpjb2xvciA9IG5pbDsK
KyAgICBSZXRhaW5QdHI8UGxhdGZvcm1Db2xvcj4gY29sb3I7CiAgICAgaWYgKChjb2xvciA9IF9j
b2xvckZvckVsZW1lbnQoZWxlbWVudCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpKSkKLSAg
ICAgICAgW2Jsb2NrIHNldEJhY2tncm91bmRDb2xvcjpjb2xvcl07CisgICAgICAgIFtibG9jayBz
ZXRCYWNrZ3JvdW5kQ29sb3I6Y29sb3IuZ2V0KCldOwogICAgIGlmICghY29sb3IgJiYgYmFja2dy
b3VuZENvbG9yKQogICAgICAgICBbYmxvY2sgc2V0QmFja2dyb3VuZENvbG9yOmJhY2tncm91bmRD
b2xvcl07CiAgICAgCiAgICAgaWYgKChjb2xvciA9IF9jb2xvckZvckVsZW1lbnQoZWxlbWVudCwg
Q1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IpKSkKLSAgICAgICAgW2Jsb2NrIHNldEJvcmRlckNv
bG9yOmNvbG9yIGZvckVkZ2U6TlNNaW5YRWRnZV07CisgICAgICAgIFtibG9jayBzZXRCb3JkZXJD
b2xvcjpjb2xvci5nZXQoKSBmb3JFZGdlOk5TTWluWEVkZ2VdOwogICAgIAogICAgIGlmICgoY29s
b3IgPSBfY29sb3JGb3JFbGVtZW50KGVsZW1lbnQsIENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3Ip
KSkKLSAgICAgICAgW2Jsb2NrIHNldEJvcmRlckNvbG9yOmNvbG9yIGZvckVkZ2U6TlNNaW5ZRWRn
ZV07CisgICAgICAgIFtibG9jayBzZXRCb3JkZXJDb2xvcjpjb2xvci5nZXQoKSBmb3JFZGdlOk5T
TWluWUVkZ2VdOwogICAgIGlmICgoY29sb3IgPSBfY29sb3JGb3JFbGVtZW50KGVsZW1lbnQsIENT
U1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvcikpKQotICAgICAgICBbYmxvY2sgc2V0Qm9yZGVyQ29s
b3I6Y29sb3IgZm9yRWRnZTpOU01heFhFZGdlXTsKKyAgICAgICAgW2Jsb2NrIHNldEJvcmRlckNv
bG9yOmNvbG9yLmdldCgpIGZvckVkZ2U6TlNNYXhYRWRnZV07CiAgICAgaWYgKChjb2xvciA9IF9j
b2xvckZvckVsZW1lbnQoZWxlbWVudCwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvcikpKQot
ICAgICAgICBbYmxvY2sgc2V0Qm9yZGVyQ29sb3I6Y29sb3IgZm9yRWRnZTpOU01heFlFZGdlXTsK
KyAgICAgICAgW2Jsb2NrIHNldEJvcmRlckNvbG9yOmNvbG9yLmdldCgpIGZvckVkZ2U6TlNNYXhZ
RWRnZV07CiB9CiAKIHN0YXRpYyBpbmxpbmUgQk9PTCByZWFkMkRpZ2l0TnVtYmVyKGNvbnN0IGNo
YXIgKipwcCwgaW50OF90ICpvdXR2YWwpCkBAIC0xNzY2LDEwICsxNzY2LDEwIEBAIEJPT0wgSFRN
TENvbnZlcnRlcjo6X3Byb2Nlc3NFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIE5TSW50ZWdlciBk
ZXB0aCkKICAgICAgICAgbV90ZXh0VGFibGVGb290ZXJzLmFkZCgoX19icmlkZ2UgQ0ZUeXBlUmVm
KVtfdGV4dFRhYmxlcyBsYXN0T2JqZWN0XSwgJmVsZW1lbnQpOwogICAgICAgICByZXR2YWwgPSBO
TzsKICAgICB9IGVsc2UgaWYgKGRpc3BsYXlWYWx1ZSA9PSAidGFibGUtcm93IiAmJiBbX3RleHRU
YWJsZXMgY291bnRdID4gMCkgewotICAgICAgICBQbGF0Zm9ybUNvbG9yICpjb2xvciA9IF9jb2xv
ckZvckVsZW1lbnQoZWxlbWVudCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOworICAgICAg
ICBhdXRvIGNvbG9yID0gX2NvbG9yRm9yRWxlbWVudChlbGVtZW50LCBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRDb2xvcik7CiAgICAgICAgIGlmICghY29sb3IpCiAgICAgICAgICAgICBjb2xvciA9IChQ
bGF0Zm9ybUNvbG9yICopW1BsYXRmb3JtQ29sb3JDbGFzcyBjbGVhckNvbG9yXTsKLSAgICAgICAg
W190ZXh0VGFibGVSb3dCYWNrZ3JvdW5kQ29sb3JzIGFkZE9iamVjdDpjb2xvcl07CisgICAgICAg
IFtfdGV4dFRhYmxlUm93QmFja2dyb3VuZENvbG9ycyBhZGRPYmplY3Q6Y29sb3IuZ2V0KCldOwog
ICAgIH0gZWxzZSBpZiAoZGlzcGxheVZhbHVlID09ICJ0YWJsZS1jZWxsIikgewogICAgICAgICB3
aGlsZSAoW190ZXh0VGFibGVzIGNvdW50XSA8IFtfdGV4dEJsb2NrcyBjb3VudF0gKyAxKQogICAg
ICAgICAgICAgX2FkZFRhYmxlRm9yRWxlbWVudChuaWwpOwpAQCAtMjQyNiwxMyArMjQyNiwxMyBA
QCBBdHRyaWJ1dGVkU3RyaW5nIGVkaXRpbmdBdHRyaWJ1dGVkU3RyaW5nKGNvbnN0IFNpbXBsZVJh
bmdlJiByYW5nZSwgSW5jbHVkZUltYWdlcwogCiAgICAgICAgIENvbG9yIGZvcmVncm91bmRDb2xv
ciA9IHN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcldpdGhDb2xvckZpbHRlcihDU1NQcm9wZXJ0
eUNvbG9yKTsKICAgICAgICAgaWYgKGZvcmVncm91bmRDb2xvci5pc1Zpc2libGUoKSkKLSAgICAg
ICAgICAgIFthdHRycyBzZXRPYmplY3Q6bnNDb2xvcihmb3JlZ3JvdW5kQ29sb3IpIGZvcktleTpO
U0ZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdOworICAgICAgICAgICAgW2F0dHJzIHNldE9i
amVjdDpuc0NvbG9yKGZvcmVncm91bmRDb2xvcikuZ2V0KCkgZm9yS2V5Ok5TRm9yZWdyb3VuZENv
bG9yQXR0cmlidXRlTmFtZV07CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIFthdHRycyByZW1v
dmVPYmplY3RGb3JLZXk6TlNGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lXTsKIAogICAgICAg
ICBDb2xvciBiYWNrZ3JvdW5kQ29sb3IgPSBzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3JXaXRo
Q29sb3JGaWx0ZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOwogICAgICAgICBpZiAoYmFj
a2dyb3VuZENvbG9yLmlzVmlzaWJsZSgpKQotICAgICAgICAgICAgW2F0dHJzIHNldE9iamVjdDpu
c0NvbG9yKGJhY2tncm91bmRDb2xvcikgZm9yS2V5Ok5TQmFja2dyb3VuZENvbG9yQXR0cmlidXRl
TmFtZV07CisgICAgICAgICAgICBbYXR0cnMgc2V0T2JqZWN0Om5zQ29sb3IoYmFja2dyb3VuZENv
bG9yKS5nZXQoKSBmb3JLZXk6TlNCYWNrZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lXTsKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgW2F0dHJzIHJlbW92ZU9iamVjdEZvcktleTpOU0JhY2tncm91
bmRDb2xvckF0dHJpYnV0ZU5hbWVdOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db2xvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3IuaAppbmRleCBhN2NmMjA4ZjA3MGE5ZjkwMDc3NzEzYTZiODFmYWRiNjhiNWM4YmQyLi4w
MGIxNTEyZGU3OTJmNThkNDZjZDJmMzdiNDk5YTVlNzkyNjJiZmNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgKQEAgLTI3MCw3ICsyNzAsNyBAQCBib29sIG91dE9m
TGluZUNvbXBvbmVudHNzRXF1YWwoY29uc3QgQ29sb3ImLCBjb25zdCBDb2xvciYpOwogYm9vbCBv
dXRPZkxpbmVDb21wb25lbnRzc0VxdWFsSWdub3JpbmdTZW1hbnRpY0NvbG9yKGNvbnN0IENvbG9y
JiwgY29uc3QgQ29sb3ImKTsKIAogI2lmIFVTRShDRykKLVdFQkNPUkVfRVhQT1JUIENHQ29sb3JS
ZWYgY2FjaGVkQ0dDb2xvcihjb25zdCBDb2xvciYpOworV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRy
PENHQ29sb3JSZWY+IGNhY2hlZENHQ29sb3IoY29uc3QgQ29sb3ImKTsKIFdFQkNPUkVfRVhQT1JU
IENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gcGxhdGZvcm1Db252ZXJ0Q29sb3JDb21wb25lbnRz
KENvbG9yU3BhY2UsIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4sIGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYpOwogV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxTUkdCQTx1aW50OF90
Pj4gcm91bmRBbmRDbGFtcFRvU1JHQkFMb3NzeShDR0NvbG9yUmVmKTsKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ci5tbQppbmRleCA1MjU0N2I1OWMxOWZhODdiYTQyYjY1MzQyNTU3OWI0ZDMwNjA5YjU2Li5jMTI2
YjkzZTg3MDZmOTU1MzBmNjEyNmY4YWQyNWZhZjYyMjJhZDcxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tbQpAQCAt
MTYzLDcgKzE2Myw3IEBAIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpMb2NhbFNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllcihSZXRhaW5QdHI8QVZTYW1wbGVCCiAKIHZvaWQgTG9jYWxTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmluaXRpYWxpemUoYm9vbCBoaWRlUm9vdExheWVyLCBJbnRT
aXplIHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBkaWRTdWNjZWVkKT4mJiBjYWxs
YmFjaykKIHsKLSAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKS5iYWNrZ3JvdW5k
Q29sb3IgPSBjYWNoZWRDR0NvbG9yKENvbG9yOjpibGFjayk7CisgICAgbV9zYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIuZ2V0KCkuYmFja2dyb3VuZENvbG9yID0gY2FjaGVkQ0dDb2xvcihDb2xvcjo6
YmxhY2spLmdldCgpOwogICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpLmFuY2hv
clBvaW50ID0geyAuNSwgLjUgfTsKICAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQo
KS5uZWVkc0Rpc3BsYXlPbkJvdW5kc0NoYW5nZSA9IFlFUzsKICAgICBtX3NhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllci5nZXQoKS52aWRlb0dyYXZpdHkgPSBBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXpl
QXNwZWN0RmlsbDsKQEAgLTE3MSw3ICsxNzEsNyBAQCB2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjppbml0aWFsaXplKGJvb2wgaGlkZVJvb3RMYXllciwgSW50U2l6ZSBzaXplLAog
ICAgIG1fcm9vdExheWVyID0gYWRvcHROUyhbW0NBTGF5ZXIgYWxsb2NdIGluaXRdKTsKICAgICBt
X3Jvb3RMYXllci5nZXQoKS5oaWRkZW4gPSBoaWRlUm9vdExheWVyOwogCi0gICAgbV9yb290TGF5
ZXIuZ2V0KCkuYmFja2dyb3VuZENvbG9yID0gY2FjaGVkQ0dDb2xvcihDb2xvcjo6YmxhY2spOwor
ICAgIG1fcm9vdExheWVyLmdldCgpLmJhY2tncm91bmRDb2xvciA9IGNhY2hlZENHQ29sb3IoQ29s
b3I6OmJsYWNrKS5nZXQoKTsKICAgICBtX3Jvb3RMYXllci5nZXQoKS5uZWVkc0Rpc3BsYXlPbkJv
dW5kc0NoYW5nZSA9IFlFUzsKIAogICAgIG1fcm9vdExheWVyLmdldCgpLmJvdW5kcyA9IENHUmVj
dE1ha2UoMCwgMCwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwCmlu
ZGV4IDFmMzkyZjU0NzczOTRjYzNjNzc1ZmE0ZDE5OGM3NDM4MjkyYWE1MmQuLjFlZTg5YjNlZWQ1
N2ZkNDYwMDAwYjMzMzA0NzJjOWMxYTVmYzViZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcApAQCAtMTU5LDEx
ICsxNTksMTIgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdUZXh0QXRQb2ludChDR0NvbnRl
eHRSZWYgY29udGV4dCwgQ0dGbG9hdCB4LCBDR0Zsb2F0IHkKICAgICAgICAga0NUU3Ryb2tlV2lk
dGhBdHRyaWJ1dGVOYW1lLAogICAgICAgICBrQ1RTdHJva2VDb2xvckF0dHJpYnV0ZU5hbWUsCiAg
ICAgfTsKKyAgICBhdXRvIHN0cm9rZUNHQ29sb3IgPSBjYWNoZWRDR0NvbG9yKHN0cm9rZUNvbG9y
KTsKICAgICBDRlR5cGVSZWYgdmFsdWVzW10gPSB7CiAgICAgICAgIGZvbnQuZ2V0KCksCiAgICAg
ICAgIGtDRkJvb2xlYW5UcnVlLAogICAgICAgICBzdHJva2VXaWR0aE51bWJlci5nZXQoKSwKLSAg
ICAgICAgY2FjaGVkQ0dDb2xvcihzdHJva2VDb2xvciksCisgICAgICAgIHN0cm9rZUNHQ29sb3Iu
Z2V0KCksCiAgICAgfTsKIAogICAgIGF1dG8gYXR0cmlidXRlcyA9IGFkb3B0Q0YoQ0ZEaWN0aW9u
YXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtleXMsIHZhbHVlcywgV1RGX0FSUkFZX0xF
TkdUSChrZXlzKSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rp
b25hcnlWYWx1ZUNhbGxCYWNrcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUZpbHRlcnNDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FGaWx0ZXJzQ29jb2Eu
bW0KaW5kZXggZDRmYTNjNGJmYWQzNGFhZjMwOTNhOWYwMjQ4NmJiNzI3Zjk4ZDRhYS4uMmQwMjAx
NmJiOGVlNjNlYjdlM2YzYTczZjNjYTY2OWJiMDllMGU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUZpbHRlcnNDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9y
bUNBRmlsdGVyc0NvY29hLm1tCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgUGxhdGZvcm1DQUZpbHRl
cnM6OnNldEZpbHRlcnNPbkxheWVyKFBsYXRmb3JtTGF5ZXIqIGxheWVyLCBjb25zdCBGaWx0ZXJP
cGVyCiAgICAgICAgICAgICAvLyA8cmRhcjovL3Byb2JsZW0vMTA5NTk5Njk+IEhhbmRsZSBjYXNl
IHdoZXJlIGRyb3Atc2hhZG93IGlzIG5vdCB0aGUgbGFzdCBmaWx0ZXIuCiAgICAgICAgICAgICBj
b25zdCBhdXRvJiBkcm9wU2hhZG93T3BlcmF0aW9uID0gZG93bmNhc3Q8RHJvcFNoYWRvd0ZpbHRl
ck9wZXJhdGlvbj4oZmlsdGVyT3BlcmF0aW9uKTsKICAgICAgICAgICAgIFtsYXllciBzZXRTaGFk
b3dPZmZzZXQ6Q0dTaXplTWFrZShkcm9wU2hhZG93T3BlcmF0aW9uLngoKSwgZHJvcFNoYWRvd09w
ZXJhdGlvbi55KCkpXTsKLSAgICAgICAgICAgIFtsYXllciBzZXRTaGFkb3dDb2xvcjpjYWNoZWRD
R0NvbG9yKGRyb3BTaGFkb3dPcGVyYXRpb24uY29sb3IoKSldOworICAgICAgICAgICAgW2xheWVy
IHNldFNoYWRvd0NvbG9yOmNhY2hlZENHQ29sb3IoZHJvcFNoYWRvd09wZXJhdGlvbi5jb2xvcigp
KS5nZXQoKV07CiAgICAgICAgICAgICBbbGF5ZXIgc2V0U2hhZG93UmFkaXVzOmRyb3BTaGFkb3dP
cGVyYXRpb24uc3RkRGV2aWF0aW9uKCldOwogICAgICAgICAgICAgW2xheWVyIHNldFNoYWRvd09w
YWNpdHk6MV07CiAgICAgICAgICAgICByZXR1cm4gbmlsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5
ZXJDb2NvYS5tbQppbmRleCBjMDhiYjA3NDk0NjEyNmRmNTY5YTg0MWQwYjU2MWZhOTY3NTdhMzY0
Li4zNGUyNTkwZjU3NzI5NmIyMjM5YmYyODY4MmZjNzU2YWM2NjkwM2FhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9Q
bGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQpAQCAtODI2LDcgKzgyNiw3IEBAIENvbG9yIFBsYXRmb3Jt
Q0FMYXllckNvY29hOjpiYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAogdm9pZCBQbGF0Zm9ybUNBTGF5
ZXJDb2NvYTo6c2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJiB2YWx1ZSkKIHsKICAgICBC
RUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBbbV9sYXllciBzZXRCYWNrZ3JvdW5kQ29s
b3I6Y2FjaGVkQ0dDb2xvcih2YWx1ZSldOworICAgIFttX2xheWVyIHNldEJhY2tncm91bmRDb2xv
cjpjYWNoZWRDR0NvbG9yKHZhbHVlKS5nZXQoKV07CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBU
SU9OUwogfQogCkBAIC04NDEsNyArODQxLDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6
c2V0Qm9yZGVyQ29sb3IoY29uc3QgQ29sb3ImIHZhbHVlKQogewogICAgIGlmICh2YWx1ZS5pc1Zh
bGlkKCkpIHsKICAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgICAgIFtt
X2xheWVyIHNldEJvcmRlckNvbG9yOmNhY2hlZENHQ29sb3IodmFsdWUpXTsKKyAgICAgICAgW21f
bGF5ZXIgc2V0Qm9yZGVyQ29sb3I6Y2FjaGVkQ0dDb2xvcih2YWx1ZSkuZ2V0KCldOwogICAgICAg
ICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAgICAgfSBlbHNlIHsKICAgICAgICAgQkVHSU5f
QkxPQ0tfT0JKQ19FWENFUFRJT05TCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0NvbG9yQ0cuY3BwCmluZGV4IDEzZWNiMzM2MTg1MmQ1YmMxMjlkZjFhZmUzMjgxOWE3
NjAyM2RjZDguLjZmZTNlMTU0M2FjNGRkMTI4ZTE2ZWQ1NmFhMDg2NTJmMzk5OWZlNDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCkBAIC0x
NzIsNyArMTcyLDcgQEAgc3RhdGljIFJldGFpblB0cjxDR0NvbG9yUmVmPiBjcmVhdGVDR0NvbG9y
KGNvbnN0IENvbG9yJiBjb2xvcikKICAgICByZXR1cm4gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKGNn
Q29sb3JTcGFjZSwgY2dGbG9hdENvbXBvbmVudHMpKTsKIH0KIAotQ0dDb2xvclJlZiBjYWNoZWRD
R0NvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK1JldGFpblB0cjxDR0NvbG9yUmVmPiBjYWNoZWRD
R0NvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKIHsKICAgICBpZiAoYXV0byBzcmdiID0gY29sb3Iu
dHJ5R2V0QXNTUkdCQUJ5dGVzKCkpIHsKICAgICAgICAgc3dpdGNoIChQYWNrZWRDb2xvcjo6UkdC
QSB7ICpzcmdiIH0udmFsdWUpIHsKQEAgLTE4Miw3ICsxODIsNyBAQCBDR0NvbG9yUmVmIGNhY2hl
ZENHQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogICAgICAgICAgICAgc3RkOjpjYWxsX29uY2Uo
b25jZUZsYWcsIFtdIHsKICAgICAgICAgICAgICAgICB0cmFuc3BhcmVudENHQ29sb3IuY29uc3Ry
dWN0KGNyZWF0ZUNHQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50QmxhY2spKTsKICAgICAgICAgICAg
IH0pOwotICAgICAgICAgICAgcmV0dXJuIHRyYW5zcGFyZW50Q0dDb2xvci5nZXQoKS5nZXQoKTsK
KyAgICAgICAgICAgIHJldHVybiB0cmFuc3BhcmVudENHQ29sb3IuZ2V0KCk7CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBQYWNrZWRDb2xvcjo6UkdCQSB7IENvbG9yOjpibGFjayB9LnZhbHVlOiB7
CiAgICAgICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDR0NvbG9y
UmVmPj4gYmxhY2tDR0NvbG9yOwpAQCAtMTkwLDcgKzE5MCw3IEBAIENHQ29sb3JSZWYgY2FjaGVk
Q0dDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiAgICAgICAgICAgICBzdGQ6OmNhbGxfb25jZShv
bmNlRmxhZywgW10gewogICAgICAgICAgICAgICAgIGJsYWNrQ0dDb2xvci5jb25zdHJ1Y3QoY3Jl
YXRlQ0dDb2xvcihDb2xvcjo6YmxhY2spKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAg
cmV0dXJuIGJsYWNrQ0dDb2xvci5nZXQoKS5nZXQoKTsKKyAgICAgICAgICAgIHJldHVybiBibGFj
a0NHQ29sb3IuZ2V0KCk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBQYWNrZWRDb2xvcjo6UkdC
QSB7IENvbG9yOjp3aGl0ZSB9LnZhbHVlOiB7CiAgICAgICAgICAgICBzdGF0aWMgTGF6eU5ldmVy
RGVzdHJveWVkPFJldGFpblB0cjxDR0NvbG9yUmVmPj4gd2hpdGVDR0NvbG9yOwpAQCAtMTk4LDcg
KzE5OCw3IEBAIENHQ29sb3JSZWYgY2FjaGVkQ0dDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiAg
ICAgICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewogICAgICAgICAgICAgICAg
IHdoaXRlQ0dDb2xvci5jb25zdHJ1Y3QoY3JlYXRlQ0dDb2xvcihDb2xvcjo6d2hpdGUpKTsKICAg
ICAgICAgICAgIH0pOwotICAgICAgICAgICAgcmV0dXJuIHdoaXRlQ0dDb2xvci5nZXQoKS5nZXQo
KTsKKyAgICAgICAgICAgIHJldHVybiB3aGl0ZUNHQ29sb3IuZ2V0KCk7CiAgICAgICAgIH0KICAg
ICAgICAgfQogICAgIH0KQEAgLTIwNyw3ICsyMDcsNyBAQCBDR0NvbG9yUmVmIGNhY2hlZENHQ29s
b3IoY29uc3QgQ29sb3ImIGNvbG9yKQogICAgIExvY2tlciBsb2NrZXIgeyBjYWNoZWRDb2xvckxv
Y2sgfTsKIAogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUaW55TFJVQ2FjaGU8Q29sb3IsIFJl
dGFpblB0cjxDR0NvbG9yUmVmPiwgMzI+PiBjYWNoZTsKLSAgICByZXR1cm4gY2FjaGUuZ2V0KCku
Z2V0KGNvbG9yKS5nZXQoKTsKKyAgICByZXR1cm4gY2FjaGUuZ2V0KCkuZ2V0KGNvbG9yKTsKIH0K
IAogQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBwbGF0Zm9ybUNvbnZlcnRDb2xvckNvbXBvbmVu
dHMoQ29sb3JTcGFjZSBpbnB1dENvbG9yU3BhY2UsIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4g
aW5wdXRDb2xvckNvbXBvbmVudHMsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgb3V0cHV0
Q29sb3JTcGFjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYWRpZW50Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhZGllbnRDRy5jcHAKaW5kZXggNTcxZDYxZTNjY2JjNDIyNmI0NGY1N2E2Y2FhN2RkNjU2NTQ0
NjM5NC4uOTk4YjU0NTNiZTI3ZWE1ZDU4Y2JjOWM3MGJhOThjMjdkYWQwMzNhMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDRy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDRy5jcHAKQEAg
LTgyLDcgKzgyLDcgQEAgdm9pZCBHcmFkaWVudDo6Y3JlYXRlQ0dHcmFkaWVudCgpCiAKICAgICBh
dXRvIGNvbG9yc0FycmF5ID0gYWRvcHRDRihDRkFycmF5Q3JlYXRlTXV0YWJsZSgwLCBtX3N0b3Bz
LnNpemUoKSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOwogICAgIGZvciAoY29uc3QgYXV0byYg
c3RvcCA6IG1fc3RvcHMpIHsKLSAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGNvbG9yc0FycmF5
LmdldCgpLCBjYWNoZWRDR0NvbG9yKHN0b3AuY29sb3IpKTsKKyAgICAgICAgQ0ZBcnJheUFwcGVu
ZFZhbHVlKGNvbG9yc0FycmF5LmdldCgpLCBjYWNoZWRDR0NvbG9yKHN0b3AuY29sb3IpLmdldCgp
KTsKICAgICAgICAgbG9jYXRpb25zLnVuY2hlY2tlZEFwcGVuZChzdG9wLm9mZnNldCk7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggYjVmNGUyYTFmYzQ1YzBlMWU3MDgxY2I1YjM5YTBi
ODQyMzlkNjg2OS4uZGVlYzY3YjQ3ZWQ2ODQwNjJmNzliZTlkNjMzMWQwYzc4NjY1OThlOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dENHLmNwcApAQCAtNTIsNyArNTIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHN0YXRpYyB2b2lkIHNldENHRmlsbENvbG9yKENHQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBD
b2xvciYgY29sb3IpCiB7Ci0gICAgQ0dDb250ZXh0U2V0RmlsbENvbG9yV2l0aENvbG9yKGNvbnRl
eHQsIGNhY2hlZENHQ29sb3IoY29sb3IpKTsKKyAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3JXaXRo
Q29sb3IoY29udGV4dCwgY2FjaGVkQ0dDb2xvcihjb2xvcikuZ2V0KCkpOwogfQogCiBpbmxpbmUg
Q0dBZmZpbmVUcmFuc2Zvcm0gZ2V0VXNlclRvQmFzZUNUTShDR0NvbnRleHRSZWYgY29udGV4dCkK
QEAgLTEwNzIsNyArMTA3Miw3IEBAIHN0YXRpYyB2b2lkIHNldENHU2hhZG93KGNvbnN0IEdyYXBo
aWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFNpemUmCiAgICAgaWYgKCFj
b2xvci5pc1ZhbGlkKCkpCiAgICAgICAgIENHQ29udGV4dFNldFNoYWRvdyhjb250ZXh0LCBDR1Np
emVNYWtlKHhPZmZzZXQsIHlPZmZzZXQpLCBibHVyUmFkaXVzKTsKICAgICBlbHNlCi0gICAgICAg
IENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihjb250ZXh0LCBDR1NpemVNYWtlKHhPZmZzZXQs
IHlPZmZzZXQpLCBibHVyUmFkaXVzLCBjYWNoZWRDR0NvbG9yKGNvbG9yKSk7CisgICAgICAgIENH
Q29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihjb250ZXh0LCBDR1NpemVNYWtlKHhPZmZzZXQsIHlP
ZmZzZXQpLCBibHVyUmFkaXVzLCBjYWNoZWRDR0NvbG9yKGNvbG9yKS5nZXQoKSk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0Q0c6OmRpZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxh
Z3MpCkBAIC0xMDgzLDcgKzEwODMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpkaWRVcGRh
dGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaQogICAgICAg
ICBDR0NvbnRleHRTZXRMaW5lV2lkdGgoY29udGV4dCwgc3RkOjptYXgoc3RhdGUuc3Ryb2tlVGhp
Y2tuZXNzLCAwLmYpKTsKIAogICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRT
dGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UpKQotICAgICAgICBDR0NvbnRleHRTZXRTdHJva2VDb2xv
cldpdGhDb2xvcihjb250ZXh0LCBjYWNoZWRDR0NvbG9yKHN0YXRlLnN0cm9rZUNvbG9yKSk7Cisg
ICAgICAgIENHQ29udGV4dFNldFN0cm9rZUNvbG9yV2l0aENvbG9yKGNvbnRleHQsIGNhY2hlZENH
Q29sb3Ioc3RhdGUuc3Ryb2tlQ29sb3IpLmdldCgpKTsKIAogICAgIGlmIChmbGFncy5jb250YWlu
cyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbENvbG9yQ2hhbmdlKSkKICAgICAgICAgc2V0Q0dG
aWxsQ29sb3IoY29udGV4dCwgc3RhdGUuZmlsbENvbG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0NvbG9yQ29jb2EuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0NvbG9yQ29jb2EuaAppbmRleCBmMTMxMTNkYWM0
MGQ1YzEwZDU4OTZkYmE2OTIzZDI2YTRkYWEzMGFiLi4wYWQ0MjMxNjNhNzJlYWIyMjQ2MzAxYTJl
YzVhZDU5ZjM5MmVjNzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Db2xvckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvQ29sb3JDb2NvYS5oCkBAIC0zMywxMSArMzMsMTEgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgQ29sb3I7CiAKICNpZiBVU0UoQVBQS0lUKQotV0VCQ09SRV9FWFBPUlQg
TlNDb2xvciAqcGxhdGZvcm1Db2xvcihjb25zdCBDb2xvciYpOworV0VCQ09SRV9FWFBPUlQgUmV0
YWluUHRyPE5TQ29sb3I+IHBsYXRmb3JtQ29sb3IoY29uc3QgQ29sb3ImKTsKICNlbmRpZgogCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLVdFQkNPUkVfRVhQT1JUIFVJQ29sb3IgKnBsYXRmb3Jt
Q29sb3IoY29uc3QgQ29sb3ImKTsKK1dFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxVSUNvbG9yPiBw
bGF0Zm9ybUNvbG9yKGNvbnN0IENvbG9yJik7CiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
Q29sb3JDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0Nv
bG9yQ29jb2EubW0KaW5kZXggOTU3NzcwMTA2MGQ0ODIwMDEzNDQyMWZhMGY4NmEwMGQzY2I2OGU1
MS4uNTYxZTY4NTRhZmY4MDU2ZDA2ZGQ3N2JkN2RmODU3ZTQyOGYxNjFlYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQ29sb3JDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Db2xvckNvY29hLm1tCkBA
IC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIFVTRShBUFBLSVQpCiAK
LU5TQ29sb3IgKnBsYXRmb3JtQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQorUmV0YWluUHRyPE5T
Q29sb3I+IHBsYXRmb3JtQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogewogICAgIHJldHVybiBu
c0NvbG9yKGNvbG9yKTsKIH0KQEAgLTQ2LDkgKzQ2LDkgQEAgTlNDb2xvciAqcGxhdGZvcm1Db2xv
cihjb25zdCBDb2xvciYgY29sb3IpCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCi1VSUNv
bG9yICpwbGF0Zm9ybUNvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK1JldGFpblB0cjxVSUNvbG9y
PiBwbGF0Zm9ybUNvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKIHsKLSAgICByZXR1cm4gW1BBTDo6
Z2V0VUlDb2xvckNsYXNzKCkgX2Rpc2FtYmlndWF0ZWRfZHVlX3RvX0NJSW1hZ2VfY29sb3JXaXRo
Q0dDb2xvcjpjYWNoZWRDR0NvbG9yKGNvbG9yKV07CisgICAgcmV0dXJuIFtQQUw6OmdldFVJQ29s
b3JDbGFzcygpIF9kaXNhbWJpZ3VhdGVkX2R1ZV90b19DSUltYWdlX2NvbG9yV2l0aENHQ29sb3I6
Y2FjaGVkQ0dDb2xvcihjb2xvcikuZ2V0KCldOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVU
ZXh0LmNwcAppbmRleCA3MmZiMTdhZTEyZjYwZGNjOTcyZmY4MzI1NGE2YzU5MDM1MTE0OTAwLi5m
YTZjYmY2YmYxYWQxZDExZWYwN2VjYjQ4MTE1ZjQzN2M3YjYxYzYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29y
ZVRleHQuY3BwCkBAIC00ODMsNyArNDgzLDcgQEAgc3RhdGljIHZvaWQgYWRkQXR0cmlidXRlc0Zv
ckN1c3RvbUZvbnRQYWxldHRlcyhDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGF0dHJpYnV0ZXMKICAg
ICAgICAgICAgIGludDY0X3QgcmF3SW5kZXggPSBwYWlyLmZpcnN0OyAvLyBUaGVyZSBpcyBubyBr
Q0ZOdW1iZXJVSW50VHlwZS4KICAgICAgICAgICAgIGF1dG8gbnVtYmVyID0gYWRvcHRDRihDRk51
bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJTSW50NjRUeXBlLCAmcmF3
SW5kZXgpKTsKICAgICAgICAgICAgIGF1dG8gY29sb3JPYmplY3QgPSBjYWNoZWRDR0NvbG9yKGNv
bG9yKTsKLSAgICAgICAgICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKG92ZXJyaWRlRGljdGlvbmFy
eS5nZXQoKSwgbnVtYmVyLmdldCgpLCBjb2xvck9iamVjdCk7CisgICAgICAgICAgICBDRkRpY3Rp
b25hcnlBZGRWYWx1ZShvdmVycmlkZURpY3Rpb25hcnkuZ2V0KCksIG51bWJlci5nZXQoKSwgY29s
b3JPYmplY3QuZ2V0KCkpOwogICAgICAgICB9CiAgICAgICAgIGlmIChDRkRpY3Rpb25hcnlHZXRD
b3VudChvdmVycmlkZURpY3Rpb25hcnkuZ2V0KCkpKQogICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5
QWRkVmFsdWUoYXR0cmlidXRlcywga0NURm9udFBhbGV0dGVDb2xvcnNBdHRyaWJ1dGUsIG92ZXJy
aWRlRGljdGlvbmFyeS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dENvY29hLm1tCmluZGV4IDM4
OGFmY2Q2ZjQ2YWZjNDUyMjFmODA3MWQzNTA5NjdmMGU1MzU1MGQuLmE1ODA0NGYyMDNmZWU4MmFh
NWFmMmZlNWEzZGYyOWMzNDViY2ViNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dENvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dENvY29hLm1tCkBA
IC04NCw3ICs4NCw3IEBAIHN0YXRpYyBib29sIGRyYXdGb2N1c1JpbmdBdFRpbWUoQ0dDb250ZXh0
UmVmIGNvbnRleHQsIE5TVGltZUludGVydmFsIHRpbWVPZmZzZXQsCiAgICAgLy8gLTEuIEFjY29y
ZGluZyB0byBDb3JlR3JhcGhpY3MsIHRoZSByZWFzb25pbmcgZm9yIHRoaXMgYmVoYXZpb3IgaGFz
IGJlZW4KICAgICAvLyBsb3N0IGluIHRpbWUuCiAgICAgZm9jdXNSaW5nU3R5bGUuYWNjdW11bGF0
ZSA9IC0xOwotICAgIGF1dG8gc3R5bGUgPSBhZG9wdENGKENHU3R5bGVDcmVhdGVGb2N1c1JpbmdX
aXRoQ29sb3IoJmZvY3VzUmluZ1N0eWxlLCBjYWNoZWRDR0NvbG9yKGNvbG9yKSkpOworICAgIGF1
dG8gc3R5bGUgPSBhZG9wdENGKENHU3R5bGVDcmVhdGVGb2N1c1JpbmdXaXRoQ29sb3IoJmZvY3Vz
UmluZ1N0eWxlLCBjYWNoZWRDR0NvbG9yKGNvbG9yKS5nZXQoKSkpOwogCiAgICAgQ0dDb250ZXh0
U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogCkBAIC0xNTksNyArMTU5LDcgQEAgc3Rh
dGljIGlubGluZSB2b2lkIHNldFBhdHRlcm5QaGFzZUluVXNlclNwYWNlKENHQ29udGV4dFJlZiBj
b250ZXh0LCBDR1BvaW50IHBoYXMKICAgICBDR0NvbnRleHRTZXRQYXR0ZXJuUGhhc2UoY29udGV4
dCwgQ0dTaXplTWFrZShwaGFzZS54LCBwaGFzZS55KSk7CiB9CiAKLXN0YXRpYyBDR0NvbG9yUmVm
IGNvbG9yRm9yTWFya2VyTGluZVN0eWxlKERvY3VtZW50TWFya2VyTGluZVN0eWxlOjpNb2RlIHN0
eWxlLCBib29sIHVzZURhcmtNb2RlKQorc3RhdGljIFJldGFpblB0cjxDR0NvbG9yUmVmPiBjb2xv
ckZvck1hcmtlckxpbmVTdHlsZShEb2N1bWVudE1hcmtlckxpbmVTdHlsZTo6TW9kZSBzdHlsZSwg
Ym9vbCB1c2VEYXJrTW9kZSkKIHsKICAgICBzd2l0Y2ggKHN0eWxlKSB7CiAgICAgLy8gUmVkCkBA
IC0xOTgsNyArMTk4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6ZHJhd0RvdHNGb3JEb2N1
bWVudE1hcmtlcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIERvY3VtZW4KIAogICAgIENHQ29udGV4
dFJlZiBwbGF0Zm9ybUNvbnRleHQgPSB0aGlzLT5wbGF0Zm9ybUNvbnRleHQoKTsKICAgICBDR0Nv
bnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIgeyBwbGF0Zm9ybUNvbnRleHQgfTsKLSAgICBDR0Nv
bnRleHRTZXRGaWxsQ29sb3JXaXRoQ29sb3IocGxhdGZvcm1Db250ZXh0LCBjaXJjbGVDb2xvcik7
CisgICAgQ0dDb250ZXh0U2V0RmlsbENvbG9yV2l0aENvbG9yKHBsYXRmb3JtQ29udGV4dCwgY2ly
Y2xlQ29sb3IuZ2V0KCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZldo
b2xlRG90czsgKytpKSB7CiAgICAgICAgIGF1dG8gbG9jYXRpb24gPSByZWN0LmxvY2F0aW9uKCk7
CiAgICAgICAgIGxvY2F0aW9uLm1vdmUob2Zmc2V0ICsgaSAqIChkb3REaWFtZXRlciArIGRvdEdh
cCksIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0NvbG9yTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JN
YWMuaAppbmRleCBjZjk4YTI2Y2MwZjViNWQ0YTNiODY5ZjgzZmIyN2JiNWVhZjMyODBjLi44ZTFj
NDkwNTVjODg1MzQ3MzBhNjA5NTc4MGEwNTVlZDRhODE5ZGNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMuaApAQCAtMzgsNyArMzgsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdFQkNPUkVfRVhQT1JUIENvbG9yIGNvbG9yRnJvbU5TQ29s
b3IoTlNDb2xvciAqKTsKIENvbG9yIHNlbWFudGljQ29sb3JGcm9tTlNDb2xvcihOU0NvbG9yICop
OwotV0VCQ09SRV9FWFBPUlQgTlNDb2xvciAqbnNDb2xvcihjb25zdCBDb2xvciYpOworV0VCQ09S
RV9FWFBPUlQgUmV0YWluUHRyPE5TQ29sb3I+IG5zQ29sb3IoY29uc3QgQ29sb3ImKTsKIAogV0VC
Q09SRV9FWFBPUlQgYm9vbCB1c2VzVGVzdE1vZGVGb2N1c1JpbmdDb2xvcigpOwogV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRVc2VzVGVzdE1vZGVGb2N1c1JpbmdDb2xvcihib29sKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbQppbmRleCA4MGI4
NGVhOGJkMTBmNDkxOWY4Nzk3Y2QyYzM2ZjM1ZmRiOTM1MWE3Li44NzY4ODg0NTRhMjJjNWZiMmQ1
OGFmM2JlYzg3ODY5ZmY2NTU2NTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvQ29sb3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXVEYg
ewogCiB0ZW1wbGF0ZTw+IFJldGFpblB0cjxOU0NvbG9yPiBUaW55TFJVQ2FjaGVQb2xpY3k8V2Vi
Q29yZTo6Q29sb3IsIFJldGFpblB0cjxOU0NvbG9yPj46OmNyZWF0ZVZhbHVlRm9yS2V5KGNvbnN0
IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikKIHsKLSAgICByZXR1cm4gW05TQ29sb3IgY29sb3JXaXRo
Q0dDb2xvcjpjYWNoZWRDR0NvbG9yKGNvbG9yKV07CisgICAgcmV0dXJuIFtOU0NvbG9yIGNvbG9y
V2l0aENHQ29sb3I6Y2FjaGVkQ0dDb2xvcihjb2xvcikuZ2V0KCldOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXVEYKQEAgLTExMyw3ICsxMTMsNyBAQCBDb2xvciBzZW1hbnRpY0NvbG9yRnJvbU5TQ29s
b3IoTlNDb2xvciAqY29sb3IpCiAgICAgcmV0dXJuIENvbG9yKG1ha2VTaW1wbGVDb2xvckZyb21O
U0NvbG9yKGNvbG9yKSwgQ29sb3I6OkZsYWdzOjpTZW1hbnRpYyk7CiB9CiAKLU5TQ29sb3IgKm5z
Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQorUmV0YWluUHRyPE5TQ29sb3I+IG5zQ29sb3IoY29u
c3QgQ29sb3ImIGNvbG9yKQogewogICAgIGlmIChhdXRvIHNyZ2IgPSBjb2xvci50cnlHZXRBc1NS
R0JBQnl0ZXMoKSkgewogICAgICAgICBzd2l0Y2ggKFBhY2tlZENvbG9yOjpSR0JBIHsgKnNyZ2Ig
fS52YWx1ZSkgewpAQCAtMTIzLDcgKzEyMyw3IEBAIE5TQ29sb3IgKm5zQ29sb3IoY29uc3QgQ29s
b3ImIGNvbG9yKQogICAgICAgICAgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKICAg
ICAgICAgICAgICAgICBjbGVhckNvbG9yLmNvbnN0cnVjdChbTlNDb2xvciBjb2xvcldpdGhTUkdC
UmVkOjAgZ3JlZW46MCBibHVlOjAgYWxwaGE6MF0pOwogICAgICAgICAgICAgfSk7Ci0gICAgICAg
ICAgICByZXR1cm4gY2xlYXJDb2xvci5nZXQoKS5nZXQoKTsKKyAgICAgICAgICAgIHJldHVybiBj
bGVhckNvbG9yLmdldCgpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgUGFja2VkQ29sb3I6OlJH
QkEgeyBDb2xvcjo6YmxhY2sgfS52YWx1ZTogewogICAgICAgICAgICAgc3RhdGljIExhenlOZXZl
ckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNDb2xvcj4+IGJsYWNrQ29sb3I7CkBAIC0xMzEsNyArMTMx
LDcgQEAgTlNDb2xvciAqbnNDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiAgICAgICAgICAgICBz
dGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewogICAgICAgICAgICAgICAgIGJsYWNrQ29sb3Iu
Y29uc3RydWN0KFtOU0NvbG9yIGNvbG9yV2l0aFNSR0JSZWQ6MCBncmVlbjowIGJsdWU6MCBhbHBo
YToxXSk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIHJldHVybiBibGFja0NvbG9yLmdl
dCgpLmdldCgpOworICAgICAgICAgICAgcmV0dXJuIGJsYWNrQ29sb3IuZ2V0KCk7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBQYWNrZWRDb2xvcjo6UkdCQSB7IENvbG9yOjp3aGl0ZSB9LnZhbHVl
OiB7CiAgICAgICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0Nv
bG9yPj4gd2hpdGVDb2xvcjsKQEAgLTEzOSw3ICsxMzksNyBAQCBOU0NvbG9yICpuc0NvbG9yKGNv
bnN0IENvbG9yJiBjb2xvcikKICAgICAgICAgICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBb
XSB7CiAgICAgICAgICAgICAgICAgd2hpdGVDb2xvci5jb25zdHJ1Y3QoW05TQ29sb3IgY29sb3JX
aXRoU1JHQlJlZDoxIGdyZWVuOjEgYmx1ZToxIGFscGhhOjFdKTsKICAgICAgICAgICAgIH0pOwot
ICAgICAgICAgICAgcmV0dXJuIHdoaXRlQ29sb3IuZ2V0KCkuZ2V0KCk7CisgICAgICAgICAgICBy
ZXR1cm4gd2hpdGVDb2xvci5nZXQoKTsKICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAt
MTQ4LDcgKzE0OCw3IEBAIE5TQ29sb3IgKm5zQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogICAg
IExvY2tlciBsb2NrZXIgeyBjYWNoZWRDb2xvckxvY2sgfTsKIAogICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxUaW55TFJVQ2FjaGU8Q29sb3IsIFJldGFpblB0cjxOU0NvbG9yPiwgMzI+PiBjYWNo
ZTsKLSAgICByZXR1cm4gY2FjaGUuZ2V0KCkuZ2V0KGNvbG9yKS5nZXQoKTsKKyAgICByZXR1cm4g
Y2FjaGUuZ2V0KCkuZ2V0KGNvbG9yKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0KaW5kZXggYzU2
YTFhN2VhMGU1OGMxYmJlMTU2MWFjNzU1MWIwNjkwMzZhNDMyZi4uYzM5YzMxMjRlODU0MmFmOTUx
OTcxNzg0YjgwZjIwNGM4MTk1ZmNlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvTGVnYWN5VGlsZUNhY2hlLm1tCkBAIC01NjgsNyArNTY4LDcgQEAgdm9pZCBMZWdhY3lUaWxl
Q2FjaGU6OmRyYXdMYXllcihMZWdhY3lUaWxlTGF5ZXIqIGxheWVyLCBDR0NvbnRleHRSZWYgY29u
dGV4dCwgRHIKICAgICAgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsKIAogICAgICAg
ICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4dCwgZnJhbWUub3JpZ2luLngsIGZyYW1lLm9y
aWdpbi55KTsKLSAgICAgICAgQ0dDb250ZXh0U2V0RmlsbENvbG9yV2l0aENvbG9yKGNvbnRleHQs
IGNhY2hlZENHQ29sb3IoY29sb3JGb3JHcmlkVGlsZUJvcmRlcihbbGF5ZXIgdGlsZUdyaWRdKSkp
OworICAgICAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3JXaXRoQ29sb3IoY29udGV4dCwgY2FjaGVk
Q0dDb2xvcihjb2xvckZvckdyaWRUaWxlQm9yZGVyKFtsYXllciB0aWxlR3JpZF0pKS5nZXQoKSk7
CiAgICAgICAgIAogICAgICAgICBDR1JlY3QgbGFiZWxCb3VuZHMgPSBbbGF5ZXIgYm91bmRzXTsK
ICAgICAgICAgbGFiZWxCb3VuZHMuc2l6ZS53aWR0aCA9IDEwICsgMTIgKiBzdHJsZW4odGV4dCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUdyaWRU
aWxlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVHcmlkVGlsZS5t
bQppbmRleCA3OGM0OTgwM2JlNjlhZWFiOWY5N2FlNDFiZmY2YjYxYmQ3MmE2OWZmLi41OTc5Zjdk
ZTcxMmZjM2JiMmY1NDUyMTM1MGE1NGJjZGMyNTQ3ZDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUdyaWRUaWxlLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlR3JpZFRpbGUubW0KQEAgLTEyNCw3ICsxMjQsNyBA
QCB2b2lkIExlZ2FjeVRpbGVHcmlkVGlsZTo6c2hvd0JvcmRlcihib29sIGZsYWcpCiB7CiAgICAg
TGVnYWN5VGlsZUxheWVyKiBsYXllciA9IG1fdGlsZUxheWVyLmdldCgpOwogICAgIGlmIChmbGFn
KSB7Ci0gICAgICAgIFtsYXllciBzZXRCb3JkZXJDb2xvcjpjYWNoZWRDR0NvbG9yKG1fdGlsZUdy
aWQtPnRpbGVDYWNoZSgpLmNvbG9yRm9yR3JpZFRpbGVCb3JkZXIobV90aWxlR3JpZCkpXTsKKyAg
ICAgICAgW2xheWVyIHNldEJvcmRlckNvbG9yOmNhY2hlZENHQ29sb3IobV90aWxlR3JpZC0+dGls
ZUNhY2hlKCkuY29sb3JGb3JHcmlkVGlsZUJvcmRlcihtX3RpbGVHcmlkKSkuZ2V0KCldOwogICAg
ICAgICBbbGF5ZXIgc2V0Qm9yZGVyV2lkdGg6MC41Zl07CiAgICAgfSBlbHNlIHsKICAgICAgICAg
W2xheWVyIHNldEJvcmRlckNvbG9yOm5pbF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQppbmRleCBlMGQxYWUxZjgyYzk4OWM5
OWQxZjg2YTYyY2MxZjNiYTdmYjcxNmU0Li4wNDE1ZjA1YWFmZjRlYWU0OWU1YzkwYTVmNjc1ZGNm
YmIyMjhhNTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZv
cm1QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0
Zm9ybVBhc3RlYm9hcmRJT1MubW0KQEAgLTQyMSw3ICs0MjEsNyBAQCBzdGF0aWMgdm9pZCByZWdp
c3Rlckl0ZW1Ub1Bhc3RlYm9hcmQoV2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xpc3Qg
KnJlcHJlcwogaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldENvbG9yKGNvbnN0IENvbG9y
JiBjb2xvcikKIHsKICAgICBhdXRvIHJlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgPSBhZG9wdE5T
KFtbV2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xpc3QgYWxsb2NdIGluaXRdKTsKLSAg
ICBVSUNvbG9yICp1aUNvbG9yID0gW1BBTDo6Z2V0VUlDb2xvckNsYXNzKCkgY29sb3JXaXRoQ0dD
b2xvcjpjYWNoZWRDR0NvbG9yKGNvbG9yKV07CisgICAgVUlDb2xvciAqdWlDb2xvciA9IFtQQUw6
OmdldFVJQ29sb3JDbGFzcygpIGNvbG9yV2l0aENHQ29sb3I6Y2FjaGVkQ0dDb2xvcihjb2xvciku
Z2V0KCldOwogICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6W05TS2V5ZWRB
cmNoaXZlciBhcmNoaXZlZERhdGFXaXRoUm9vdE9iamVjdDp1aUNvbG9yIHJlcXVpcmluZ1NlY3Vy
ZUNvZGluZzpOTyBlcnJvcjpuaWxdIGZvclR5cGU6VUlDb2xvclBib2FyZFR5cGVdOwogICAgIHJl
Z2lzdGVySXRlbVRvUGFzdGVib2FyZChyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyLmdldCgpLCBt
X3Bhc3RlYm9hcmQuZ2V0KCkpOwogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
QVZLaXQubW0KaW5kZXggM2Q4YTcwMTBiN2VhYzAxY2E3MjMwOGNmMzRmZWJhZmE1ZDVhMjRmYi4u
MTE3Mjg5NGZlZDI1YjhmNGY1YzMzMzBhZjMyZTI0Mjg4YTdjNTg2MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktp
dC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlckFWS2l0Lm1tCkBAIC0yNjIsNyArMjYyLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQ29udGV4dDo6cmVxdWVzdFZpZGVvQ29udGVudExheWVyKCkKICNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwogICAgIFdlYlRocmVh
ZFJ1bihbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHRoaXMsIHZpZGVvRnVsbHNjcmVl
bkxheWVyID0gcmV0YWluUHRyKFttX3ZpZGVvRnVsbHNjcmVlblZpZXcgbGF5ZXJdKV0gKCkgbXV0
YWJsZSB7Ci0gICAgICAgIFt2aWRlb0Z1bGxzY3JlZW5MYXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6
Y2FjaGVkQ0dDb2xvcihXZWJDb3JlOjpDb2xvcjo6dHJhbnNwYXJlbnRCbGFjayldOworICAgICAg
ICBbdmlkZW9GdWxsc2NyZWVuTGF5ZXIgc2V0QmFja2dyb3VuZENvbG9yOmNhY2hlZENHQ29sb3Io
V2ViQ29yZTo6Q29sb3I6OnRyYW5zcGFyZW50QmxhY2spLmdldCgpXTsKICAgICAgICAgbV9mdWxs
c2NyZWVuTW9kZWwtPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKHZpZGVvRnVsbHNjcmVlbkxheWVy
LmdldCgpLCBbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRoaXNdICgp
IG11dGFibGUgewogICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0
ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhpc10gewogICAgICAgICAgICAgICAg
IGlmICghbV9pbnRlcmZhY2UpCkBAIC0yODIsNyArMjgyLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQ29udGV4dDo6cmV0dXJuVmlkZW9Db250ZW50TGF5ZXIoKQogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7CiAgICAgV2ViVGhyZWFk
UnVuKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgdGhpcywgdmlkZW9GdWxsc2NyZWVu
TGF5ZXIgPSByZXRhaW5QdHIoW21fdmlkZW9GdWxsc2NyZWVuVmlldyBsYXllcl0pXSAoKSBtdXRh
YmxlIHsKLSAgICAgICAgW3ZpZGVvRnVsbHNjcmVlbkxheWVyIHNldEJhY2tncm91bmRDb2xvcjpj
YWNoZWRDR0NvbG9yKFdlYkNvcmU6OkNvbG9yOjp0cmFuc3BhcmVudEJsYWNrKV07CisgICAgICAg
IFt2aWRlb0Z1bGxzY3JlZW5MYXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6Y2FjaGVkQ0dDb2xvcihX
ZWJDb3JlOjpDb2xvcjo6dHJhbnNwYXJlbnRCbGFjaykuZ2V0KCldOwogICAgICAgICBtX2Z1bGxz
Y3JlZW5Nb2RlbC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIobmlsLCBbcHJvdGVjdGVkVGhpcyA9
IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRoaXNdICgpIG11dGFibGUgewogICAgICAgICAgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0
ZWRUaGlzKSwgdGhpc10gewogICAgICAgICAgICAgICAgIGlmICghbV9pbnRlcmZhY2UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxEZWZhdWx0U3lzdGVtQXBw
ZWFyYW5jZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbERlZmF1bHRTeXN0
ZW1BcHBlYXJhbmNlLm1tCmluZGV4IDA4ODRhZTJiNTk4NGFhY2Q3ZTA2YTg0OTlhYWVmZGM2N2Uy
MGVlMjguLjMxZjQyMWY4ODljY2MyZmExNjgxYjYwYzA3NzRiNmQ0Y2E0MzI3ZDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJh
bmNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbERlZmF1bHRTeXN0
ZW1BcHBlYXJhbmNlLm1tCkBAIC00Niw3ICs0Niw3IEBAIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVh
cmFuY2U6OkxvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UoYm9vbCB1c2VEYXJrQXBwZWFyYW5j
CiAgICAgTlNBcHBlYXJhbmNlICphcHBlYXJhbmNlID0gW05TQXBwZWFyYW5jZSBhcHBlYXJhbmNl
TmFtZWQ6bV91c2luZ0RhcmtBcHBlYXJhbmNlID8gTlNBcHBlYXJhbmNlTmFtZURhcmtBcXVhIDog
TlNBcHBlYXJhbmNlTmFtZUFxdWFdOwogCiAgICAgaWYgKHRpbnRDb2xvci5pc1ZhbGlkKCkpCi0g
ICAgICAgIGFwcGVhcmFuY2UgPSBbYXBwZWFyYW5jZSBhcHBlYXJhbmNlQnlBcHBseWluZ1RpbnRD
b2xvcjpuc0NvbG9yKHRpbnRDb2xvcildOworICAgICAgICBhcHBlYXJhbmNlID0gW2FwcGVhcmFu
Y2UgYXBwZWFyYW5jZUJ5QXBwbHlpbmdUaW50Q29sb3I6bnNDb2xvcih0aW50Q29sb3IpLmdldCgp
XTsKIAogICAgIFtOU0FwcGVhcmFuY2Ugc2V0Q3VycmVudEFwcGVhcmFuY2U6YXBwZWFyYW5jZV07
CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQppbmRleCBkNWQ0
ZDYwZmZlNWY1MzYyY2JmOWZiYmFlMGU1YzZiZjFlMzQwNTZlLi42MDAyZWI0YjY3ZjUxMGNhNjI3
NDkwZWEzODkxMjQ1YzljZTc4YTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KQEAgLTM2OSw3ICszNjksNyBAQCBpbnQ2
NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0VVJMKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHBhc3Rl
Ym9hcmRVUkwpCiAKIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRDb2xvcihjb25zdCBD
b2xvciYgY29sb3IpCiB7Ci0gICAgTlNDb2xvciAqcGFzdGVib2FyZENvbG9yID0gbnNDb2xvcihj
b2xvcik7CisgICAgYXV0byBwYXN0ZWJvYXJkQ29sb3IgPSBuc0NvbG9yKGNvbG9yKTsKICAgICBb
cGFzdGVib2FyZENvbG9yIHdyaXRlVG9QYXN0ZWJvYXJkOm1fcGFzdGVib2FyZC5nZXQoKV07CiAg
ICAgcmV0dXJuIGNoYW5nZUNvdW50KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0KaW5kZXggNGIyM2QyZGRlMzBhYTRjOTU3MmZlYzcx
ZTU4MjMzYjRhNjhiYzM0MS4uMzRmMjI2Zjk4YjllYjE4MWM1YTY0OGRhOGY2NTdkNTBhMzAwY2Y2
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1l
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1h
Yy5tbQpAQCAtNjAyLDcgKzYwMiw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVNYWM6OnNldFVwT3Zl
cmhhbmdBcmVhQmFja2dyb3VuZChDQUxheWVyICpsYXllciwgY29uc3QgQ29sb3ImCiAgICAgc3Rh
dGljIENHQ29sb3JSZWYgY2FjaGVkTGluZW5CYWNrZ3JvdW5kQ29sb3IgPSBsaW5lbkJhY2tncm91
bmRDb2xvcigpLmxlYWtSZWYoKTsKICAgICAvLyBXZSBvcGVyYXRlIG9uIHRoZSBDQUxheWVyIGRp
cmVjdGx5IGhlcmUsIHNpbmNlIEdyYXBoaWNzTGF5ZXIgZG9lc24ndCBoYXZlIHRoZSBjb25jZXB0
CiAgICAgLy8gb2YgcGF0dGVybiBpbWFnZXMsIGFuZCB3ZSBrbm93IHRoYXQgV2ViQ29yZSB3b24n
dCB0b3VjaCB0aGlzIGxheWVyLgotICAgIGxheWVyLmJhY2tncm91bmRDb2xvciA9IGN1c3RvbUJh
Y2tncm91bmRDb2xvci5pc1ZhbGlkKCkgPyBjYWNoZWRDR0NvbG9yKGN1c3RvbUJhY2tncm91bmRD
b2xvcikgOiBjYWNoZWRMaW5lbkJhY2tncm91bmRDb2xvcjsKKyAgICBsYXllci5iYWNrZ3JvdW5k
Q29sb3IgPSBjdXN0b21CYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpID8gY2FjaGVkQ0dDb2xvcihj
dXN0b21CYWNrZ3JvdW5kQ29sb3IpLmdldCgpIDogY2FjaGVkTGluZW5CYWNrZ3JvdW5kQ29sb3I7
CiB9CiAKIHZvaWQgU2Nyb2xsYmFyVGhlbWVNYWM6OnJlbW92ZU92ZXJoYW5nQXJlYUJhY2tncm91
bmQoQ0FMYXllciAqbGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0K
aW5kZXggNDBhZmFiNTQ2OTQ5NmZjNDFiNmQ1NzVhMzk3ZWNjOGFkMjkzZGI4OC4uYmNlZmNkZWM5
OWM4Zjc2M2Y5NGJjZjM2OTA5OGZhN2M0NzdhOGRmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9UaGVtZU1hYy5tbQpAQCAtMzgyLDcgKzM4Miw3IEBAIHN0YXRpYyBib29sIGRyYXdDZWxs
Rm9jdXNSaW5nV2l0aEZyYW1lQXRUaW1lKE5TQ2VsbCAqY2VsbCwgTlNSZWN0IGNlbGxGcmFtZSwg
TlNWCiAgICAgLy8gRklYTUU6IFRoaXMgY29sb3Igc2hvdWxkIGJlIHNoYXJlZCB3aXRoIFJlbmRl
clRoZW1lTWFjLiBGb3Igbm93IGp1c3QgdXNlIHRoZSBzYW1lIE5TQ29sb3IgY29sb3IuCiAgICAg
Ly8gVGhlIGNvbG9yIGlzIGV4cGVjdGVkIHRvIGJlIG9wYXF1ZSwgc2luY2UgQ29yZUdyYXBoaWNz
IHdpbGwgYXBwbHkgb3BhY2l0eSB3aGVuIGRyYXdpbmcgKGJlY2F1c2Ugb3BhY2l0eSBpcyBub3Jt
YWxseSBhbmltYXRlZCkuCiAgICAgYXV0byBjb2xvciA9IGNvbG9yRnJvbU5TQ29sb3IoW05TQ29s
b3Iga2V5Ym9hcmRGb2N1c0luZGljYXRvckNvbG9yXSkub3BhcXVlQ29sb3IoKTsKLSAgICBhdXRv
IHN0eWxlID0gYWRvcHRDRihDR1N0eWxlQ3JlYXRlRm9jdXNSaW5nV2l0aENvbG9yKCZmb2N1c1Jp
bmdTdHlsZSwgY2FjaGVkQ0dDb2xvcihjb2xvcikpKTsKKyAgICBhdXRvIHN0eWxlID0gYWRvcHRD
RihDR1N0eWxlQ3JlYXRlRm9jdXNSaW5nV2l0aENvbG9yKCZmb2N1c1JpbmdTdHlsZSwgY2FjaGVk
Q0dDb2xvcihjb2xvcikuZ2V0KCkpKTsKICAgICBDR0NvbnRleHRTZXRTdHlsZShjZ0NvbnRleHQs
IHN0eWxlLmdldCgpKTsKIAogICAgIENHQ29udGV4dEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXJXaXRo
UmVjdChjZ0NvbnRleHQsIE5TUmVjdFRvQ0dSZWN0KGNlbGxGcmFtZSksIG51bGxwdHIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCmluZGV4IGYyYjdkMDQ4M2Rk
MzZjOWRjMDQyYmU3ZjM2MTliOGIxZjFlYzUyZWEuLmViYzE2NjdlODI3M2JjODE1MDNmMDI4Mjc3
NGUzNTViZGU2ZGViZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJ
T1MubW0KQEAgLTM3Niw3ICszNzYsNyBAQCBzdGF0aWMgQ0dQb2ludCBzaG9ydGVuZWQoQ0dQb2lu
dCBzdGFydCwgQ0dQb2ludCBlbmQsIGZsb2F0IHdpZHRoKQogc3RhdGljIHZvaWQgZHJhd0pvaW5l
ZExpbmVzKENHQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBWZWN0b3I8Q0dQb2ludD4mIHBvaW50
cywgQ0dMaW5lQ2FwIGxpbmVDYXAsIGZsb2F0IGxpbmVXaWR0aCwgQ29sb3Igc3Ryb2tlQ29sb3Ip
CiB7CiAgICAgQ0dDb250ZXh0U2V0TGluZVdpZHRoKGNvbnRleHQsIGxpbmVXaWR0aCk7Ci0gICAg
Q0dDb250ZXh0U2V0U3Ryb2tlQ29sb3JXaXRoQ29sb3IoY29udGV4dCwgY2FjaGVkQ0dDb2xvcihz
dHJva2VDb2xvcikpOworICAgIENHQ29udGV4dFNldFN0cm9rZUNvbG9yV2l0aENvbG9yKGNvbnRl
eHQsIGNhY2hlZENHQ29sb3Ioc3Ryb2tlQ29sb3IpLmdldCgpKTsKICAgICBDR0NvbnRleHRTZXRT
aG91bGRBbnRpYWxpYXMoY29udGV4dCwgdHJ1ZSk7CiAgICAgQ0dDb250ZXh0QmVnaW5QYXRoKGNv
bnRleHQpOwogICAgIENHQ29udGV4dFNldExpbmVDYXAoY29udGV4dCwgbGluZUNhcCk7CkBAIC0x
NjMyLDcgKzE2MzIsNyBAQCBzdGF0aWMgUmV0YWluUHRyPENURm9udFJlZj4gYXR0YWNobWVudEFj
dGlvbkZvbnQoKQogCiBzdGF0aWMgVUlDb2xvciAqYXR0YWNobWVudEFjdGlvbkNvbG9yKGNvbnN0
IFJlbmRlckF0dGFjaG1lbnQmIGF0dGFjaG1lbnQpCiB7Ci0gICAgcmV0dXJuIFtQQUw6OmdldFVJ
Q29sb3JDbGFzcygpIGNvbG9yV2l0aENHQ29sb3I6Y2FjaGVkQ0dDb2xvcihhdHRhY2htZW50LnN0
eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpKV07CisgICAgcmV0
dXJuIFtQQUw6OmdldFVJQ29sb3JDbGFzcygpIGNvbG9yV2l0aENHQ29sb3I6Y2FjaGVkQ0dDb2xv
cihhdHRhY2htZW50LnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29s
b3IpKS5nZXQoKV07CiB9CiAKIHN0YXRpYyBSZXRhaW5QdHI8Q1RGb250UmVmPiBhdHRhY2htZW50
VGl0bGVGb250KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQpp
bmRleCA4YmViMjk1NzczOWQzMWJiNDk3N2EwZTBhOWIyODNjMzcxYjFlYzViLi42MzEwY2VlMzQ0
ZDFkNDM2YzI0YWEyMjNjN2NmNTEyOTg1MGYyY2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lTWFjLm1tCkBAIC0yMzUxLDcgKzIzNTEsNyBAQCB2b2lkIEF0dGFjaG1l
bnRMYXlvdXQ6OmxheU91dFRpdGxlKGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmIGF0dGFjaG1lbnQp
CiAKICAgICBOU0RpY3Rpb25hcnkgKnRleHRBdHRyaWJ1dGVzID0gQHsKICAgICAgICAgKF9fYnJp
ZGdlIGlkKWtDVEZvbnRBdHRyaWJ1dGVOYW1lOiAoX19icmlkZ2UgaWQpZm9udC5nZXQoKSwKLSAg
ICAgICAgKF9fYnJpZGdlIGlkKWtDVEZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWU6IChfX2Jy
aWRnZSBOU0NvbG9yICopY2FjaGVkQ0dDb2xvcih0aXRsZVRleHRDb2xvckZvckF0dGFjaG1lbnQo
YXR0YWNobWVudCwgc3R5bGUpKQorICAgICAgICAoX19icmlkZ2UgaWQpa0NURm9yZWdyb3VuZENv
bG9yQXR0cmlidXRlTmFtZTogKF9fYnJpZGdlIE5TQ29sb3IgKiljYWNoZWRDR0NvbG9yKHRpdGxl
VGV4dENvbG9yRm9yQXR0YWNobWVudChhdHRhY2htZW50LCBzdHlsZSkpLmdldCgpCiAgICAgfTsK
ICAgICBSZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiBhdHRyaWJ1dGVkVGl0bGUgPSBhZG9w
dE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzp0aXRsZSBhdHRy
aWJ1dGVzOnRleHRBdHRyaWJ1dGVzXSk7CiAgICAgUmV0YWluUHRyPENURnJhbWVzZXR0ZXJSZWY+
IHRpdGxlRnJhbWVzZXR0ZXIgPSBhZG9wdENGKENURnJhbWVzZXR0ZXJDcmVhdGVXaXRoQXR0cmli
dXRlZFN0cmluZygoQ0ZBdHRyaWJ1dGVkU3RyaW5nUmVmKWF0dHJpYnV0ZWRUaXRsZS5nZXQoKSkp
OwpAQCAtMjQxMCw3ICsyNDEwLDcgQEAgdm9pZCBBdHRhY2htZW50TGF5b3V0OjpsYXlPdXRTdWJ0
aXRsZShjb25zdCBSZW5kZXJBdHRhY2htZW50JiBhdHRhY2htZW50KQogICAgIGF1dG8gZm9udCA9
IGFkb3B0Q0YoQ1RGb250Q3JlYXRlVUlGb250Rm9yTGFuZ3VhZ2Uoa0NURm9udFVJRm9udFN5c3Rl
bSwgYXR0YWNobWVudFN1YnRpdGxlRm9udFNpemUsIGxhbmd1YWdlKSk7CiAgICAgTlNEaWN0aW9u
YXJ5ICp0ZXh0QXR0cmlidXRlcyA9IEB7CiAgICAgICAgIChfX2JyaWRnZSBpZClrQ1RGb250QXR0
cmlidXRlTmFtZTogKF9fYnJpZGdlIGlkKWZvbnQuZ2V0KCksCi0gICAgICAgIChfX2JyaWRnZSBp
ZClrQ1RGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lOiAoX19icmlkZ2UgTlNDb2xvciAqKWNh
Y2hlZENHQ29sb3Ioc3VidGl0bGVDb2xvcikKKyAgICAgICAgKF9fYnJpZGdlIGlkKWtDVEZvcmVn
cm91bmRDb2xvckF0dHJpYnV0ZU5hbWU6IChfX2JyaWRnZSBOU0NvbG9yICopY2FjaGVkQ0dDb2xv
cihzdWJ0aXRsZUNvbG9yKS5nZXQoKQogICAgIH07CiAgICAgUmV0YWluUHRyPE5TQXR0cmlidXRl
ZFN0cmluZz4gYXR0cmlidXRlZFN1YnRpdGxlVGV4dCA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRT
dHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOnN1YnRpdGxlVGV4dCBhdHRyaWJ1dGVzOnRleHRB
dHRyaWJ1dGVzXSk7CiAgICAgc3VidGl0bGVMaW5lID0gYWRvcHRDRihDVExpbmVDcmVhdGVXaXRo
QXR0cmlidXRlZFN0cmluZygoQ0ZBdHRyaWJ1dGVkU3RyaW5nUmVmKWF0dHJpYnV0ZWRTdWJ0aXRs
ZVRleHQuZ2V0KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvY29jb2Ev
V2ViVmlld1Zpc3VhbElkZW50aWZpY2F0aW9uT3ZlcmxheS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvY29jb2EvV2ViVmlld1Zpc3VhbElkZW50aWZpY2F0aW9uT3ZlcmxheS5tbQppbmRleCAx
NmMzNDg2M2RjYzNkNTFiMTVkZDdmOTM0MGVlMjdhNjBjZmI0NzkzLi45NWMyODFhNmIxOTdmNjlk
NWRjNjA2MDk3OTE5ZjlhZjRmMzE0MGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL2NvY29hL1dlYlZpZXdWaXN1YWxJZGVudGlmaWNhdGlvbk92ZXJsYXkubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJWaWV3VmlzdWFsSWRlbnRpZmljYXRpb25PdmVy
bGF5Lm1tCkBAIC05NCw3ICs5NCw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdlYlZpZXc6
KFBsYXRmb3JtVmlldyAqKXdlYlZpZXcga2luZDooTlNTdHJpbmcgKilraW5kIGRlCiAgICAgW19s
YXllciBzZXROYW1lOkAiV2ViVmlld1Zpc3VhbElkZW50aWZpY2F0aW9uT3ZlcmxheSJdOwogICAg
IFtfbGF5ZXIgc2V0RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBbX3ZpZXcgYm91bmRzXS5zaXplLndp
ZHRoLCBbX3ZpZXcgYm91bmRzXS5zaXplLmhlaWdodCldOwogICAgIGF1dG8gdmlld0NvbG9yID0g
aXNEZXByZWNhdGVkID8gV2ViQ29yZTo6Q29sb3I6OnJlZC5jb2xvcldpdGhBbHBoYUJ5dGUoNTAp
IDogV2ViQ29yZTo6Q29sb3I6OmJsdWUuY29sb3JXaXRoQWxwaGFCeXRlKDMyKTsKLSAgICBbX2xh
eWVyIHNldEJhY2tncm91bmRDb2xvcjpjYWNoZWRDR0NvbG9yKHZpZXdDb2xvcildOworICAgIFtf
bGF5ZXIgc2V0QmFja2dyb3VuZENvbG9yOmNhY2hlZENHQ29sb3Iodmlld0NvbG9yKS5nZXQoKV07
CiAgICAgW19sYXllciBzZXRaUG9zaXRpb246OTk5XTsKICAgICBbX2xheWVyIHNldERlbGVnYXRl
OnNlbGZdOwogICAgIFtfbGF5ZXIgd2ViX2Rpc2FibGVBbGxBY3Rpb25zXTsKQEAgLTE1MywxMSAr
MTUzLDExIEBAIHN0YXRpYyB2b2lkIGRyYXdQYXR0ZXJuKHZvaWQgKm92ZXJsYXlQdHIsIENHQ29u
dGV4dFJlZiBjdHgpCiAgICAgQ0dDb250ZXh0U2V0VGV4dERyYXdpbmdNb2RlKGN0eCwga0NHVGV4
dEZpbGwpOwogCiAgICAgQ0dDb250ZXh0U2V0VGV4dFBvc2l0aW9uKGN0eCwgMCwgMCk7Ci0gICAg
Q0dDb250ZXh0U2V0RmlsbENvbG9yV2l0aENvbG9yKGN0eCwgY2FjaGVkQ0dDb2xvcihXZWJDb3Jl
OjpDb2xvcjo6YmxhY2spKTsKKyAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3JXaXRoQ29sb3IoY3R4
LCBjYWNoZWRDR0NvbG9yKFdlYkNvcmU6OkNvbG9yOjpibGFjaykuZ2V0KCkpOwogICAgIENUTGlu
ZURyYXcobGluZS5nZXQoKSwgY3R4KTsKIAogICAgIENHQ29udGV4dFNldFRleHRQb3NpdGlvbihj
dHgsIDAsIHRleHRTaXplLmhlaWdodCArIDUpOwotICAgIENHQ29udGV4dFNldEZpbGxDb2xvcldp
dGhDb2xvcihjdHgsIGNhY2hlZENHQ29sb3IoV2ViQ29yZTo6Q29sb3I6OndoaXRlKSk7CisgICAg
Q0dDb250ZXh0U2V0RmlsbENvbG9yV2l0aENvbG9yKGN0eCwgY2FjaGVkQ0dDb2xvcihXZWJDb3Jl
OjpDb2xvcjo6d2hpdGUpLmdldCgpKTsKICAgICBDVExpbmVEcmF3KGxpbmUuZ2V0KCksIGN0eCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FyZ3VtZW50Q29k
ZXJzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Bcmd1bWVudENvZGVyc0Nv
Y29hLm1tCmluZGV4IDIxMjUzOTkyNjRhYjFmYzBhMzZjNWMzNjA1NDE3ZGJkMzYzM2M4ZDguLmM2
ZmZmNjkwNmZjMjE2NWY5MzE3MzM5MTU5MzBmYTQ5ZjY2MTg2NDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FyZ3VtZW50Q29kZXJzQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5tbQpAQCAtMjkxLDcgKzI5
MSw3IEBAIHN0YXRpYyBpbmxpbmUgc3RkOjpvcHRpb25hbDxSZXRhaW5QdHI8aWQ+PiBkZWNvZGVD
b2xvckludGVybmFsKERlY29kZXImIGRlY29kZXIpCiAgICAgQ29sb3IgY29sb3I7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShjb2xvcikpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0g
ICAgcmV0dXJuIHsgYWRvcHROUyhbW1VJQ29sb3IgYWxsb2NdIGluaXRXaXRoQ0dDb2xvcjpjYWNo
ZWRDR0NvbG9yKGNvbG9yKV0pIH07CisgICAgcmV0dXJuIHsgYWRvcHROUyhbW1VJQ29sb3IgYWxs
b2NdIGluaXRXaXRoQ0dDb2xvcjpjYWNoZWRDR0NvbG9yKGNvbG9yKS5nZXQoKV0pIH07CiB9CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIubW0KaW5kZXgg
YTgxZjBlNTIwMTU2NTNmZDRkMDlmMzdmZWY3ZmJmYWY2ODE0YTczMC4uM2FiMzdjMWZmMjUyZWE5
NDU4NTU1NzFmM2ZlYjFhOGE2NmRhZmRhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlUHJv
cGVydHlBcHBsaWVyLm1tCkBAIC0xMDIsNyArMTAyLDcgQEAgQGVuZAogbmFtZXNwYWNlIFdlYktp
dCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotc3RhdGljIENHQ29sb3JSZWYgY2dDb2xv
ckZyb21Db2xvcihjb25zdCBDb2xvciYgY29sb3IpCitzdGF0aWMgUmV0YWluUHRyPENHQ29sb3JS
ZWY+IGNnQ29sb3JGcm9tQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogewogICAgIGlmICghY29s
b3IuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtMTY2LDEwICsxNjYsMTAgQEAg
dm9pZCBSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXI6OmFwcGx5UHJvcGVydGllc1RvTGF5
ZXIoQ0FMYXllciAqbGF5ZXIsIFJlbW8KICAgICAgICAgbGF5ZXIuYm91bmRzID0gcHJvcGVydGll
cy5ib3VuZHM7CiAgICAgCiAgICAgaWYgKHByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBS
ZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6QmFja2dyb3VuZENvbG9yQ2hhbmdlZCkKLSAgICAg
ICAgbGF5ZXIuYmFja2dyb3VuZENvbG9yID0gY2dDb2xvckZyb21Db2xvcihwcm9wZXJ0aWVzLmJh
Y2tncm91bmRDb2xvcik7CisgICAgICAgIGxheWVyLmJhY2tncm91bmRDb2xvciA9IGNnQ29sb3JG
cm9tQ29sb3IocHJvcGVydGllcy5iYWNrZ3JvdW5kQ29sb3IpLmdldCgpOwogCiAgICAgaWYgKHBy
b3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6
Qm9yZGVyQ29sb3JDaGFuZ2VkKQotICAgICAgICBsYXllci5ib3JkZXJDb2xvciA9IGNnQ29sb3JG
cm9tQ29sb3IocHJvcGVydGllcy5ib3JkZXJDb2xvcik7CisgICAgICAgIGxheWVyLmJvcmRlckNv
bG9yID0gY2dDb2xvckZyb21Db2xvcihwcm9wZXJ0aWVzLmJvcmRlckNvbG9yKS5nZXQoKTsKIAog
ICAgIGlmIChwcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb246OkJvcmRlcldpZHRoQ2hhbmdlZCkKICAgICAgICAgbGF5ZXIuYm9yZGVyV2lkdGgg
PSBwcm9wZXJ0aWVzLmJvcmRlcldpZHRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggMTczZDczMGQ1MjU1ODdmZjQyMmVlYjkwMjg3ZDMy
OGQ1N2ZlN2Q3Zi4uYTVhYTgzZTUyNzRkNDA0ZmFhZmNjMTQxYmQ3MDQ5NjAxMWIyNThhNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0x
NzcwLDEyICsxNzcwLDEyIEBAIC0gKENvY29hQ29sb3IgKil0aGVtZUNvbG9yCiAgICAgYXV0byB0
aGVtZUNvbG9yID0gX3BhZ2UtPnRoZW1lQ29sb3IoKTsKICAgICBpZiAoIXRoZW1lQ29sb3IuaXNW
YWxpZCgpKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBXZWJDb3JlOjpwbGF0Zm9y
bUNvbG9yKHRoZW1lQ29sb3IpOworICAgIHJldHVybiBXZWJDb3JlOjpwbGF0Zm9ybUNvbG9yKHRo
ZW1lQ29sb3IpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKENvY29hQ29sb3IgKil1bmRlclBhZ2VC
YWNrZ3JvdW5kQ29sb3IKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6cGxhdGZvcm1Db2xvcihfcGFn
ZS0+dW5kZXJQYWdlQmFja2dyb3VuZENvbG9yKCkpOworICAgIHJldHVybiBXZWJDb3JlOjpwbGF0
Zm9ybUNvbG9yKF9wYWdlLT51bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IoKSkuYXV0b3JlbGVhc2Uo
KTsKIH0KIAogLSAodm9pZClzZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3I6KENvY29hQ29sb3Ig
Kil1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZQpAQCAtMzI2NSw3ICszMjY1LDcgQEAg
LSAoQ29jb2FDb2xvciAqKV9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IKICAgICBhdXRvIHBh
Z2VFeHRlbmRlZEJhY2tncm91bmRDb2xvciA9IF9wYWdlLT5wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5k
Q29sb3IoKTsKICAgICBpZiAoIXBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkp
CiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnBsYXRmb3JtQ29sb3Io
cGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6cGxhdGZv
cm1Db2xvcihwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IpLmF1dG9yZWxlYXNlKCk7CiB9CiAK
IC0gKENvY29hQ29sb3IgKilfc2FtcGxlZFBhZ2VUb3BDb2xvcgpAQCAtMzI3Myw3ICszMjczLDcg
QEAgLSAoQ29jb2FDb2xvciAqKV9zYW1wbGVkUGFnZVRvcENvbG9yCiAgICAgYXV0byBzYW1wbGVk
UGFnZVRvcENvbG9yID0gX3BhZ2UtPnNhbXBsZWRQYWdlVG9wQ29sb3IoKTsKICAgICBpZiAoIXNh
bXBsZWRQYWdlVG9wQ29sb3IuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJl
dHVybiBXZWJDb3JlOjpwbGF0Zm9ybUNvbG9yKHNhbXBsZWRQYWdlVG9wQ29sb3IpOworICAgIHJl
dHVybiBXZWJDb3JlOjpwbGF0Zm9ybUNvbG9yKHNhbXBsZWRQYWdlVG9wQ29sb3IpLmF1dG9yZWxl
YXNlKCk7CiB9CiAKIC0gKGlkIDxfV0tJbnB1dERlbGVnYXRlPilfaW5wdXREZWxlZ2F0ZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0FwcGxpY2F0aW9u
TWFuaWZlc3QubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGlj
YXRpb25NYW5pZmVzdC5tbQppbmRleCAzNWMyMjVmM2NkNjc4OWFlMjA0M2Y5NjFlOTAwNWM1MzRl
YmU0ZmQ4Li42ZmRmMDkwMjRkODY2MzU1YjcwYWNkZWZjMDM5YjIzMzQ3ZjExMTIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5p
ZmVzdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGlj
YXRpb25NYW5pZmVzdC5tbQpAQCAtMTM5LDcgKzEzOSw3IEBAIC0gKE5TVVJMICopc3RhcnRVUkwK
IAogLSAoQ29jb2FDb2xvciAqKXRoZW1lQ29sb3IKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6cGxh
dGZvcm1Db2xvcihfYXBwbGljYXRpb25NYW5pZmVzdC0+YXBwbGljYXRpb25NYW5pZmVzdCgpLnRo
ZW1lQ29sb3IpOworICAgIHJldHVybiBXZWJDb3JlOjpwbGF0Zm9ybUNvbG9yKF9hcHBsaWNhdGlv
bk1hbmlmZXN0LT5hcHBsaWNhdGlvbk1hbmlmZXN0KCkudGhlbWVDb2xvcikuYXV0b3JlbGVhc2Uo
KTsKIH0KIAogLSAoX1dLQXBwbGljYXRpb25NYW5pZmVzdERpc3BsYXlNb2RlKWRpc3BsYXlNb2Rl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lP
Uy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCmlu
ZGV4IGY5MGFiYTlhZDk5ZGIzNTNiNDQyMzEwMTg2NmZhMWU1OGRkNTRiOTkuLjc0ODY4MDQzZTA5
Y2E2MjdkZDc2MGU5YjMxNDY2OTQzNjQyN2IwODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCkBAIC01NDQsNyArNTQ0LDcgQEAgLSAodm9p
ZClfdXBkYXRlU2Nyb2xsVmlld0JhY2tncm91bmQKICAgICBpZiAoX3Njcm9sbFZpZXdCYWNrZ3Jv
dW5kQ29sb3IgIT0gbmV3U2Nyb2xsVmlld0JhY2tncm91bmRDb2xvcikgewogICAgICAgICBfc2Ny
b2xsVmlld0JhY2tncm91bmRDb2xvciA9IG5ld1Njcm9sbFZpZXdCYWNrZ3JvdW5kQ29sb3I7CiAK
LSAgICAgICAgYXV0byB1aUJhY2tncm91bmRDb2xvciA9IGFkb3B0TlMoW1tVSUNvbG9yIGFsbG9j
XSBpbml0V2l0aENHQ29sb3I6Y2FjaGVkQ0dDb2xvcihuZXdTY3JvbGxWaWV3QmFja2dyb3VuZENv
bG9yKV0pOworICAgICAgICBhdXRvIHVpQmFja2dyb3VuZENvbG9yID0gYWRvcHROUyhbW1VJQ29s
b3IgYWxsb2NdIGluaXRXaXRoQ0dDb2xvcjpjYWNoZWRDR0NvbG9yKG5ld1Njcm9sbFZpZXdCYWNr
Z3JvdW5kQ29sb3IpLmdldCgpXSk7CiAgICAgICAgIFtfc2Nyb2xsVmlldyBzZXRCYWNrZ3JvdW5k
Q29sb3I6dWlCYWNrZ3JvdW5kQ29sb3IuZ2V0KCldOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQppbmRleCA1YmJkZWQyNzU0ZjljMjM0MDQxODRmZjJh
MjFkNWU1ZWViOWJjNThiLi5hNTg4NjFmYzMxMTllY2M5NGYzYWRhMDMzOTkyMGNhYzI2YTgyZWQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQpAQCAtMTMyOCw3
ICsxMzI4LDcgQEAgLSAodm9pZClzZXRTaG91bGRDbGlwVG9WaXNpYmxlUmVjdDooQk9PTCljbGlw
c1RvVmlzaWJsZVJlY3QKIAogLSAoTlNDb2xvciAqKXVuZGVybGF5Q29sb3IKIHsKLSAgICByZXR1
cm4gX2RhdGEtPl9pbXBsLT51bmRlcmxheUNvbG9yKCk7CisgICAgcmV0dXJuIF9kYXRhLT5faW1w
bC0+dW5kZXJsYXlDb2xvcigpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKHZvaWQpc2V0VW5kZXJs
YXlDb2xvcjooTlNDb2xvciAqKXVuZGVybGF5Q29sb3IKQEAgLTE1MTYsNyArMTUxNiw3IEBAIC0g
KF9XS092ZXJsYXlTY3JvbGxiYXJTdHlsZSlfb3ZlcmxheVNjcm9sbGJhclN0eWxlCiAKIC0gKE5T
Q29sb3IgKilfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yCiB7Ci0gICAgcmV0dXJuIF9kYXRh
LT5faW1wbC0+cGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yKCk7CisgICAgcmV0dXJuIF9kYXRh
LT5faW1wbC0+cGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yKCkuYXV0b3JlbGVhc2UoKTsKIH0K
IAogLSAoQk9PTClpc1VzaW5nVUlTaWRlQ29tcG9zaXRpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tXZWJWaWV3TWFjLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL21hYy9XS1dlYlZpZXdNYWMubW0KaW5kZXggYTA3YzllZGU1YTViNGI0YWMw
M2IxZjFkNGQxMDViNTMyYTRjZTc2My4uNWIwNmJjNTdkYTQxZGMyZjEyNDQ4MmVjOTM4Y2UwNjA1
YTVlM2Y5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL21hYy9XS1dl
YlZpZXdNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL21hYy9XS1dlYlZp
ZXdNYWMubW0KQEAgLTEzNTUsNyArMTM1NSw3IEBAIC0gKHZvaWQpX3NldEJhY2tncm91bmRDb2xv
cjooTlNDb2xvciAqKWJhY2tncm91bmRDb2xvcgogCiAtIChOU0NvbG9yICopX3VuZGVybGF5Q29s
b3IKIHsKLSAgICByZXR1cm4gX2ltcGwtPnVuZGVybGF5Q29sb3IoKTsKKyAgICByZXR1cm4gX2lt
cGwtPnVuZGVybGF5Q29sb3IoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtICh2b2lkKV9zZXRVbmRl
cmxheUNvbG9yOihOU0NvbG9yICopdW5kZXJsYXlDb2xvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKaW5kZXggNTkwYjg3YzFjNWMyYzA5YWNlOGI5ZjE3MTBk
YjkzNzg0MmIxNTZjNS4uMWM1NzQ0NThlZjMwOGMxYTA1NTQxYmQ2YWRkMmJkYTUwNDAwZDI2MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCkBAIC0zMTUs
OCArMzE1LDggQEAgcHVibGljOgogICAgIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSBj
b2xvclNwYWNlKCk7CiAKICAgICB2b2lkIHNldFVuZGVybGF5Q29sb3IoTlNDb2xvciAqKTsKLSAg
ICBOU0NvbG9yICp1bmRlcmxheUNvbG9yKCkgY29uc3Q7Ci0gICAgTlNDb2xvciAqcGFnZUV4dGVu
ZGVkQmFja2dyb3VuZENvbG9yKCkgY29uc3Q7CisgICAgUmV0YWluUHRyPE5TQ29sb3I+IHVuZGVy
bGF5Q29sb3IoKSBjb25zdDsKKyAgICBSZXRhaW5QdHI8TlNDb2xvcj4gcGFnZUV4dGVuZGVkQmFj
a2dyb3VuZENvbG9yKCkgY29uc3Q7CiAgICAgCiAgICAgX1dLUmVjdEVkZ2UgcGlubmVkU3RhdGUo
KTsKICAgICBfV0tSZWN0RWRnZSBydWJiZXJCYW5kaW5nRW5hYmxlZCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCA0MDJkMmNjYjM3ZTVkMjcz
MWM3MDYwMWVjMzA4Y2Q2NjI3MzU0ZGY3Li42OWY0M2EwOTYyNzYzN2VlZjk1NjJhYjNiZjkyNjY5
MTdiMTJmMTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5tbQpAQCAtMTMxNSw3ICsxMzE1LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6dXBkYXRlVGV4dFRv
dWNoQmFyKCkKICAgICAgICAgICAgIFttX3RleHRUb3VjaEJhckl0ZW1Db250cm9sbGVyIHNldFRl
eHRJc0JvbGQ6KGJvb2wpKG1fcGFnZS0+ZWRpdG9yU3RhdGUoKS5wb3N0TGF5b3V0RGF0YSgpLnR5
cGluZ0F0dHJpYnV0ZXMgJiBBdHRyaWJ1dGVCb2xkKV07CiAgICAgICAgICAgICBbbV90ZXh0VG91
Y2hCYXJJdGVtQ29udHJvbGxlciBzZXRUZXh0SXNJdGFsaWM6KGJvb2wpKG1fcGFnZS0+ZWRpdG9y
U3RhdGUoKS5wb3N0TGF5b3V0RGF0YSgpLnR5cGluZ0F0dHJpYnV0ZXMgJiBBdHRyaWJ1dGVJdGFs
aWNzKV07CiAgICAgICAgICAgICBbbV90ZXh0VG91Y2hCYXJJdGVtQ29udHJvbGxlciBzZXRUZXh0
SXNVbmRlcmxpbmVkOihib29sKShtX3BhZ2UtPmVkaXRvclN0YXRlKCkucG9zdExheW91dERhdGEo
KS50eXBpbmdBdHRyaWJ1dGVzICYgQXR0cmlidXRlVW5kZXJsaW5lKV07Ci0gICAgICAgICAgICBb
bV90ZXh0VG91Y2hCYXJJdGVtQ29udHJvbGxlciBzZXRUZXh0Q29sb3I6bnNDb2xvcihlZGl0b3JT
dGF0ZS5wb3N0TGF5b3V0RGF0YSgpLnRleHRDb2xvcildOworICAgICAgICAgICAgW21fdGV4dFRv
dWNoQmFySXRlbUNvbnRyb2xsZXIgc2V0VGV4dENvbG9yOm5zQ29sb3IoZWRpdG9yU3RhdGUucG9z
dExheW91dERhdGEoKS50ZXh0Q29sb3IpLmdldCgpXTsKICAgICAgICAgICAgIFtbbV90ZXh0VG91
Y2hCYXJJdGVtQ29udHJvbGxlciB0ZXh0TGlzdFRvdWNoQmFyVmlld0NvbnRyb2xsZXJdIHNldEN1
cnJlbnRMaXN0VHlwZTooTGlzdFR5cGUpbV9wYWdlLT5lZGl0b3JTdGF0ZSgpLnBvc3RMYXlvdXRE
YXRhKCkuZW5jbG9zaW5nTGlzdFR5cGVdOwogICAgICAgICAgICAgW21fdGV4dFRvdWNoQmFySXRl
bUNvbnRyb2xsZXIgc2V0Q3VycmVudFRleHRBbGlnbm1lbnQ6bnNUZXh0QWxpZ25tZW50RnJvbVRl
eHRBbGlnbm1lbnQoKFRleHRBbGlnbm1lbnQpZWRpdG9yU3RhdGUucG9zdExheW91dERhdGEoKS50
ZXh0QWxpZ25tZW50KV07CiAgICAgICAgIH0KQEAgLTI2MjUsNyArMjYyNSw3IEBAIHZvaWQgV2Vi
Vmlld0ltcGw6OnNldFVuZGVybGF5Q29sb3IoTlNDb2xvciAqdW5kZXJsYXlDb2xvcikKICAgICBt
X3BhZ2UtPnNldFVuZGVybGF5Q29sb3IoV2ViQ29yZTo6Y29sb3JGcm9tTlNDb2xvcih1bmRlcmxh
eUNvbG9yKSk7CiB9CiAKLU5TQ29sb3IgKldlYlZpZXdJbXBsOjp1bmRlcmxheUNvbG9yKCkgY29u
c3QKK1JldGFpblB0cjxOU0NvbG9yPiBXZWJWaWV3SW1wbDo6dW5kZXJsYXlDb2xvcigpIGNvbnN0
CiB7CiAgICAgV2ViQ29yZTo6Q29sb3Igd2ViQ29sb3IgPSBtX3BhZ2UtPnVuZGVybGF5Q29sb3Io
KTsKICAgICBpZiAoIXdlYkNvbG9yLmlzVmFsaWQoKSkKQEAgLTI2MzQsNyArMjYzNCw3IEBAIE5T
Q29sb3IgKldlYlZpZXdJbXBsOjp1bmRlcmxheUNvbG9yKCkgY29uc3QKICAgICByZXR1cm4gV2Vi
Q29yZTo6bnNDb2xvcih3ZWJDb2xvcik7CiB9CiAKLU5TQ29sb3IgKldlYlZpZXdJbXBsOjpwYWdl
RXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAorUmV0YWluUHRyPE5TQ29sb3I+IFdlYlZp
ZXdJbXBsOjpwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAogewogICAgIFdlYkNv
cmU6OkNvbG9yIGNvbG9yID0gbV9wYWdlLT5wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IoKTsK
ICAgICBpZiAoIWNvbG9yLmlzVmFsaWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0luc3BlY3Rvci9pb3MvV0tJbnNwZWN0b3JIaWdobGlnaHRWaWV3Lm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2lvcy9XS0luc3BlY3RvckhpZ2hsaWdodFZpZXcu
bW0KaW5kZXggYzdiOGFmNjQyNjQ5ODJlNTU2NjBhMWFlMGZmNmUzNzczYWM3NmI4ZC4uNjk2NDJl
NjRlYzJlYWJkYzc0OTNiZjg5ZWQ2ZjNhMGRlMzUwZWQ2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2lvcy9XS0luc3BlY3RvckhpZ2hsaWdodFZpZXcubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2lvcy9XS0luc3BlY3Rvckhp
Z2hsaWdodFZpZXcubW0KQEAgLTIyOSwxMCArMjI5LDEwIEBAIC0gKHZvaWQpX2xheW91dEZvck5v
ZGVIaWdobGlnaHQ6KGNvbnN0IFdlYkNvcmU6Okluc3BlY3Rvck92ZXJsYXk6OkhpZ2hsaWdodCYp
aGlnCiAgICAgV2ViQ29yZTo6RmxvYXRRdWFkIHBhZGRpbmdRdWFkID0gaGlnaGxpZ2h0LnF1YWRz
W29mZnNldCArIDJdOwogICAgIFdlYkNvcmU6OkZsb2F0UXVhZCBjb250ZW50UXVhZCA9IGhpZ2hs
aWdodC5xdWFkc1tvZmZzZXQgKyAzXTsKIAotICAgIG1hcmdpbkxheWVyLmZpbGxDb2xvciA9IGNh
Y2hlZENHQ29sb3IoaGlnaGxpZ2h0Lm1hcmdpbkNvbG9yKTsKLSAgICBib3JkZXJMYXllci5maWxs
Q29sb3IgPSBjYWNoZWRDR0NvbG9yKGhpZ2hsaWdodC5ib3JkZXJDb2xvcik7Ci0gICAgcGFkZGlu
Z0xheWVyLmZpbGxDb2xvciA9IGNhY2hlZENHQ29sb3IoaGlnaGxpZ2h0LnBhZGRpbmdDb2xvcik7
Ci0gICAgY29udGVudExheWVyLmZpbGxDb2xvciA9IGNhY2hlZENHQ29sb3IoaGlnaGxpZ2h0LmNv
bnRlbnRDb2xvcik7CisgICAgbWFyZ2luTGF5ZXIuZmlsbENvbG9yID0gY2FjaGVkQ0dDb2xvciho
aWdobGlnaHQubWFyZ2luQ29sb3IpLmdldCgpOworICAgIGJvcmRlckxheWVyLmZpbGxDb2xvciA9
IGNhY2hlZENHQ29sb3IoaGlnaGxpZ2h0LmJvcmRlckNvbG9yKS5nZXQoKTsKKyAgICBwYWRkaW5n
TGF5ZXIuZmlsbENvbG9yID0gY2FjaGVkQ0dDb2xvcihoaWdobGlnaHQucGFkZGluZ0NvbG9yKS5n
ZXQoKTsKKyAgICBjb250ZW50TGF5ZXIuZmlsbENvbG9yID0gY2FjaGVkQ0dDb2xvcihoaWdobGln
aHQuY29udGVudENvbG9yKS5nZXQoKTsKIAogICAgIGxheWVyUGF0aFdpdGhIb2xlKG1hcmdpbkxh
eWVyLCBtYXJnaW5RdWFkLCBib3JkZXJRdWFkKTsKICAgICBsYXllclBhdGhXaXRoSG9sZShib3Jk
ZXJMYXllciwgYm9yZGVyUXVhZCwgcGFkZGluZ1F1YWQpOwpAQCAtMjYwLDEwICsyNjAsMTAgQEAg
LSAodm9pZClfbGF5b3V0Rm9yUmVjdHNIaWdobGlnaHQ6KGNvbnN0IFdlYkNvcmU6Okluc3BlY3Rv
ck92ZXJsYXk6OkhpZ2hsaWdodCYpaGkKIAogICAgIFtzZWxmIF9jcmVhdGVMYXllcnM6bnVtTGF5
ZXJzXTsKIAotICAgIENHQ29sb3JSZWYgY29udGVudENvbG9yID0gY2FjaGVkQ0dDb2xvcihoaWdo
bGlnaHQuY29udGVudENvbG9yKTsKKyAgICBhdXRvIGNvbnRlbnRDb2xvciA9IGNhY2hlZENHQ29s
b3IoaGlnaGxpZ2h0LmNvbnRlbnRDb2xvcik7CiAgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBp
IDwgbnVtTGF5ZXJzOyArK2kpIHsKICAgICAgICAgQ0FTaGFwZUxheWVyICpsYXllciA9IFtfbGF5
ZXJzIG9iamVjdEF0SW5kZXg6aV07Ci0gICAgICAgIGxheWVyLmZpbGxDb2xvciA9IGNvbnRlbnRD
b2xvcjsKKyAgICAgICAgbGF5ZXIuZmlsbENvbG9yID0gY29udGVudENvbG9yLmdldCgpOwogICAg
ICAgICBsYXllclBhdGgobGF5ZXIsIGhpZ2hsaWdodC5xdWFkc1tpXSk7CiAgICAgfQogfQpAQCAt
MzA4LDcgKzMwOCw3IEBAIHN0YXRpYyBDQUxheWVyICogY3JlYXRlTGF5b3V0SGF0Y2hpbmdMYXll
cihXZWJDb3JlOjpGbG9hdFF1YWQgcXVhZCwgV2ViQ29yZTo6Q29sCiAgICAgICAgIH0KICAgICB9
CiAgICAgbGF5ZXIucGF0aCA9IGhhdGNoUGF0aC5nZXQoKTsKLSAgICBsYXllci5zdHJva2VDb2xv
ciA9IGNhY2hlZENHQ29sb3Ioc3Ryb2tlQ29sb3IpOworICAgIGxheWVyLnN0cm9rZUNvbG9yID0g
Y2FjaGVkQ0dDb2xvcihzdHJva2VDb2xvcikuZ2V0KCk7CiAgICAgbGF5ZXIubGluZVdpZHRoID0g
MC41OwogICAgIGxheWVyLmxpbmVEYXNoUGF0dGVybiA9IEBbW05TTnVtYmVyIG51bWJlcldpdGhJ
bnQ6Ml0sIFtOU051bWJlciBudW1iZXJXaXRoSW50OjJdXTsKIApAQCAtNDEzLDggKzQxMyw4IEBA
IHN0YXRpYyBDQUxheWVyICogY3JlYXRlTGF5b3V0TGFiZWxMYXllcihTdHJpbmcgbGFiZWwsIFdl
YkNvcmU6OkZsb2F0UG9pbnQgcG9pbnQsCiAKICAgICBDQVNoYXBlTGF5ZXIgKmxhYmVsUGF0aExh
eWVyID0gW0NBU2hhcGVMYXllciBsYXllcl07CiAgICAgbGFiZWxQYXRoTGF5ZXIucGF0aCA9IHBs
YXRmb3JtTGFiZWxQYXRoOwotICAgIGxhYmVsUGF0aExheWVyLmZpbGxDb2xvciA9IGNhY2hlZENH
Q29sb3IoYmFja2dyb3VuZENvbG9yKTsKLSAgICBsYWJlbFBhdGhMYXllci5zdHJva2VDb2xvciA9
IGNhY2hlZENHQ29sb3Ioc3Ryb2tlQ29sb3IpOworICAgIGxhYmVsUGF0aExheWVyLmZpbGxDb2xv
ciA9IGNhY2hlZENHQ29sb3IoYmFja2dyb3VuZENvbG9yKS5nZXQoKTsKKyAgICBsYWJlbFBhdGhM
YXllci5zdHJva2VDb2xvciA9IGNhY2hlZENHQ29sb3Ioc3Ryb2tlQ29sb3IpLmdldCgpOwogICAg
IGxhYmVsUGF0aExheWVyLnBvc2l0aW9uID0gQ0dQb2ludE1ha2UocG9pbnQueCgpLCBwb2ludC55
KCkpOwogICAgIFtsYXllciBhZGRTdWJsYXllcjpsYWJlbFBhdGhMYXllcl07CiAjZW5kaWYKQEAg
LTQ0Niw3ICs0NDYsNyBAQCAtIChDQUxheWVyICopX2NyZWF0ZUdyaWRPdmVybGF5TGF5ZXI6KGNv
bnN0IFdlYkNvcmU6Okluc3BlY3Rvck92ZXJsYXk6OkhpZ2hsaWdodAogICAgIENBU2hhcGVMYXll
ciAqZ3JpZExpbmVzTGF5ZXIgPSBbQ0FTaGFwZUxheWVyIGxheWVyXTsKICAgICBncmlkTGluZXNM
YXllci5wYXRoID0gZ3JpZExpbmVzUGF0aC5nZXQoKTsKICAgICBncmlkTGluZXNMYXllci5saW5l
V2lkdGggPSAxOwotICAgIGdyaWRMaW5lc0xheWVyLnN0cm9rZUNvbG9yID0gY2FjaGVkQ0dDb2xv
cihvdmVybGF5LmNvbG9yKTsKKyAgICBncmlkTGluZXNMYXllci5zdHJva2VDb2xvciA9IGNhY2hl
ZENHQ29sb3Iob3ZlcmxheS5jb2xvcikuZ2V0KCk7CiAgICAgW2xheWVyIGFkZFN1YmxheWVyOmdy
aWRMaW5lc0xheWVyXTsKIAogICAgIGZvciAoYXV0byBnYXBRdWFkIDogb3ZlcmxheS5nYXBzKQpA
QCAtNDU3LDcgKzQ1Nyw3IEBAIC0gKENBTGF5ZXIgKilfY3JlYXRlR3JpZE92ZXJsYXlMYXllcjoo
Y29uc3QgV2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6SGlnaGxpZ2h0CiAgICAgICAgIGxheWVy
UGF0aChhcmVhTGF5ZXIsIGFyZWEucXVhZCk7CiAgICAgICAgIGFyZWFMYXllci5saW5lV2lkdGgg
PSAzOwogICAgICAgICBhcmVhTGF5ZXIuZmlsbENvbG9yID0gQ0dDb2xvckdldENvbnN0YW50Q29s
b3Ioa0NHQ29sb3JDbGVhcik7Ci0gICAgICAgIGFyZWFMYXllci5zdHJva2VDb2xvciA9IGNhY2hl
ZENHQ29sb3Iob3ZlcmxheS5jb2xvcik7CisgICAgICAgIGFyZWFMYXllci5zdHJva2VDb2xvciA9
IGNhY2hlZENHQ29sb3Iob3ZlcmxheS5jb2xvcikuZ2V0KCk7CiAgICAgICAgIFtsYXllciBhZGRT
dWJsYXllcjphcmVhTGF5ZXJdOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUERGL1dLUERGSFVEVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BE
Ri9XS1BERkhVRFZpZXcubW0KaW5kZXggM2NmMjdkMWJlOTcwNGQ2YWY2NzExNGQ4ZTlhZDA5MGIy
NmExZThjZS4uY2VkMjAyMGIzZmM0Y2I5MTFkZDg4NWZjNThmOTEyYjY5NDU3OWZhMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUERGL1dLUERGSFVEVmlldy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QREYvV0tQREZIVURWaWV3Lm1tCkBAIC0yNjksNyArMjY5
LDcgQEAgLSAodm9pZClfc2V0dXBMYXllcjooQ0FMYXllciAqKXBhcmVudExheWVyCiAgICAgX2xh
eWVyID0gYWRvcHROUyhbW0NBTGF5ZXIgYWxsb2NdIGluaXRdKTsKICAgICBbX2xheWVyIHNldENv
cm5lclJhZGl1czpsYXllckNvcm5lclJhZGl1c107CiAgICAgCi0gICAgW19sYXllciBzZXRCYWNr
Z3JvdW5kQ29sb3I6V2ViQ29yZTo6Y2FjaGVkQ0dDb2xvcih7IFdlYkNvcmU6OlNSR0JBPGZsb2F0
PihsYXllckdyYXlDb21wb25lbnQsIGxheWVyR3JheUNvbXBvbmVudCwgbGF5ZXJHcmF5Q29tcG9u
ZW50KSB9KV07CisgICAgW19sYXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6V2ViQ29yZTo6Y2FjaGVk
Q0dDb2xvcih7IFdlYkNvcmU6OlNSR0JBPGZsb2F0PihsYXllckdyYXlDb21wb25lbnQsIGxheWVy
R3JheUNvbXBvbmVudCwgbGF5ZXJHcmF5Q29tcG9uZW50KSB9KS5nZXQoKV07CiAgICAgW3NlbGYg
X3NldExheWVyT3BhY2l0eTpsYXllckFscGhhXTsKICAgICAKICAgICBbc2VsZiBfbG9hZEljb25J
bWFnZXNdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9w
SW50ZXJhY3Rpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJv
cEludGVyYWN0aW9uU3RhdGUubW0KaW5kZXggYmVlODljMDE1NTIwYTdiM2IwMmEwY2QyMjExZTM5
YjEwMjEyZmFhMy4uMmQwZTY2NjkzNDc3MjljNmI0NGMxNzA3ZGNjMmU0MjdkYzc0ZDVjYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25T
dGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFj
dGlvblN0YXRlLm1tCkBAIC0yMjYsNyArMjI2LDcgQEAgdm9pZCBEcmFnRHJvcEludGVyYWN0aW9u
U3RhdGU6OmRlbGl2ZXJEZWxheWVkRHJvcFByZXZpZXcoVUlWaWV3ICpjb250ZW50VmlldywgVUkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byB0ZXh0SW5kaWNhdG9ySW1hZ2UgPSB1aUltYWdl
Rm9ySW1hZ2UoaW5kaWNhdG9yLmNvbnRlbnRJbWFnZS5nZXQoKSk7Ci0gICAgYXV0byBwcmV2aWV3
ID0gY3JlYXRlVGFyZ2V0ZWREcmFnUHJldmlldyh0ZXh0SW5kaWNhdG9ySW1hZ2UuZ2V0KCksIGNv
bnRlbnRWaWV3LCBwcmV2aWV3Q29udGFpbmVyLCBpbmRpY2F0b3IudGV4dEJvdW5kaW5nUmVjdElu
Um9vdFZpZXdDb29yZGluYXRlcywgaW5kaWNhdG9yLnRleHRSZWN0c0luQm91bmRpbmdSZWN0Q29v
cmRpbmF0ZXMsIFtVSUNvbG9yIGNvbG9yV2l0aENHQ29sb3I6Y2FjaGVkQ0dDb2xvcihpbmRpY2F0
b3IuZXN0aW1hdGVkQmFja2dyb3VuZENvbG9yKV0sIG5pbCk7CisgICAgYXV0byBwcmV2aWV3ID0g
Y3JlYXRlVGFyZ2V0ZWREcmFnUHJldmlldyh0ZXh0SW5kaWNhdG9ySW1hZ2UuZ2V0KCksIGNvbnRl
bnRWaWV3LCBwcmV2aWV3Q29udGFpbmVyLCBpbmRpY2F0b3IudGV4dEJvdW5kaW5nUmVjdEluUm9v
dFZpZXdDb29yZGluYXRlcywgaW5kaWNhdG9yLnRleHRSZWN0c0luQm91bmRpbmdSZWN0Q29vcmRp
bmF0ZXMsIFtVSUNvbG9yIGNvbG9yV2l0aENHQ29sb3I6Y2FjaGVkQ0dDb2xvcihpbmRpY2F0b3Iu
ZXN0aW1hdGVkQmFja2dyb3VuZENvbG9yKS5nZXQoKV0sIG5pbCk7CiAgICAgZm9yIChhdXRvJiBp
dGVtQW5kUHJldmlld1Byb3ZpZGVyIDogbV9kZWxheWVkSXRlbVByZXZpZXdQcm92aWRlcnMpCiAg
ICAgICAgIGl0ZW1BbmRQcmV2aWV3UHJvdmlkZXIucHJvdmlkZXIocHJldmlldy5nZXQoKSk7CiAg
ICAgbV9kZWxheWVkSXRlbVByZXZpZXdQcm92aWRlcnMuY2xlYXIoKTsKQEAgLTMxMyw3ICszMTMs
NyBAQCBVSVRhcmdldGVkRHJhZ1ByZXZpZXcgKkRyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6cHJl
dmlld0ZvckRyYWdJdGVtKFVJRHJhZ0l0ZW0gKgogICAgIGlmIChzaG91bGRVc2VUZXh0SW5kaWNh
dG9yVG9DcmVhdGVQcmV2aWV3Rm9yRHJhZ1NvdXJjZShzb3VyY2UpKSB7CiAgICAgICAgIGF1dG8g
aW5kaWNhdG9yID0gc291cmNlLmluZGljYXRvckRhdGEudmFsdWUoKTsKICAgICAgICAgYXV0byB0
ZXh0SW5kaWNhdG9ySW1hZ2UgPSB1aUltYWdlRm9ySW1hZ2UoaW5kaWNhdG9yLmNvbnRlbnRJbWFn
ZS5nZXQoKSk7Ci0gICAgICAgIHJldHVybiBjcmVhdGVUYXJnZXRlZERyYWdQcmV2aWV3KHRleHRJ
bmRpY2F0b3JJbWFnZS5nZXQoKSwgY29udGVudFZpZXcsIHByZXZpZXdDb250YWluZXIsIGluZGlj
YXRvci50ZXh0Qm91bmRpbmdSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzLCBpbmRpY2F0b3IudGV4
dFJlY3RzSW5Cb3VuZGluZ1JlY3RDb29yZGluYXRlcywgW1VJQ29sb3IgY29sb3JXaXRoQ0dDb2xv
cjpjYWNoZWRDR0NvbG9yKGluZGljYXRvci5lc3RpbWF0ZWRCYWNrZ3JvdW5kQ29sb3IpXSwgbmls
KS5hdXRvcmVsZWFzZSgpOworICAgICAgICByZXR1cm4gY3JlYXRlVGFyZ2V0ZWREcmFnUHJldmll
dyh0ZXh0SW5kaWNhdG9ySW1hZ2UuZ2V0KCksIGNvbnRlbnRWaWV3LCBwcmV2aWV3Q29udGFpbmVy
LCBpbmRpY2F0b3IudGV4dEJvdW5kaW5nUmVjdEluUm9vdFZpZXdDb29yZGluYXRlcywgaW5kaWNh
dG9yLnRleHRSZWN0c0luQm91bmRpbmdSZWN0Q29vcmRpbmF0ZXMsIFtVSUNvbG9yIGNvbG9yV2l0
aENHQ29sb3I6Y2FjaGVkQ0dDb2xvcihpbmRpY2F0b3IuZXN0aW1hdGVkQmFja2dyb3VuZENvbG9y
KS5nZXQoKV0sIG5pbCkuYXV0b3JlbGVhc2UoKTsKICAgICB9CiAKICAgICByZXR1cm4gbmlsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1ZpZXdHZXN0dXJlQ29udHJv
bGxlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNvbnRy
b2xsZXJJT1MubW0KaW5kZXggMDNhYjBkNDJhMDdiMDgzZGE1OTZkMGJiNTU5YmQ4Y2UzMDE0NDQ2
MC4uYmJiYjAyNTRmYWFhMWQ0NDIzNDgwNGNlN2E2ODIwN2FkMmE5OTk1MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1ZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVySU9T
Lm1tCkBAIC0yMjUsNyArMjI1LDcgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmJlZ2lu
U3dpcGVHZXN0dXJlKF9VSU5hdmlnYXRpb25JbnRlcmFjdGl2ZVRyYW5zaXRpb24KICAgICAgICAg
ICAgIFttX3NuYXBzaG90VmlldyBsYXllcl0uY29udGVudHMgPSBzbmFwc2hvdC0+YXNMYXllckNv
bnRlbnRzKCk7CiAgICAgICAgIFdlYkNvcmU6OkNvbG9yIGNvcmVDb2xvciA9IHNuYXBzaG90LT5i
YWNrZ3JvdW5kQ29sb3IoKTsKICAgICAgICAgaWYgKGNvcmVDb2xvci5pc1ZhbGlkKCkpCi0gICAg
ICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBhZG9wdE5TKFtbVUlDb2xvciBhbGxvY10gaW5pdFdp
dGhDR0NvbG9yOldlYkNvcmU6OmNhY2hlZENHQ29sb3IoY29yZUNvbG9yKV0pOworICAgICAgICAg
ICAgYmFja2dyb3VuZENvbG9yID0gYWRvcHROUyhbW1VJQ29sb3IgYWxsb2NdIGluaXRXaXRoQ0dD
b2xvcjpXZWJDb3JlOjpjYWNoZWRDR0NvbG9yKGNvcmVDb2xvcikuZ2V0KCldKTsKICAgICB9CiAK
ICAgICBbbV9zbmFwc2hvdFZpZXcgc2V0QmFja2dyb3VuZENvbG9yOmJhY2tncm91bmRDb2xvci5n
ZXQoKV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCAyNTM0NTAyZTg0YmE0ODBkMjQ4ZGQ2YWU4YzI5ZGM5
YjQzNDEwOWNlLi5jM2YwODhkNTUxYTE0MTNlZWM5Y2ViYmY5MmQzZDI1MTBhNTZkN2NjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0KQEAgLTIwMTIsNyArMjAxMiw3IEBAIC0gKHZvaWQpX3VwZGF0ZVRhcEhpZ2hs
aWdodAogICAgIGlmICghW19oaWdobGlnaHRWaWV3IHN1cGVydmlld10pCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFtfaGlnaGxpZ2h0VmlldyBzZXRDb2xvcjphZG9wdE5TKFtbVUlDb2xvciBhbGxv
Y10gaW5pdFdpdGhDR0NvbG9yOmNhY2hlZENHQ29sb3IoX3RhcEhpZ2hsaWdodEluZm9ybWF0aW9u
LmNvbG9yKV0pLmdldCgpXTsKKyAgICBbX2hpZ2hsaWdodFZpZXcgc2V0Q29sb3I6YWRvcHROUyhb
W1VJQ29sb3IgYWxsb2NdIGluaXRXaXRoQ0dDb2xvcjpjYWNoZWRDR0NvbG9yKF90YXBIaWdobGln
aHRJbmZvcm1hdGlvbi5jb2xvcikuZ2V0KCldKS5nZXQoKV07CiAKICAgICBhdXRvJiBoaWdobGln
aHRlZFF1YWRzID0gX3RhcEhpZ2hsaWdodEluZm9ybWF0aW9uLnF1YWRzOwogICAgIGJvb2wgYWxs
UmVjdGlsaW5lYXIgPSB0cnVlOwpAQCAtMzY5MSw3ICszNjkxLDcgQEAgLSAoVUlDb2xvciAqKV9j
YXNjYWRlSW50ZXJhY3Rpb25UaW50Q29sb3IKICAgICBpZiAoIV9wYWdlLT5lZGl0b3JTdGF0ZSgp
LmlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhKSB7CiAgICAgICAgIFdlYkNvcmU6OkNvbG9yIGNhcmV0
Q29sb3IgPSBfcGFnZS0+ZWRpdG9yU3RhdGUoKS5wb3N0TGF5b3V0RGF0YSgpLmNhcmV0Q29sb3I7
CiAgICAgICAgIGlmIChjYXJldENvbG9yLmlzVmFsaWQoKSkKLSAgICAgICAgICAgIHJldHVybiBb
VUlDb2xvciBjb2xvcldpdGhDR0NvbG9yOmNhY2hlZENHQ29sb3IoY2FyZXRDb2xvcildOworICAg
ICAgICAgICAgcmV0dXJuIFtVSUNvbG9yIGNvbG9yV2l0aENHQ29sb3I6Y2FjaGVkQ0dDb2xvcihj
YXJldENvbG9yKS5nZXQoKV07CiAgICAgfQogICAgIHJldHVybiBbc2VsZiBfaW5oZXJpdGVkSW50
ZXJhY3Rpb25UaW50Q29sb3JdOwogfQpAQCAtODU5Nyw3ICs4NTk3LDcgQEAgLSAoVUlUYXJnZXRl
ZFByZXZpZXcgKilfY3JlYXRlVGFyZ2V0ZWRDb250ZXh0TWVudUhpbnRQcmV2aWV3SWZQb3NzaWJs
ZQogICAgIGlmIChfcG9zaXRpb25JbmZvcm1hdGlvbi5pc0xpbmsgJiYgX3Bvc2l0aW9uSW5mb3Jt
YXRpb24ubGlua0luZGljYXRvci5jb250ZW50SW1hZ2UpIHsKICAgICAgICAgYXV0byBpbmRpY2F0
b3IgPSBfcG9zaXRpb25JbmZvcm1hdGlvbi5saW5rSW5kaWNhdG9yOwogICAgICAgICBhdXRvIHRl
eHRJbmRpY2F0b3JJbWFnZSA9IHVpSW1hZ2VGb3JJbWFnZShpbmRpY2F0b3IuY29udGVudEltYWdl
LmdldCgpKTsKLSAgICAgICAgdGFyZ2V0ZWRQcmV2aWV3ID0gY3JlYXRlVGFyZ2V0ZWRQcmV2aWV3
KHRleHRJbmRpY2F0b3JJbWFnZS5nZXQoKSwgc2VsZiwgc2VsZi5jb250YWluZXJGb3JDb250ZXh0
TWVudUhpbnRQcmV2aWV3cywgaW5kaWNhdG9yLnRleHRCb3VuZGluZ1JlY3RJblJvb3RWaWV3Q29v
cmRpbmF0ZXMsIGluZGljYXRvci50ZXh0UmVjdHNJbkJvdW5kaW5nUmVjdENvb3JkaW5hdGVzLCBb
VUlDb2xvciBjb2xvcldpdGhDR0NvbG9yOmNhY2hlZENHQ29sb3IoaW5kaWNhdG9yLmVzdGltYXRl
ZEJhY2tncm91bmRDb2xvcildKTsKKyAgICAgICAgdGFyZ2V0ZWRQcmV2aWV3ID0gY3JlYXRlVGFy
Z2V0ZWRQcmV2aWV3KHRleHRJbmRpY2F0b3JJbWFnZS5nZXQoKSwgc2VsZiwgc2VsZi5jb250YWlu
ZXJGb3JDb250ZXh0TWVudUhpbnRQcmV2aWV3cywgaW5kaWNhdG9yLnRleHRCb3VuZGluZ1JlY3RJ
blJvb3RWaWV3Q29vcmRpbmF0ZXMsIGluZGljYXRvci50ZXh0UmVjdHNJbkJvdW5kaW5nUmVjdENv
b3JkaW5hdGVzLCBbVUlDb2xvciBjb2xvcldpdGhDR0NvbG9yOmNhY2hlZENHQ29sb3IoaW5kaWNh
dG9yLmVzdGltYXRlZEJhY2tncm91bmRDb2xvcikuZ2V0KCldKTsKICAgICB9IGVsc2UgaWYgKChf
cG9zaXRpb25JbmZvcm1hdGlvbi5pc0F0dGFjaG1lbnQgfHwgX3Bvc2l0aW9uSW5mb3JtYXRpb24u
aXNJbWFnZSkgJiYgX3Bvc2l0aW9uSW5mb3JtYXRpb24uaW1hZ2UpIHsKICAgICAgICAgYXV0byBj
Z0ltYWdlID0gX3Bvc2l0aW9uSW5mb3JtYXRpb24uaW1hZ2UtPm1ha2VDR0ltYWdlQ29weSgpOwog
ICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJ
bWFnZTpjZ0ltYWdlLmdldCgpXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tIb3ZlclBsYXR0ZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tI
b3ZlclBsYXR0ZXIubW0KaW5kZXggMTY1MzNkYjM1YzdkZGY4OTg0ZTIwMDdkZjY0YTFiMDY5MTg4
ZTc3Yi4uN2YxMWUyZjNmYzc1NGYzNjlhNTg4ZmM3Y2YwYzJhMDNjZDlkOWMzOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLSG92ZXJQbGF0dGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0hvdmVyUGxhdHRlci5tbQpAQCAtMjM3LDcgKzIz
Nyw3IEBAIC0gKHZvaWQpZGlkUmVjZWl2ZVBvc2l0aW9uSW5mb3JtYXRpb246KGNvbnN0IFdlYktp
dDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zCiAgICAgUmV0YWluUHRyPENHQ29sb3JSZWY+
IG9sZEJhY2tncm91bmRDb2xvciA9IFtfbGFzdEJhY2tncm91bmRMYXllciBwcmVzZW50YXRpb25M
YXllcl0uYmFja2dyb3VuZENvbG9yOwogICAgIFJldGFpblB0cjxDQUxheWVyPiBiYWNrZ3JvdW5k
ID0gX2xhc3RCYWNrZ3JvdW5kTGF5ZXIgPzogYWRvcHROUyhbW0NBTGF5ZXIgYWxsb2NdIGluaXRd
KTsKICAgICBbYmFja2dyb3VuZCBzZXRGcmFtZTpbcGxhdHRlciBib3VuZHNdXTsKLSAgICBbYmFj
a2dyb3VuZCBzZXRCYWNrZ3JvdW5kQ29sb3I6Y2FjaGVkQ0dDb2xvcihpbmZvcm1hdGlvbi5saW5r
SW5kaWNhdG9yLmVzdGltYXRlZEJhY2tncm91bmRDb2xvcildOworICAgIFtiYWNrZ3JvdW5kIHNl
dEJhY2tncm91bmRDb2xvcjpjYWNoZWRDR0NvbG9yKGluZm9ybWF0aW9uLmxpbmtJbmRpY2F0b3Iu
ZXN0aW1hdGVkQmFja2dyb3VuZENvbG9yKS5nZXQoKV07CiAgICAgW2JhY2tncm91bmQgc2V0TWFz
azptYXNrLmdldCgpXTsKICAgICBbYmFja2dyb3VuZCB3ZWJfZGlzYWJsZUFsbEFjdGlvbnNdOwog
ICAgIFtwbGF0dGVyIGFkZFN1YmxheWVyOmJhY2tncm91bmQuZ2V0KCldOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUNvbG9yQ29udHJvbC5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1Db2xvckNvbnRyb2wubW0K
aW5kZXggNTdhOTY2ZjIyNTZlODA2MWFiZDI5MWM2MjUwZDA0OWZhMDJhZWQ5Ni4uYTZmYjBhOGM5
ZjYxMDc3OGRiODQ2YTRhZGNmNzFiMjY3NDFjZDRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybUNvbG9yQ29udHJvbC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtQ29sb3JDb250cm9sLm1tCkBAIC03OSw3
ICs3OSw3IEBAIC0gKE5TQXJyYXk8VUlDb2xvciAqPiAqKWZvY3VzZWRFbGVtZW50U3VnZ2VzdGVk
Q29sb3JzCiAKICAgICBOU011dGFibGVBcnJheTxVSUNvbG9yICo+ICpjb2xvcnMgPSBbTlNNdXRh
YmxlQXJyYXkgYXJyYXldOwogICAgIGZvciAoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yIDog
X3ZpZXcuZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5zdWdnZXN0ZWRDb2xvcnMpCi0gICAgICAg
IFtjb2xvcnMgYWRkT2JqZWN0OltVSUNvbG9yIGNvbG9yV2l0aENHQ29sb3I6Y2FjaGVkQ0dDb2xv
cihjb2xvcildXTsKKyAgICAgICAgW2NvbG9ycyBhZGRPYmplY3Q6W1VJQ29sb3IgY29sb3JXaXRo
Q0dDb2xvcjpjYWNoZWRDR0NvbG9yKGNvbG9yKS5nZXQoKV1dOwogCiAgICAgcmV0dXJuIGNvbG9y
czsKIH0KQEAgLTg3LDcgKzg3LDcgQEAgLSAoTlNBcnJheTxVSUNvbG9yICo+ICopZm9jdXNlZEVs
ZW1lbnRTdWdnZXN0ZWRDb2xvcnMKIAogLSAodm9pZCl1cGRhdGVDb2xvclBpY2tlclN0YXRlCiB7
Ci0gICAgW19jb2xvclBpY2tlclZpZXdDb250cm9sbGVyIHNldFNlbGVjdGVkQ29sb3I6W1VJQ29s
b3IgY29sb3JXaXRoQ0dDb2xvcjpjYWNoZWRDR0NvbG9yKF92aWV3LmZvY3VzZWRFbGVtZW50SW5m
b3JtYXRpb24uY29sb3JWYWx1ZSldXTsKKyAgICBbX2NvbG9yUGlja2VyVmlld0NvbnRyb2xsZXIg
c2V0U2VsZWN0ZWRDb2xvcjpbVUlDb2xvciBjb2xvcldpdGhDR0NvbG9yOmNhY2hlZENHQ29sb3Io
X3ZpZXcuZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5jb2xvclZhbHVlKS5nZXQoKV1dOwogI2lm
IEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQogICAgIGlmIChbX2NvbG9yUGlja2VyVmlld0NvbnRy
b2xsZXIgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfc2V0U3VnZ2VzdGVkQ29sb3JzOild
KQogICAgICAgICBbX2NvbG9yUGlja2VyVmlld0NvbnRyb2xsZXIgX3NldFN1Z2dlc3RlZENvbG9y
czpbc2VsZiBmb2N1c2VkRWxlbWVudFN1Z2dlc3RlZENvbG9yc11dOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkNvbG9yUGlja2VyTWFjLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1dlYkNvbG9yUGlja2VyTWFjLm1tCmluZGV4IDZkYTFmOTY4ZmQ4
NTdhYzM1ZWRlYTc3NWEzYzU2ZDJjNzdkZDJmZmUuLjljNDZjNTkxZjBkOTQ2Y2ZhMmUxZTk0Zjll
OWM2MDZjNDQxMTYxYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9X
ZWJDb2xvclBpY2tlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2Vi
Q29sb3JQaWNrZXJNYWMubW0KQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIFdlYkNvbG9yUGlja2Vy
TWFjOjpzZXRTZWxlY3RlZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikKICAgICBp
ZiAoIW1fY2xpZW50IHx8ICFtX2NvbG9yUGlja2VyVUkpCiAgICAgICAgIHJldHVybjsKICAgICAK
LSAgICBbbV9jb2xvclBpY2tlclVJIHNldENvbG9yOm5zQ29sb3IoY29sb3IpXTsKKyAgICBbbV9j
b2xvclBpY2tlclVJIHNldENvbG9yOm5zQ29sb3IoY29sb3IpLmdldCgpXTsKIH0KIAogdm9pZCBX
ZWJDb2xvclBpY2tlck1hYzo6ZGlkQ2hvb3NlQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNv
bG9yKQpAQCAtMTIzLDcgKzEyMyw3IEBAIHZvaWQgV2ViQ29sb3JQaWNrZXJNYWM6OnNob3dDb2xv
clBpY2tlcihjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IpCiAgICAgaWYgKCFtX2NsaWVudCkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgW21fY29sb3JQaWNrZXJVSSBzZXRBbmRTaG93UGlja2Vy
OnRoaXMgd2l0aENvbG9yOm5zQ29sb3IoY29sb3IpIHN1Z2dlc3Rpb25zOldURk1vdmUobV9zdWdn
ZXN0aW9ucyldOworICAgIFttX2NvbG9yUGlja2VyVUkgc2V0QW5kU2hvd1BpY2tlcjp0aGlzIHdp
dGhDb2xvcjpuc0NvbG9yKGNvbG9yKS5nZXQoKSBzdWdnZXN0aW9uczpXVEZNb3ZlKG1fc3VnZ2Vz
dGlvbnMpXTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkBAIC0yMzcsNyArMjM3LDcgQEAg
LSAodm9pZClzZXRBbmRTaG93UGlja2VyOihXZWJLaXQ6OldlYkNvbG9yUGlja2VyTWFjKilwaWNr
ZXIgd2l0aENvbG9yOihOU0NvbG9yICoKICAgICBpZiAoc3VnZ2VzdGlvbnMuc2l6ZSgpKSB7CiAg
ICAgICAgIHN1Z2dlc3RlZENvbG9ycyA9IGFkb3B0TlMoW1tOU0NvbG9yTGlzdCBhbGxvY10gaW5p
dF0pOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0ZDo6bWluKHN1Z2dlc3Rpb25z
LnNpemUoKSwgbWF4Q29sb3JTdWdnZXN0aW9ucyk7IGkrKykKLSAgICAgICAgICAgIFtzdWdnZXN0
ZWRDb2xvcnMgaW5zZXJ0Q29sb3I6bnNDb2xvcihzdWdnZXN0aW9ucy5hdChpKSkga2V5OkAoaSku
c3RyaW5nVmFsdWUgYXRJbmRleDppXTsKKyAgICAgICAgICAgIFtzdWdnZXN0ZWRDb2xvcnMgaW5z
ZXJ0Q29sb3I6bnNDb2xvcihzdWdnZXN0aW9ucy5hdChpKSkuZ2V0KCkga2V5OkAoaSkuc3RyaW5n
VmFsdWUgYXRJbmRleDppXTsKICAgICB9CiAKICAgICBbX3BvcG92ZXJXZWxsIHNldFN1Z2dlc3Rl
ZENvbG9yczpzdWdnZXN0ZWRDb2xvcnMuZ2V0KCldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCBiM2M0OGJiYjRhMjhiODBj
ZGNjMWI4OTgwMDc4MGE3ZGI5MGEyNTE2Li4wNjBmOGUwZDZlNjdjYjg0ZjljM2IyOGYwYjIzNWU2
NjYwNDA3MzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvV2ViUGFnZU1hYy5tbQpAQCAtMTEwMyw3ICsxMTAzLDcgQEAgYm9vbCBXZWJQYWdlOjpzaG91
bGRBdm9pZENvbXB1dGluZ1Bvc3RMYXlvdXREYXRhRm9yRWRpdG9yU3RhdGUoKSBjb25zdAogCiB2
b2lkIFdlYlBhZ2U6OnNldEFjY2VudENvbG9yKFdlYkNvcmU6OkNvbG9yIGNvbG9yKQogewotICAg
IFtOU0FwcCBfc2V0QWNjZW50Q29sb3I6Y29sb3IuaXNWYWxpZCgpID8gV2ViQ29yZTo6bnNDb2xv
cihjb2xvcikgOiBuaWxdOworICAgIFtOU0FwcCBfc2V0QWNjZW50Q29sb3I6Y29sb3IuaXNWYWxp
ZCgpID8gV2ViQ29yZTo6bnNDb2xvcihjb2xvcikuZ2V0KCkgOiBuaWxdOwogfQogCiAjZW5kaWYg
Ly8gSEFWRShBUFBfQUNDRU5UX0NPTE9SUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KaW5kZXggMTNhNmJmOTFj
OWY1M2Y1NTNjNGI3Y2U3NDQyNjZhMDFjYzEwZDkyMS4uYzYxYjg1MTJiYTNjZmNjODllNDM1YmY5
NDM0NGRkNzI5MTcyNWIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
Y29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KQEAgLTI5NCw3ICsyOTQsNyBAQCB2
b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9F
bGVtZW50KEhUTUxWaWRlb0VsZW1lbgogICAgICAgICBbdmlkZW9MYXllciBzZXREZWxlZ2F0ZTpb
V2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlIHNoYXJlZF1dOwogICAgICAgICBbdmlk
ZW9MYXllciBzZXROYW1lOkAiV2ViIFZpZGVvIEZ1bGxzY3JlZW4gTGF5ZXIiXTsKICAgICAgICAg
W3ZpZGVvTGF5ZXIgc2V0UG9zaXRpb246Q0dQb2ludE1ha2UoMCwgMCldOwotICAgICAgICBbdmlk
ZW9MYXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6Y2FjaGVkQ0dDb2xvcihXZWJDb3JlOjpDb2xvcjo6
dHJhbnNwYXJlbnRCbGFjayldOworICAgICAgICBbdmlkZW9MYXllciBzZXRCYWNrZ3JvdW5kQ29s
b3I6Y2FjaGVkQ0dDb2xvcihXZWJDb3JlOjpDb2xvcjo6dHJhbnNwYXJlbnRCbGFjaykuZ2V0KCld
OwogCiAgICAgICAgIC8vIFNldCBhIHNjYWxlIGZhY3RvciBoZXJlIHRvIG1ha2UgY29udmVydFJl
Y3Q6dG9MYXllcjpuaWwgdGFrZSBzY2FsZSBmYWN0b3IgaW50byBhY2NvdW50LiA8cmRhcjovL3By
b2JsZW0vMTgzMTY1NDI+LgogICAgICAgICAvLyBUaGlzIHNjYWxlIGZhY3RvciBpcyBpbnZlcnRl
ZCBpbiB0aGUgaG9zdGluZyBwcm9jZXNzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9pb3MvV2ViVmlldy9XZWJQREZWaWV3SU9TLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3Mv
V2ViVmlldy9XZWJQREZWaWV3SU9TLm1tCmluZGV4IDk3YzM3OWNlZTY2YjQ5MDg2OTFhZjBkZjFl
Y2I2NjliZTNiNjVkMjUuLjNlZDQyZGQwYzUzZjY3M2FlNDVmMmU3NDFhMTc2NDYzNDAzMGE2NjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld0lP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdJT1Mu
bW0KQEAgLTEyMiw3ICsxMjIsNyBAQCAtICh2b2lkKWRyYXdQYWdlOihDR1BERlBhZ2VSZWYpYVBh
Z2UKICAgICAvLyBEcmF3IHBhZ2UuCiAgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsK
ICAgICBDR0NvbnRleHRTZXRTaGFkb3dXaXRoQ29sb3IoY29udGV4dCwgQ0dTaXplTWFrZSgwLjBm
LCAyLjBmKSwgMy4wZiwgW1tzZWxmIGNsYXNzXSBzaGFkb3dDb2xvcl0pOwotICAgIENHQ29udGV4
dFNldEZpbGxDb2xvcldpdGhDb2xvcihjb250ZXh0LCBjYWNoZWRDR0NvbG9yKENvbG9yOjp3aGl0
ZSkpOworICAgIENHQ29udGV4dFNldEZpbGxDb2xvcldpdGhDb2xvcihjb250ZXh0LCBjYWNoZWRD
R0NvbG9yKENvbG9yOjp3aGl0ZSkuZ2V0KCkpOwogICAgIENHQ29udGV4dEZpbGxSZWN0KGNvbnRl
eHQsIHBhZ2VSZWN0KTsKICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNvbnRleHQpOyAgICAK
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUGxh
aW5XaGl0ZVZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBsYWlu
V2hpdGVWaWV3Lm1tCmluZGV4IDYxMGM3Y2M0ZjI4YWUxNmMzYTI1ZGQ5MWY1MTQxZGUxNGNhMjUy
NjMuLjc3Y2YwNzc3ZDA0MmY0NWFmOTY1M2ZkNzE3MDEyMDY1NDhkMTExOTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUGxhaW5XaGl0ZVZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQbGFpbldoaXRlVmlldy5tbQpA
QCAtNDEsNyArNDEsNyBAQCBAaW1wbGVtZW50YXRpb24gV2ViUGxhaW5XaGl0ZVZpZXcKIC0gKHZv
aWQpZHJhd1JlY3Q6KE5TUmVjdClyZWN0CiB7CiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBX
S0dldEN1cnJlbnRHcmFwaGljc0NvbnRleHQoKTsKLSAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3JX
aXRoQ29sb3IoY29udGV4dCwgY2FjaGVkQ0dDb2xvcihDb2xvcjo6d2hpdGUpKTsKKyAgICBDR0Nv
bnRleHRTZXRGaWxsQ29sb3JXaXRoQ29sb3IoY29udGV4dCwgY2FjaGVkQ0dDb2xvcihDb2xvcjo6
d2hpdGUpLmdldCgpKTsKICAgICBXS1JlY3RGaWxsKGNvbnRleHQsIFtzZWxmIGJvdW5kc10pOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NUkdCQ29sb3Iu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NUkdCQ29sb3IubW0KaW5kZXggOTc2
MmE2MDQwZmFkN2Y0N2UyNTFmMGE3MGM5NzI2NjRjODkwNDM3Yy4uNjVkZTQ2MThhOWFmMDk0OWY3
OWU0MjZhMDNjYWE5ZjU4ZGUyMWEwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTVJHQkNvbG9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01SR0JDb2xvci5tbQpAQCAtODUsMTMgKzg1LDEzIEBAIC0gKERPTUNTU1ByaW1pdGl2ZVZhbHVl
ICopYWxwaGEKIC0gKE5TQ29sb3IgKiljb2xvcgogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICByZXR1cm4gV2ViQ29yZTo6bnNDb2xvcihJTVBMLT5jb2xv
cigpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6bnNDb2xvcihJTVBMLT5jb2xvcigpKS5hdXRvcmVs
ZWFzZSgpOwogfQogI2Vsc2UKIC0gKENHQ29sb3JSZWYpY29sb3IKIHsKICAgICBXZWJDb3JlOjpK
U01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmNhY2hlZENH
Q29sb3IoSU1QTC0+Y29sb3IoKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNhY2hlZENHQ29sb3Io
SU1QTC0+Y29sb3IoKSkuYXV0b3JlbGVhc2UoKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJJbnNwZWN0b3IvV2ViTm9kZUhpZ2hsaWdodFZpZXcu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJJbnNwZWN0b3IvV2ViTm9kZUhpZ2hsaWdo
dFZpZXcubW0KaW5kZXggOTUwYWU4ZTAwZDMwYTQ1MjA5ZjlhZGRhM2MyYjMzZjEzMTAwMjJjMS4u
ZDYwN2Y4Zjg4NDBmOTI5YTAxY2JhOGU4ZTRkZmI5ZDBmNDhmNWUwOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViSW5zcGVjdG9yL1dlYk5vZGVIaWdobGlnaHRWaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkluc3BlY3Rvci9XZWJOb2RlSGlnaGxp
Z2h0Vmlldy5tbQpAQCAtMjc3LDEwICsyNzcsMTAgQEAgLSAodm9pZClfbGF5b3V0Rm9yTm9kZUhp
Z2hsaWdodDooSW5zcGVjdG9yT3ZlcmxheTo6SGlnaGxpZ2h0KiloaWdobGlnaHQgcGFyZW50OigK
ICAgICBGbG9hdFF1YWQgcGFkZGluZ1F1YWQgPSBoaWdobGlnaHQtPnF1YWRzWzJdOwogICAgIEZs
b2F0UXVhZCBjb250ZW50UXVhZCA9IGhpZ2hsaWdodC0+cXVhZHNbM107CiAKLSAgICBtYXJnaW5M
YXllci5maWxsQ29sb3IgPSBjYWNoZWRDR0NvbG9yKGhpZ2hsaWdodC0+bWFyZ2luQ29sb3IpOwot
ICAgIGJvcmRlckxheWVyLmZpbGxDb2xvciA9IGNhY2hlZENHQ29sb3IoaGlnaGxpZ2h0LT5ib3Jk
ZXJDb2xvcik7Ci0gICAgcGFkZGluZ0xheWVyLmZpbGxDb2xvciA9IGNhY2hlZENHQ29sb3IoaGln
aGxpZ2h0LT5wYWRkaW5nQ29sb3IpOwotICAgIGNvbnRlbnRMYXllci5maWxsQ29sb3IgPSBjYWNo
ZWRDR0NvbG9yKGhpZ2hsaWdodC0+Y29udGVudENvbG9yKTsKKyAgICBtYXJnaW5MYXllci5maWxs
Q29sb3IgPSBjYWNoZWRDR0NvbG9yKGhpZ2hsaWdodC0+bWFyZ2luQ29sb3IpLmdldCgpOworICAg
IGJvcmRlckxheWVyLmZpbGxDb2xvciA9IGNhY2hlZENHQ29sb3IoaGlnaGxpZ2h0LT5ib3JkZXJD
b2xvcikuZ2V0KCk7CisgICAgcGFkZGluZ0xheWVyLmZpbGxDb2xvciA9IGNhY2hlZENHQ29sb3Io
aGlnaGxpZ2h0LT5wYWRkaW5nQ29sb3IpLmdldCgpOworICAgIGNvbnRlbnRMYXllci5maWxsQ29s
b3IgPSBjYWNoZWRDR0NvbG9yKGhpZ2hsaWdodC0+Y29udGVudENvbG9yKS5nZXQoKTsKIAogICAg
IGxheWVyUGF0aFdpdGhIb2xlKG1hcmdpbkxheWVyLCBtYXJnaW5RdWFkLCBib3JkZXJRdWFkKTsK
ICAgICBsYXllclBhdGhXaXRoSG9sZShib3JkZXJMYXllciwgYm9yZGVyUXVhZCwgcGFkZGluZ1F1
YWQpOwpAQCAtMjk4LDEwICsyOTgsMTAgQEAgLSAodm9pZClfbGF5b3V0Rm9yUmVjdHNIaWdobGln
aHQ6KEluc3BlY3Rvck92ZXJsYXk6OkhpZ2hsaWdodCopaGlnaGxpZ2h0IHBhcmVudDoKIAogICAg
IFtzZWxmIF9hdHRhY2g6cGFyZW50TGF5ZXIgbnVtTGF5ZXJzOm51bUxheWVyc107CiAKLSAgICBD
R0NvbG9yUmVmIGNvbnRlbnRDb2xvciA9IGNhY2hlZENHQ29sb3IoaGlnaGxpZ2h0LT5jb250ZW50
Q29sb3IpOworICAgIGF1dG8gY29udGVudENvbG9yID0gY2FjaGVkQ0dDb2xvcihoaWdobGlnaHQt
PmNvbnRlbnRDb2xvcik7CiAgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgbnVtTGF5ZXJz
OyArK2kpIHsKICAgICAgICAgQ0FTaGFwZUxheWVyICpsYXllciA9IFtfbGF5ZXJzIG9iamVjdEF0
SW5kZXg6aV07Ci0gICAgICAgIGxheWVyLmZpbGxDb2xvciA9IGNvbnRlbnRDb2xvcjsKKyAgICAg
ICAgbGF5ZXIuZmlsbENvbG9yID0gY29udGVudENvbG9yLmdldCgpOwogICAgICAgICBsYXllclBh
dGgobGF5ZXIsIGhpZ2hsaWdodC0+cXVhZHNbaV0pOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IGMzZTNlYmVhOWM1MDkyZGFkMTJk
MjRkZjBjMDQ0ZTU1NzcyZGRiN2EuLjViYmM2ZjZkNzlhZGZmZWY4MjljOWNhN2E5ZGNmMjllMGFh
NzNjYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJh
bWUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpA
QCAtMTAxNCw5ICsxMDE0LDkgQEAgLSAoQ0dDb2xvclJlZilfYm9keUJhY2tncm91bmRDb2xvcgog
ICAgIGlmICghY29sb3IuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gbmlsOwogI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQotICAgIHJldHVybiBuc0NvbG9yKGNvbG9yKTsKKyAgICByZXR1cm4g
bnNDb2xvcihjb2xvcikuYXV0b3JlbGVhc2UoKTsKICNlbHNlCi0gICAgcmV0dXJuIGNhY2hlZENH
Q29sb3IoY29sb3IpOworICAgIHJldHVybiBjYWNoZWRDR0NvbG9yKGNvbG9yKS5hdXRvcmVsZWFz
ZSgpOwogI2VuZGlmCiB9CiAKQEAgLTE0MDIsNyArMTQwMiw3IEBAIC0gKENHQ29sb3JSZWYpY2Fy
ZXRDb2xvcgogICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgYXV0
byBjb2xvciA9IFdlYkNvcmU6OkNhcmV0QmFzZTo6Y29tcHV0ZUNhcmV0Q29sb3IocmVuZGVyZXIt
PnN0eWxlKCksIHJlbmRlcmVyLT5lbGVtZW50KCkpOwotICAgIHJldHVybiBjb2xvci5pc1ZhbGlk
KCkgPyBjYWNoZWRDR0NvbG9yKGNvbG9yKSA6IG5pbDsKKyAgICByZXR1cm4gY29sb3IuaXNWYWxp
ZCgpID8gY2FjaGVkQ0dDb2xvcihjb2xvcikuYXV0b3JlbGVhc2UoKSA6IG5pbDsKIH0KIAogLSAo
TlNWaWV3ICopZG9jdW1lbnRWaWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViRnJhbWVWaWV3Lm1tCmluZGV4IGU5YTdiZTY0OTk0ZjI5MWJlMTEzOWY0ZWJmY2Q0MjYw
YTMyZmEzYTMuLmQ1ZWRhZTRlYzY1MWM2ZWViMzNmMmY0NGRlY2UzZDE5ZjczMzU4MzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tCkBAIC00
OTUsNyArNDk1LDcgQEAgLSAodm9pZClkcmF3UmVjdDooTlNSZWN0KXJlY3QKICAgICAgICAgICAg
IE5TUmVjdEZpbGwocmVjdCk7CiAjZWxzZQogICAgICAgICAgICAgQ0dDb250ZXh0UmVmIGNnQ29u
dGV4dCA9IFdLR2V0Q3VycmVudEdyYXBoaWNzQ29udGV4dCgpOwotICAgICAgICAgICAgQ0dDb250
ZXh0U2V0RmlsbENvbG9yV2l0aENvbG9yKGNnQ29udGV4dCwgV2ViQ29yZTo6Y2FjaGVkQ0dDb2xv
cihXZWJDb3JlOjpDb2xvcjo6d2hpdGUpKTsKKyAgICAgICAgICAgIENHQ29udGV4dFNldEZpbGxD
b2xvcldpdGhDb2xvcihjZ0NvbnRleHQsIFdlYkNvcmU6OmNhY2hlZENHQ29sb3IoV2ViQ29yZTo6
Q29sb3I6OndoaXRlKS5nZXQoKSk7CiAgICAgICAgICAgICBXS1JlY3RGaWxsKGNnQ29udGV4dCwg
cmVjdCk7CiAjZW5kaWYKICAgICAgICAgfQpAQCAtNTA3LDcgKzUwNyw3IEBAIC0gKHZvaWQpZHJh
d1JlY3Q6KE5TUmVjdClyZWN0CiAgICAgICAgICAgICBOU1JlY3RGaWxsKHJlY3QpOwogI2Vsc2UK
ICAgICAgICAgICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBXS0dldEN1cnJlbnRHcmFwaGlj
c0NvbnRleHQoKTsKLSAgICAgICAgICAgIENHQ29udGV4dFNldEZpbGxDb2xvcldpdGhDb2xvcihj
Z0NvbnRleHQsIFdlYkNvcmU6OmNhY2hlZENHQ29sb3IoV2ViQ29yZTo6Q29sb3I6OmN5YW4pKTsK
KyAgICAgICAgICAgIENHQ29udGV4dFNldEZpbGxDb2xvcldpdGhDb2xvcihjZ0NvbnRleHQsIFdl
YkNvcmU6OmNhY2hlZENHQ29sb3IoV2ViQ29yZTo6Q29sb3I6OmN5YW4pLmdldCgpKTsKICAgICAg
ICAgICAgIFdLUmVjdEZpbGwoY2dDb250ZXh0LCByZWN0KTsKICNlbmRpZgogICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkluZGljYXRlTGF5
ZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkluZGljYXRlTGF5ZXIu
bW0KaW5kZXggYTBkNmU4MjY2Y2M4ZTdkOGJkZTJlYjVlNTQ1ZGFkODZkMWM2NjZiZi4uMDA3ZWEz
NDMwNzA3MzAzZjcxOTkzM2FiZWVjNzMxNTEyN2NlNTgyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJJbmRpY2F0ZUxheWVyLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSW5kaWNhdGVMYXllci5tbQpAQCAtNTEsNyArNTEs
NyBAQCAtIChpZClpbml0V2l0aFdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3CiAKICAgICAvLyBC
bHVlIGhpZ2hsaWdodCBjb2xvci4KICAgICBjb25zdGV4cHIgYXV0byBoaWdobGlnaHRDb2xvciA9
IFNSR0JBPHVpbnQ4X3Q+IHsgMTExLCAxNjgsIDIyMCwgMTY4IH07Ci0gICAgc2VsZi5iYWNrZ3Jv
dW5kQ29sb3IgPSBjYWNoZWRDR0NvbG9yKGhpZ2hsaWdodENvbG9yKTsKKyAgICBzZWxmLmJhY2tn
cm91bmRDb2xvciA9IGNhY2hlZENHQ29sb3IoaGlnaGxpZ2h0Q29sb3IpLmdldCgpOwogCiAgICAg
cmV0dXJuIHNlbGY7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0KaW5kZXggNmQ2OTdkZDg3YmQ3MDZiYTlkYTc0MzlmMmRiMmQ1YzE1YTQ0ZGQzMS4uM2IxMGRm
YWZmYzk3YjRiODBlM2UwMzIxMzM0MTIyYWM2MzQ3ZGRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtODgyLDcgKzg4Miw3IEBAIC0gKFdlYlVJVGV4
dEluZGljYXRvckRhdGEgKilpbml0V2l0aEltYWdlOihDR0ltYWdlUmVmKWltYWdlIHRleHRJbmRp
Y2F0b3JEYXRhOihjCiAgICAgfQogCiAgICAgaWYgKGluZGljYXRvckRhdGEub3B0aW9ucy5jb250
YWlucyhXZWJDb3JlOjpUZXh0SW5kaWNhdG9yT3B0aW9uOjpDb21wdXRlRXN0aW1hdGVkQmFja2dy
b3VuZENvbG9yKSkKLSAgICAgICAgX2VzdGltYXRlZEJhY2tncm91bmRDb2xvciA9IFtQQUw6OmFs
bG9jVUlDb2xvckluc3RhbmNlKCkgaW5pdFdpdGhDR0NvbG9yOmNhY2hlZENHQ29sb3IoaW5kaWNh
dG9yRGF0YS5lc3RpbWF0ZWRCYWNrZ3JvdW5kQ29sb3IpXTsKKyAgICAgICAgX2VzdGltYXRlZEJh
Y2tncm91bmRDb2xvciA9IFtQQUw6OmFsbG9jVUlDb2xvckluc3RhbmNlKCkgaW5pdFdpdGhDR0Nv
bG9yOmNhY2hlZENHQ29sb3IoaW5kaWNhdG9yRGF0YS5lc3RpbWF0ZWRCYWNrZ3JvdW5kQ29sb3Ip
LmdldCgpXTsKIAogICAgIHJldHVybiBzZWxmOwogfQpAQCAtOTUxMCw3ICs5NTEwLDcgQEAgLSAo
dm9pZCl1cGRhdGVUZXh0VG91Y2hCYXIKIAogICAgICAgICAgICAgICAgIENvbG9yIHRleHRDb2xv
ciA9IHN0eWxlLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcik7CiAgICAg
ICAgICAgICAgICAgaWYgKHRleHRDb2xvci5pc1ZhbGlkKCkpCi0gICAgICAgICAgICAgICAgICAg
IFtfcHJpdmF0ZS0+X3RleHRUb3VjaEJhckl0ZW1Db250cm9sbGVyIHNldFRleHRDb2xvcjpuc0Nv
bG9yKHRleHRDb2xvcildOworICAgICAgICAgICAgICAgICAgICBbX3ByaXZhdGUtPl90ZXh0VG91
Y2hCYXJJdGVtQ29udHJvbGxlciBzZXRUZXh0Q29sb3I6bnNDb2xvcih0ZXh0Q29sb3IpLmdldCgp
XTsKIAogICAgICAgICAgICAgICAgIFtfcHJpdmF0ZS0+X3RleHRUb3VjaEJhckl0ZW1Db250cm9s
bGVyIHNldEN1cnJlbnRUZXh0QWxpZ25tZW50Om5zVGV4dEFsaWdubWVudEZyb21SZW5kZXJTdHls
ZShzdHlsZSldOwogCg==
</data>
<flag name="commit-queue"
          id="465972"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441651</attachid>
            <date>2021-10-18 15:58:44 -0700</date>
            <delta_ts>2021-10-19 07:51:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231909-20211018155843.patch</filename>
            <type>text/plain</type>
            <size>87129</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0Mzg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjNjN2ViZGQ4MzA5ZjUw
MjgxNDk5MzJmYzI0MTJjZWNiODRkNTc5YS4uOWFkZDdkODk0NGI0NTI5MjlmMzAyODQ4N2NkZTIx
NjlmMTEyOWVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc0IEBACisyMDIxLTEwLTE4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgY2FjaGVkQ0dDb2xvcigpIGFu
ZCBuc0NvbG9yKCkgc2hvdWxkIHJldHVybiBzbWFydCBwb2ludGVycworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxOTA5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgcjI3NjI4MyBhdHRlbXB0ZWQgdG8gbWFr
ZSBjYWNoZWRDR0NvbG9yKCkgYW5kIG5zQ29sb3IoKSB0aHJlYWQtc2FmZSBidXQgdGhlIGZpeCB3
YXMgaW5jb21wbGV0ZQorICAgICAgICBzaW5jZSB0aG9zZSBmdW5jdGlvbnMgcmV0dXJuIHVucmV0
YWluZWQgb2JqZWN0cyB0aGF0IGNhbiBiZSByZWxlYXNlZCBmcm9tIHRoZSBjYWNoZSBvbiBhbnkK
KyAgICAgICAgb3RoZXIgdGhyZWFkLiBUaGlzIHBhdGNoIHVwZGF0ZXMgY2FjaGVkQ0dDb2xvcigp
IGFuZCBuc0NvbG9yKCkgdG8gcmV0dXJuIGEgUmV0YWluUHRyIHRvIGFkZHJlc3MKKyAgICAgICAg
dGhlIGlzc3VlLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJNYWMubW06CisgICAgICAgIChBWEF0dHJpYnV0ZVN0cmluZ1NldFN0eWxl
KToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0ZvbnRBdHRyaWJ1dGVzQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpGb250QXR0cmlidXRlczo6Y3JlYXRlRGljdGlvbmFyeSBjb25zdCk6Cisg
ICAgICAgICogZWRpdGluZy9jb2NvYS9Gb250U2hhZG93Q29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjpGb250U2hhZG93OjpjcmVhdGVTaGFkb3cgY29uc3QpOgorICAgICAgICAqIGVkaXRpbmcv
Y29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAgKEhUTUxDb252ZXJ0ZXI6OmNvbnZlcnQp
OgorICAgICAgICAoSFRNTENvbnZlcnRlcjo6X2NvbG9yRm9yRWxlbWVudCk6CisgICAgICAgIChI
VE1MQ29udmVydGVyOjpjb21wdXRlZEF0dHJpYnV0ZXNGb3JFbGVtZW50KToKKyAgICAgICAgKEhU
TUxDb252ZXJ0ZXI6Ol9maWxsSW5CbG9jayk6CisgICAgICAgIChIVE1MQ29udmVydGVyOjpfcHJv
Y2Vzc0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6ZWRpdGluZ0F0dHJpYnV0ZWRTdHJpbmcp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6
aW5pdGlhbGl6ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxh
eWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6ZHJhd1RleHRBdFBv
aW50IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9y
bUNBRmlsdGVyc0NvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUZpbHRlcnM6
OnNldEZpbHRlcnNPbkxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2Nv
YS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FM
YXllckNvY29hOjpzZXRCYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1DQUxheWVyQ29jb2E6OnNldEJvcmRlckNvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9Db2xvckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhY2hlZENHQ29sb3IpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50Q0cuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R3JhZGllbnQ6OmNyZWF0ZUNHR3JhZGllbnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNl
dENHRmlsbENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldENHU2hhZG93KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENHOjpkaWRVcGRhdGVTdGF0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQ29sb3JDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0NvbG9yQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9y
bUNvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3Jl
VGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGRBdHRyaWJ1dGVzRm9yQ3VzdG9tRm9udFBh
bGV0dGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRl
eHRDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdGb2N1c1JpbmdBdFRpbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6Y29sb3JGb3JNYXJrZXJMaW5lU3R5bGUpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0Q0c6OmRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbToKKyAgICAgICAgKFdURjo6UmV0YWluUHRyPE5TQ29s
b3I+Pjo6Y3JlYXRlVmFsdWVGb3JLZXkpOgorICAgICAgICAoV2ViQ29yZTo6bnNDb2xvcik6Cisg
ICAgICAgICogcGxhdGZvcm0vbWFjL0xvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UubW06Cisg
ICAgICAgIChXZWJDb3JlOjpMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlOjpMb2NhbERlZmF1
bHRTeXN0ZW1BcHBlYXJhbmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0
ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRD
b2xvcik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6OnNldFVwT3ZlcmhhbmdBcmVhQmFja2dy
b3VuZCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6ZHJhd0NlbGxGb2N1c1JpbmdXaXRoRnJhbWVBdFRpbWUpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkF0dGFjaG1lbnRMYXlv
dXQ6OmxheU91dFRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6OkF0dGFjaG1lbnRMYXlvdXQ6Omxh
eU91dFN1YnRpdGxlKToKKyAgICAgICAgKiB0ZXN0aW5nL2NvY29hL1dlYlZpZXdWaXN1YWxJZGVu
dGlmaWNhdGlvbk92ZXJsYXkubW06CisgICAgICAgICgtW1dlYlZpZXdWaXN1YWxJZGVudGlmaWNh
dGlvbk92ZXJsYXkgaW5pdFdpdGhXZWJWaWV3OmtpbmQ6ZGVwcmVjYXRlZDpdKToKKyAgICAgICAg
KGRyYXdQYXR0ZXJuKToKKwogMjAyMS0xMC0xOCAgVHlsZXIgV2lsY29jayAgPHR5bGVyX3dAYXBw
bGUuY29tPgogCiAgICAgICAgIEFYOiBSZXR1cm4gQVhFbXB0eUdyb3VwIHN1YnJvbGUgZm9yIGdy
b3VwcyB3aXRoIG5vIGFjY2Vzc2libGUgY29udGVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0NjM3M2Y0MjRkMDdl
MjNlMTljZTlmZWY5NzY1Y2M5YzQ2YjQ4MmFlLi5mZWJiNDdiZGIwNTkwZGNjYjllNzRkODRhYmFi
ODI1OWYyNTQyN2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIxLTEwLTE4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgY2FjaGVkQ0dDb2xvcigpIGFu
ZCBuc0NvbG9yKCkgc2hvdWxkIHJldHVybiBzbWFydCBwb2ludGVycworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxOTA5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgcjI3NjI4MyBhdHRlbXB0ZWQgdG8gbWFr
ZSBjYWNoZWRDR0NvbG9yKCkgYW5kIG5zQ29sb3IoKSB0aHJlYWQtc2FmZSBidXQgdGhlIGZpeCB3
YXMgaW5jb21wbGV0ZQorICAgICAgICBzaW5jZSB0aG9zZSBmdW5jdGlvbnMgcmV0dXJuIHVucmV0
YWluZWQgb2JqZWN0cyB0aGF0IGNhbiBiZSByZWxlYXNlZCBmcm9tIHRoZSBjYWNoZSBvbiBhbnkK
KyAgICAgICAgb3RoZXIgdGhyZWFkLiBUaGlzIHBhdGNoIHVwZGF0ZXMgY2FjaGVkQ0dDb2xvcigp
IGFuZCBuc0NvbG9yKCkgdG8gcmV0dXJuIGEgUmV0YWluUHRyIHRvIGFkZHJlc3MKKyAgICAgICAg
dGhlIGlzc3VlLgorCisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
clRyZWVQcm9wZXJ0eUFwcGxpZXIubW06CisgICAgICAgIChXZWJLaXQ6OmNnQ29sb3JGcm9tQ29s
b3IpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXI6OmFw
cGx5UHJvcGVydGllc1RvTGF5ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgdGhlbWVDb2xvcl0pOgorICAgICAgICAo
LVtXS1dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyBfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yXSk6CisgICAgICAgICgtW1dLV2ViVmll
dyBfc2FtcGxlZFBhZ2VUb3BDb2xvcl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbToKKyAgICAgICAgKC1bX1dLQXBwbGljYXRpb25NYW5p
ZmVzdCB0aGVtZUNvbG9yXSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1t
OgorICAgICAgICAoLVtXS1ZpZXcgdW5kZXJsYXlDb2xvcl0pOgorICAgICAgICAoLVtXS1ZpZXcg
X3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
bWFjL1dLV2ViVmlld01hYy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF91bmRlcmxheUNvbG9y
XSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
SW1wbDo6dXBkYXRlVGV4dFRvdWNoQmFyKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6
OnVuZGVybGF5Q29sb3IgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cGFn
ZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvUERG
L1dLUERGSFVEVmlldy5tbToKKyAgICAgICAgKC1bV0tQREZIVURWaWV3IF9zZXR1cExheWVyOl0p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViQ29sb3JQaWNrZXJNYWMubW06CisgICAgICAg
IChXZWJLaXQ6OldlYkNvbG9yUGlja2VyTWFjOjpzZXRTZWxlY3RlZENvbG9yKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29sb3JQaWNrZXJNYWM6OnNob3dDb2xvclBpY2tlcik6CisgICAgICAgICgt
W1dLQ29sb3JQb3BvdmVyTWFjIHNldEFuZFNob3dQaWNrZXI6d2l0aENvbG9yOnN1Z2dlc3Rpb25z
Ol0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0QWNjZW50Q29sb3IpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZW50ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1l
bnQpOgorCiAyMDIxLTEwLTE4ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgUmV2ZXJ0IHIyODQyMTYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZwppbmRleCA0MjU5NzE2NTY4MjE3MTcwMGFkYzQwNTVhMzBhYThiM2I5OWY4NDVlLi5iZjZhYWEz
NWE5MzIxYTc5NGNkYTI3NmQyMDA5Mjc1YzI5ODE5M2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjEtMTAtMTggIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBjYWNoZWRDR0NvbG9yKCkgYW5kIG5zQ29sb3IoKSBzaG91
bGQgcmV0dXJuIHNtYXJ0IHBvaW50ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzE5MDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICByMjc2MjgzIGF0dGVtcHRlZCB0byBtYWtlIGNhY2hlZENHQ29sb3Io
KSBhbmQgbnNDb2xvcigpIHRocmVhZC1zYWZlIGJ1dCB0aGUgZml4IHdhcyBpbmNvbXBsZXRlCisg
ICAgICAgIHNpbmNlIHRob3NlIGZ1bmN0aW9ucyByZXR1cm4gdW5yZXRhaW5lZCBvYmplY3RzIHRo
YXQgY2FuIGJlIHJlbGVhc2VkIGZyb20gdGhlIGNhY2hlIG9uIGFueQorICAgICAgICBvdGhlciB0
aHJlYWQuIFRoaXMgcGF0Y2ggdXBkYXRlcyBjYWNoZWRDR0NvbG9yKCkgYW5kIG5zQ29sb3IoKSB0
byByZXR1cm4gYSBSZXRhaW5QdHIgdG8gYWRkcmVzcworICAgICAgICB0aGUgaXNzdWUuCisKKyAg
ICAgICAgKiBET00vRE9NUkdCQ29sb3IubW06CisgICAgICAgICgtW0RPTVJHQkNvbG9yIGNvbG9y
XSk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUg
X2JvZHlCYWNrZ3JvdW5kQ29sb3JdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06Cisg
ICAgICAgICgtW1dlYlZpZXcgdXBkYXRlVGV4dFRvdWNoQmFyXSk6CisKIDIwMjEtMTAtMTUgIEJy
YWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYktpdCBNYW5hZ2Vk
IE5vdGlmaWNhdGlvbnM6IFNrZWxldG9uIE5vdGlmaWNhdGlvblByb3ZpZGVyLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQppbmRleCAzMjkyNWQwNzBiZWFkYjBkNTNmYzkx
M2IyOTY0ZmY4ODE4ZmEzODEzLi4yZjI5MTg5ODk3Y2IzODVlMWM2YmRmMDVkNjg4MTdjNmRkMmFl
Y2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQpAQCAtODU0LDgg
Kzg1NCw4IEBAIHN0YXRpYyB2b2lkIEFYQXR0cmlidXRlU3RyaW5nU2V0U3R5bGUoTlNNdXRhYmxl
QXR0cmlidXRlZFN0cmluZyogYXR0clN0cmluZywgUmVuCiAgICAgQVhBdHRyaWJ1dGVTdHJpbmdT
ZXRGb250KGF0dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eUZvbnRUZXh0QXR0cmlidXRlLCBzdHls
ZS5mb250Q2FzY2FkZSgpLnByaW1hcnlGb250KCkuZ2V0Q1RGb250KCksIHJhbmdlKTsKICAgICAK
ICAgICAvLyBzZXQgYmFzaWMgY29sb3JzCi0gICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRDb2xvcihh
dHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlGb3JlZ3JvdW5kQ29sb3JUZXh0QXR0cmlidXRlLCBu
c0NvbG9yKHN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSksIHJh
bmdlKTsKLSAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldENvbG9yKGF0dHJTdHJpbmcsIE5TQWNjZXNz
aWJpbGl0eUJhY2tncm91bmRDb2xvclRleHRBdHRyaWJ1dGUsIG5zQ29sb3Ioc3R5bGUudmlzaXRl
ZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKSksIHJhbmdlKTsKKyAg
ICBBWEF0dHJpYnV0ZVN0cmluZ1NldENvbG9yKGF0dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eUZv
cmVncm91bmRDb2xvclRleHRBdHRyaWJ1dGUsIG5zQ29sb3Ioc3R5bGUudmlzaXRlZERlcGVuZGVu
dENvbG9yKENTU1Byb3BlcnR5Q29sb3IpKS5nZXQoKSwgcmFuZ2UpOworICAgIEFYQXR0cmlidXRl
U3RyaW5nU2V0Q29sb3IoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5QmFja2dyb3VuZENvbG9y
VGV4dEF0dHJpYnV0ZSwgbnNDb2xvcihzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kQ29sb3IpKS5nZXQoKSwgcmFuZ2UpOwogICAgIAogICAgIC8vIHNldCBz
dXBlci9zdWIgc2NyaXB0aW5nCiAgICAgVmVydGljYWxBbGlnbiBhbGlnbm1lbnQgPSBzdHlsZS52
ZXJ0aWNhbEFsaWduKCk7CkBAIC04OTAsMTIgKzg5MCwxMiBAQCBzdGF0aWMgdm9pZCBBWEF0dHJp
YnV0ZVN0cmluZ1NldFN0eWxlKE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJpbmcs
IFJlbgogCiAgICAgICAgIGlmIChkZWNvciAmIFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmUpIHsK
ICAgICAgICAgICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0TnVtYmVyKGF0dHJTdHJpbmcsIE5TQWNj
ZXNzaWJpbGl0eVVuZGVybGluZVRleHRBdHRyaWJ1dGUsIEBZRVMsIHJhbmdlKTsKLSAgICAgICAg
ICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0Q29sb3IoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5
VW5kZXJsaW5lQ29sb3JUZXh0QXR0cmlidXRlLCBuc0NvbG9yKGRlY29yYXRpb25TdHlsZXMudW5k
ZXJsaW5lQ29sb3IpLCByYW5nZSk7CisgICAgICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldENv
bG9yKGF0dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eVVuZGVybGluZUNvbG9yVGV4dEF0dHJpYnV0
ZSwgbnNDb2xvcihkZWNvcmF0aW9uU3R5bGVzLnVuZGVybGluZUNvbG9yKS5nZXQoKSwgcmFuZ2Up
OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAoZGVjb3IgJiBUZXh0RGVjb3JhdGlv
bjo6TGluZVRocm91Z2gpIHsKICAgICAgICAgICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0TnVtYmVy
KGF0dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eVN0cmlrZXRocm91Z2hUZXh0QXR0cmlidXRlLCBA
WUVTLCByYW5nZSk7Ci0gICAgICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldENvbG9yKGF0dHJT
dHJpbmcsIE5TQWNjZXNzaWJpbGl0eVN0cmlrZXRocm91Z2hDb2xvclRleHRBdHRyaWJ1dGUsIG5z
Q29sb3IoZGVjb3JhdGlvblN0eWxlcy5saW5ldGhyb3VnaENvbG9yKSwgcmFuZ2UpOworICAgICAg
ICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRDb2xvcihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxp
dHlTdHJpa2V0aHJvdWdoQ29sb3JUZXh0QXR0cmlidXRlLCBuc0NvbG9yKGRlY29yYXRpb25TdHls
ZXMubGluZXRocm91Z2hDb2xvcikuZ2V0KCksIHJhbmdlKTsKICAgICAgICAgfQogICAgIH0KICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRm9udEF0dHJpYnV0
ZXNDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRm9udEF0dHJpYnV0ZXND
b2NvYS5tbQppbmRleCBkMTgzMzM0MjMwYWM4Njg5ZTk2YzBkNDg0NjRkODE1YTc5MWYxYTUxLi4y
YTNjMWU0ODYxZDJjYjM4NTdjMjk4YWFkMWM5ZmM4MjA4ZWE5OWIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0ZvbnRBdHRyaWJ1dGVzQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9Gb250QXR0cmlidXRlc0NvY29hLm1tCkBAIC05MSwx
MCArOTEsMTAgQEAgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gRm9udEF0dHJpYnV0ZXM6OmNyZWF0
ZURpY3Rpb25hcnkoKSBjb25zdAogICAgICAgICBhdHRyaWJ1dGVzW05TRm9udEF0dHJpYnV0ZU5h
bWVdID0gZm9udC5nZXQoKTsKIAogICAgIGlmIChmb3JlZ3JvdW5kQ29sb3IuaXNWYWxpZCgpKQot
ICAgICAgICBhdHRyaWJ1dGVzW05TRm9yZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZV0gPSBwbGF0
Zm9ybUNvbG9yKGZvcmVncm91bmRDb2xvcik7CisgICAgICAgIGF0dHJpYnV0ZXNbTlNGb3JlZ3Jv
dW5kQ29sb3JBdHRyaWJ1dGVOYW1lXSA9IHBsYXRmb3JtQ29sb3IoZm9yZWdyb3VuZENvbG9yKS5n
ZXQoKTsKIAogICAgIGlmIChiYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpKQotICAgICAgICBhdHRy
aWJ1dGVzW05TQmFja2dyb3VuZENvbG9yQXR0cmlidXRlTmFtZV0gPSBwbGF0Zm9ybUNvbG9yKGJh
Y2tncm91bmRDb2xvcik7CisgICAgICAgIGF0dHJpYnV0ZXNbTlNCYWNrZ3JvdW5kQ29sb3JBdHRy
aWJ1dGVOYW1lXSA9IHBsYXRmb3JtQ29sb3IoYmFja2dyb3VuZENvbG9yKS5nZXQoKTsKIAogICAg
IGlmIChmb250U2hhZG93LmNvbG9yLmlzVmFsaWQoKSAmJiAoIWZvbnRTaGFkb3cub2Zmc2V0Lmlz
WmVybygpIHx8IGZvbnRTaGFkb3cuYmx1clJhZGl1cykpCiAgICAgICAgIGF0dHJpYnV0ZXNbTlNT
aGFkb3dBdHRyaWJ1dGVOYW1lXSA9IGZvbnRTaGFkb3cuY3JlYXRlU2hhZG93KCkuZ2V0KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0ZvbnRTaGFkb3dDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRm9udFNoYWRvd0NvY29hLm1tCmluZGV4
IDA0NThkMDYxNDZkYjUwZDgyNjA5ZWY0OGUyMjExZTJhM2M5N2YxNmMuLjhlZjhhMDNjYmY1YTI0
ZjA2Yzk3MTAwM2MzOTFhYzU4MzI5ZjNkOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvRm9udFNoYWRvd0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvRm9udFNoYWRvd0NvY29hLm1tCkBAIC00Miw3ICs0Miw3IEBAIFJldGFpblB0cjxO
U1NoYWRvdz4gRm9udFNoYWRvdzo6Y3JlYXRlU2hhZG93KCkgY29uc3QKICNlbGlmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgYXV0byBzaGFkb3cgPSBhZG9wdE5TKFtQQUw6OmdldE5TU2hhZG93
Q2xhc3MoKSBuZXddKTsKICNlbmRpZgotICAgIFtzaGFkb3cgc2V0U2hhZG93Q29sb3I6cGxhdGZv
cm1Db2xvcihjb2xvcildOworICAgIFtzaGFkb3cgc2V0U2hhZG93Q29sb3I6cGxhdGZvcm1Db2xv
cihjb2xvcikuZ2V0KCldOwogICAgIFtzaGFkb3cgc2V0U2hhZG93T2Zmc2V0Om9mZnNldF07CiAg
ICAgW3NoYWRvdyBzZXRTaGFkb3dCbHVyUmFkaXVzOmJsdXJSYWRpdXNdOwogICAgIHJldHVybiBz
aGFkb3c7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252
ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0K
aW5kZXggODQ1OTg0NmE0YWFiMWU3ODU4NTk2YThjMTQ0OWRiYTZiNmY0OTI2YS4uNzljNGYxMjY0
NWNjOTIzMjkzNWU0NjQ1OGNkN2QyODNkN2UxOTNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtMzIyLDcgKzMyMiw3IEBAIHByaXZhdGU6
CiAgICAgICAgIHVuc2lnbmVkIGludCBwYWQ6MjY7CiAgICAgfSBfZmxhZ3M7CiAgICAgCi0gICAg
UGxhdGZvcm1Db2xvciAqX2NvbG9yRm9yRWxlbWVudChFbGVtZW50JiwgQ1NTUHJvcGVydHlJRCk7
CisgICAgUmV0YWluUHRyPFBsYXRmb3JtQ29sb3I+IF9jb2xvckZvckVsZW1lbnQoRWxlbWVudCYs
IENTU1Byb3BlcnR5SUQpOwogICAgIAogICAgIHZvaWQgX3RyYXZlcnNlTm9kZShOb2RlJiwgdW5z
aWduZWQgZGVwdGgsIGJvb2wgZW1iZWRkZWQpOwogICAgIHZvaWQgX3RyYXZlcnNlRm9vdGVyTm9k
ZShFbGVtZW50JiwgdW5zaWduZWQgZGVwdGgpOwpAQCAtNDAwLDggKzQwMCw4IEBAIEF0dHJpYnV0
ZWRTdHJpbmcgSFRNTENvbnZlcnRlcjo6Y29udmVydCgpCiAKICAgICBEb2N1bWVudCYgZG9jdW1l
bnQgPSBjb21tb25BbmNlc3RvckNvbnRhaW5lci0+ZG9jdW1lbnQoKTsKICAgICBpZiAoYXV0byog
Ym9keSA9IGRvY3VtZW50LmJvZHlPckZyYW1lc2V0KCkpIHsKLSAgICAgICAgaWYgKFBsYXRmb3Jt
Q29sb3IgKmJhY2tncm91bmRDb2xvciA9IF9jb2xvckZvckVsZW1lbnQoKmJvZHksIENTU1Byb3Bl
cnR5QmFja2dyb3VuZENvbG9yKSkKLSAgICAgICAgICAgIFtfZG9jdW1lbnRBdHRycyBzZXRPYmpl
Y3Q6YmFja2dyb3VuZENvbG9yIGZvcktleTpOU0JhY2tncm91bmRDb2xvckRvY3VtZW50QXR0cmli
dXRlXTsKKyAgICAgICAgaWYgKGF1dG8gYmFja2dyb3VuZENvbG9yID0gX2NvbG9yRm9yRWxlbWVu
dCgqYm9keSwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpKQorICAgICAgICAgICAgW19kb2N1
bWVudEF0dHJzIHNldE9iamVjdDpiYWNrZ3JvdW5kQ29sb3IuZ2V0KCkgZm9yS2V5Ok5TQmFja2dy
b3VuZENvbG9yRG9jdW1lbnRBdHRyaWJ1dGVdOwogICAgIH0KIAogICAgIF9kb21SYW5nZVN0YXJ0
SW5kZXggPSAwOwpAQCAtOTA1LDEzICs5MDUsMTMgQEAgQ29sb3IgSFRNTENvbnZlcnRlckNhY2hl
czo6Y29sb3JQcm9wZXJ0eVZhbHVlRm9yTm9kZShOb2RlJiBub2RlLCBDU1NQcm9wZXJ0eUlEIHAK
ICAgICByZXR1cm4gQ29sb3IoKTsKIH0KIAotUGxhdGZvcm1Db2xvciAqSFRNTENvbnZlcnRlcjo6
X2NvbG9yRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5
SWQpCitSZXRhaW5QdHI8UGxhdGZvcm1Db2xvcj4gSFRNTENvbnZlcnRlcjo6X2NvbG9yRm9yRWxl
bWVudChFbGVtZW50JiBlbGVtZW50LCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SWQpCiB7CiAgICAg
Q29sb3IgcmVzdWx0ID0gX2NhY2hlcy0+Y29sb3JQcm9wZXJ0eVZhbHVlRm9yTm9kZShlbGVtZW50
LCBwcm9wZXJ0eUlkKTsKICAgICBpZiAoIXJlc3VsdC5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVy
biBuaWw7Ci0gICAgUGxhdGZvcm1Db2xvciAqcGxhdGZvcm1SZXN1bHQgPSBwbGF0Zm9ybUNvbG9y
KHJlc3VsdCk7Ci0gICAgaWYgKFtbUGxhdGZvcm1Db2xvckNsYXNzIGNsZWFyQ29sb3JdIGlzRXF1
YWw6cGxhdGZvcm1SZXN1bHRdIHx8IChbcGxhdGZvcm1SZXN1bHQgYWxwaGFDb21wb25lbnRdID09
IDAuMCkpCisgICAgYXV0byBwbGF0Zm9ybVJlc3VsdCA9IHBsYXRmb3JtQ29sb3IocmVzdWx0KTsK
KyAgICBpZiAoW1tQbGF0Zm9ybUNvbG9yQ2xhc3MgY2xlYXJDb2xvcl0gaXNFcXVhbDpwbGF0Zm9y
bVJlc3VsdC5nZXQoKV0gfHwgKFtwbGF0Zm9ybVJlc3VsdCBhbHBoYUNvbXBvbmVudF0gPT0gMC4w
KSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICByZXR1cm4gcGxhdGZvcm1SZXN1bHQ7CiB9CkBA
IC05MzMsOSArOTMzLDkgQEAgTlNEaWN0aW9uYXJ5ICpIVE1MQ29udmVydGVyOjpjb21wdXRlZEF0
dHJpYnV0ZXNGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiAKICAgICBQbGF0Zm9ybUZvbnQg
KmZvbnQgPSBuaWw7CiAgICAgUGxhdGZvcm1Gb250ICphY3R1YWxGb250ID0gX2ZvbnQoZWxlbWVu
dCk7Ci0gICAgUGxhdGZvcm1Db2xvciAqZm9yZWdyb3VuZENvbG9yID0gX2NvbG9yRm9yRWxlbWVu
dChlbGVtZW50LCBDU1NQcm9wZXJ0eUNvbG9yKTsKLSAgICBQbGF0Zm9ybUNvbG9yICpiYWNrZ3Jv
dW5kQ29sb3IgPSBfY29sb3JGb3JFbGVtZW50KGVsZW1lbnQsIENTU1Byb3BlcnR5QmFja2dyb3Vu
ZENvbG9yKTsKLSAgICBQbGF0Zm9ybUNvbG9yICpzdHJva2VDb2xvciA9IF9jb2xvckZvckVsZW1l
bnQoZWxlbWVudCwgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3IpOworICAgIGF1dG8g
Zm9yZWdyb3VuZENvbG9yID0gX2NvbG9yRm9yRWxlbWVudChlbGVtZW50LCBDU1NQcm9wZXJ0eUNv
bG9yKTsKKyAgICBhdXRvIGJhY2tncm91bmRDb2xvciA9IF9jb2xvckZvckVsZW1lbnQoZWxlbWVu
dCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOworICAgIGF1dG8gc3Ryb2tlQ29sb3IgPSBf
Y29sb3JGb3JFbGVtZW50KGVsZW1lbnQsIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9y
KTsKIAogICAgIGZsb2F0IGZvbnRTaXplID0gMDsKICAgICBpZiAoIV9jYWNoZXMtPmZsb2F0UHJv
cGVydHlWYWx1ZUZvck5vZGUoZWxlbWVudCwgQ1NTUHJvcGVydHlGb250U2l6ZSwgZm9udFNpemUp
IHx8IGZvbnRTaXplIDw9IDAuMCkKQEAgLTEwMDEsOSArMTAwMSw5IEBAIE5TRGljdGlvbmFyeSAq
SFRNTENvbnZlcnRlcjo6Y29tcHV0ZWRBdHRyaWJ1dGVzRm9yRWxlbWVudChFbGVtZW50JiBlbGVt
ZW50KQogICAgIGlmIChmb250KQogICAgICAgICBbYXR0cnMgc2V0T2JqZWN0OmZvbnQgZm9yS2V5
Ok5TRm9udEF0dHJpYnV0ZU5hbWVdOwogICAgIGlmIChmb3JlZ3JvdW5kQ29sb3IpCi0gICAgICAg
IFthdHRycyBzZXRPYmplY3Q6Zm9yZWdyb3VuZENvbG9yIGZvcktleTpOU0ZvcmVncm91bmRDb2xv
ckF0dHJpYnV0ZU5hbWVdOworICAgICAgICBbYXR0cnMgc2V0T2JqZWN0OmZvcmVncm91bmRDb2xv
ci5nZXQoKSBmb3JLZXk6TlNGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lXTsKICAgICBpZiAo
YmFja2dyb3VuZENvbG9yICYmICFfY2FjaGVzLT5lbGVtZW50SGFzT3duQmFja2dyb3VuZENvbG9y
KGVsZW1lbnQpKQotICAgICAgICBbYXR0cnMgc2V0T2JqZWN0OmJhY2tncm91bmRDb2xvciBmb3JL
ZXk6TlNCYWNrZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lXTsKKyAgICAgICAgW2F0dHJzIHNldE9i
amVjdDpiYWNrZ3JvdW5kQ29sb3IuZ2V0KCkgZm9yS2V5Ok5TQmFja2dyb3VuZENvbG9yQXR0cmli
dXRlTmFtZV07CiAKICAgICBmbG9hdCBzdHJva2VXaWR0aCA9IDAuMDsKICAgICBpZiAoX2NhY2hl
cy0+ZmxvYXRQcm9wZXJ0eVZhbHVlRm9yTm9kZShlbGVtZW50LCBDU1NQcm9wZXJ0eVdlYmtpdFRl
eHRTdHJva2VXaWR0aCwgc3Ryb2tlV2lkdGgpKSB7CkBAIC0xMDExLDcgKzEwMTEsNyBAQCBOU0Rp
Y3Rpb25hcnkgKkhUTUxDb252ZXJ0ZXI6OmNvbXB1dGVkQXR0cmlidXRlc0ZvckVsZW1lbnQoRWxl
bWVudCYgZWxlbWVudCkKICAgICAgICAgW2F0dHJzIHNldE9iamVjdDpAKHRleHRTdHJva2VXaWR0
aCkgZm9yS2V5Ok5TU3Ryb2tlV2lkdGhBdHRyaWJ1dGVOYW1lXTsKICAgICB9CiAgICAgaWYgKHN0
cm9rZUNvbG9yKQotICAgICAgICBbYXR0cnMgc2V0T2JqZWN0OnN0cm9rZUNvbG9yIGZvcktleTpO
U1N0cm9rZUNvbG9yQXR0cmlidXRlTmFtZV07CisgICAgICAgIFthdHRycyBzZXRPYmplY3Q6c3Ry
b2tlQ29sb3IuZ2V0KCkgZm9yS2V5Ok5TU3Ryb2tlQ29sb3JBdHRyaWJ1dGVOYW1lXTsKIAogICAg
IFN0cmluZyBmb250S2VybmluZyA9IF9jYWNoZXMtPnByb3BlcnR5VmFsdWVGb3JOb2RlKGVsZW1l
bnQsIENTU1Byb3BlcnR5V2Via2l0Rm9udEtlcm5pbmcpOwogICAgIFN0cmluZyBsZXR0ZXJTcGFj
aW5nID0gX2NhY2hlcy0+cHJvcGVydHlWYWx1ZUZvck5vZGUoZWxlbWVudCwgQ1NTUHJvcGVydHlM
ZXR0ZXJTcGFjaW5nKTsKQEAgLTE0NDgsMjEgKzE0NDgsMjEgQEAgdm9pZCBIVE1MQ29udmVydGVy
OjpfZmlsbEluQmxvY2soTlNUZXh0QmxvY2sgKmJsb2NrLCBFbGVtZW50JiBlbGVtZW50LCBQbGF0
Zm9ybUMKICAgICBlbHNlCiAgICAgICAgIFtibG9jayBzZXRXaWR0aDpleHRyYU1hcmdpbiB0eXBl
Ok5TVGV4dEJsb2NrQWJzb2x1dGVWYWx1ZVR5cGUgZm9yTGF5ZXI6TlNUZXh0QmxvY2tNYXJnaW4g
ZWRnZTpOU01heFlFZGdlXTsKICAgICAKLSAgICBQbGF0Zm9ybUNvbG9yICpjb2xvciA9IG5pbDsK
KyAgICBSZXRhaW5QdHI8UGxhdGZvcm1Db2xvcj4gY29sb3I7CiAgICAgaWYgKChjb2xvciA9IF9j
b2xvckZvckVsZW1lbnQoZWxlbWVudCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpKSkKLSAg
ICAgICAgW2Jsb2NrIHNldEJhY2tncm91bmRDb2xvcjpjb2xvcl07CisgICAgICAgIFtibG9jayBz
ZXRCYWNrZ3JvdW5kQ29sb3I6Y29sb3IuZ2V0KCldOwogICAgIGlmICghY29sb3IgJiYgYmFja2dy
b3VuZENvbG9yKQogICAgICAgICBbYmxvY2sgc2V0QmFja2dyb3VuZENvbG9yOmJhY2tncm91bmRD
b2xvcl07CiAgICAgCiAgICAgaWYgKChjb2xvciA9IF9jb2xvckZvckVsZW1lbnQoZWxlbWVudCwg
Q1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IpKSkKLSAgICAgICAgW2Jsb2NrIHNldEJvcmRlckNv
bG9yOmNvbG9yIGZvckVkZ2U6TlNNaW5YRWRnZV07CisgICAgICAgIFtibG9jayBzZXRCb3JkZXJD
b2xvcjpjb2xvci5nZXQoKSBmb3JFZGdlOk5TTWluWEVkZ2VdOwogICAgIAogICAgIGlmICgoY29s
b3IgPSBfY29sb3JGb3JFbGVtZW50KGVsZW1lbnQsIENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3Ip
KSkKLSAgICAgICAgW2Jsb2NrIHNldEJvcmRlckNvbG9yOmNvbG9yIGZvckVkZ2U6TlNNaW5ZRWRn
ZV07CisgICAgICAgIFtibG9jayBzZXRCb3JkZXJDb2xvcjpjb2xvci5nZXQoKSBmb3JFZGdlOk5T
TWluWUVkZ2VdOwogICAgIGlmICgoY29sb3IgPSBfY29sb3JGb3JFbGVtZW50KGVsZW1lbnQsIENT
U1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvcikpKQotICAgICAgICBbYmxvY2sgc2V0Qm9yZGVyQ29s
b3I6Y29sb3IgZm9yRWRnZTpOU01heFhFZGdlXTsKKyAgICAgICAgW2Jsb2NrIHNldEJvcmRlckNv
bG9yOmNvbG9yLmdldCgpIGZvckVkZ2U6TlNNYXhYRWRnZV07CiAgICAgaWYgKChjb2xvciA9IF9j
b2xvckZvckVsZW1lbnQoZWxlbWVudCwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvcikpKQot
ICAgICAgICBbYmxvY2sgc2V0Qm9yZGVyQ29sb3I6Y29sb3IgZm9yRWRnZTpOU01heFlFZGdlXTsK
KyAgICAgICAgW2Jsb2NrIHNldEJvcmRlckNvbG9yOmNvbG9yLmdldCgpIGZvckVkZ2U6TlNNYXhZ
RWRnZV07CiB9CiAKIHN0YXRpYyBpbmxpbmUgQk9PTCByZWFkMkRpZ2l0TnVtYmVyKGNvbnN0IGNo
YXIgKipwcCwgaW50OF90ICpvdXR2YWwpCkBAIC0xNzY2LDEwICsxNzY2LDEwIEBAIEJPT0wgSFRN
TENvbnZlcnRlcjo6X3Byb2Nlc3NFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIE5TSW50ZWdlciBk
ZXB0aCkKICAgICAgICAgbV90ZXh0VGFibGVGb290ZXJzLmFkZCgoX19icmlkZ2UgQ0ZUeXBlUmVm
KVtfdGV4dFRhYmxlcyBsYXN0T2JqZWN0XSwgJmVsZW1lbnQpOwogICAgICAgICByZXR2YWwgPSBO
TzsKICAgICB9IGVsc2UgaWYgKGRpc3BsYXlWYWx1ZSA9PSAidGFibGUtcm93IiAmJiBbX3RleHRU
YWJsZXMgY291bnRdID4gMCkgewotICAgICAgICBQbGF0Zm9ybUNvbG9yICpjb2xvciA9IF9jb2xv
ckZvckVsZW1lbnQoZWxlbWVudCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOworICAgICAg
ICBhdXRvIGNvbG9yID0gX2NvbG9yRm9yRWxlbWVudChlbGVtZW50LCBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRDb2xvcik7CiAgICAgICAgIGlmICghY29sb3IpCiAgICAgICAgICAgICBjb2xvciA9IChQ
bGF0Zm9ybUNvbG9yICopW1BsYXRmb3JtQ29sb3JDbGFzcyBjbGVhckNvbG9yXTsKLSAgICAgICAg
W190ZXh0VGFibGVSb3dCYWNrZ3JvdW5kQ29sb3JzIGFkZE9iamVjdDpjb2xvcl07CisgICAgICAg
IFtfdGV4dFRhYmxlUm93QmFja2dyb3VuZENvbG9ycyBhZGRPYmplY3Q6Y29sb3IuZ2V0KCldOwog
ICAgIH0gZWxzZSBpZiAoZGlzcGxheVZhbHVlID09ICJ0YWJsZS1jZWxsIikgewogICAgICAgICB3
aGlsZSAoW190ZXh0VGFibGVzIGNvdW50XSA8IFtfdGV4dEJsb2NrcyBjb3VudF0gKyAxKQogICAg
ICAgICAgICAgX2FkZFRhYmxlRm9yRWxlbWVudChuaWwpOwpAQCAtMjQyNiwxMyArMjQyNiwxMyBA
QCBBdHRyaWJ1dGVkU3RyaW5nIGVkaXRpbmdBdHRyaWJ1dGVkU3RyaW5nKGNvbnN0IFNpbXBsZVJh
bmdlJiByYW5nZSwgSW5jbHVkZUltYWdlcwogCiAgICAgICAgIENvbG9yIGZvcmVncm91bmRDb2xv
ciA9IHN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcldpdGhDb2xvckZpbHRlcihDU1NQcm9wZXJ0
eUNvbG9yKTsKICAgICAgICAgaWYgKGZvcmVncm91bmRDb2xvci5pc1Zpc2libGUoKSkKLSAgICAg
ICAgICAgIFthdHRycyBzZXRPYmplY3Q6bnNDb2xvcihmb3JlZ3JvdW5kQ29sb3IpIGZvcktleTpO
U0ZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdOworICAgICAgICAgICAgW2F0dHJzIHNldE9i
amVjdDpuc0NvbG9yKGZvcmVncm91bmRDb2xvcikuZ2V0KCkgZm9yS2V5Ok5TRm9yZWdyb3VuZENv
bG9yQXR0cmlidXRlTmFtZV07CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIFthdHRycyByZW1v
dmVPYmplY3RGb3JLZXk6TlNGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lXTsKIAogICAgICAg
ICBDb2xvciBiYWNrZ3JvdW5kQ29sb3IgPSBzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3JXaXRo
Q29sb3JGaWx0ZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOwogICAgICAgICBpZiAoYmFj
a2dyb3VuZENvbG9yLmlzVmlzaWJsZSgpKQotICAgICAgICAgICAgW2F0dHJzIHNldE9iamVjdDpu
c0NvbG9yKGJhY2tncm91bmRDb2xvcikgZm9yS2V5Ok5TQmFja2dyb3VuZENvbG9yQXR0cmlidXRl
TmFtZV07CisgICAgICAgICAgICBbYXR0cnMgc2V0T2JqZWN0Om5zQ29sb3IoYmFja2dyb3VuZENv
bG9yKS5nZXQoKSBmb3JLZXk6TlNCYWNrZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lXTsKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgW2F0dHJzIHJlbW92ZU9iamVjdEZvcktleTpOU0JhY2tncm91
bmRDb2xvckF0dHJpYnV0ZU5hbWVdOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db2xvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3IuaAppbmRleCBhN2NmMjA4ZjA3MGE5ZjkwMDc3NzEzYTZiODFmYWRiNjhiNWM4YmQyLi4w
MGIxNTEyZGU3OTJmNThkNDZjZDJmMzdiNDk5YTVlNzkyNjJiZmNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgKQEAgLTI3MCw3ICsyNzAsNyBAQCBib29sIG91dE9m
TGluZUNvbXBvbmVudHNzRXF1YWwoY29uc3QgQ29sb3ImLCBjb25zdCBDb2xvciYpOwogYm9vbCBv
dXRPZkxpbmVDb21wb25lbnRzc0VxdWFsSWdub3JpbmdTZW1hbnRpY0NvbG9yKGNvbnN0IENvbG9y
JiwgY29uc3QgQ29sb3ImKTsKIAogI2lmIFVTRShDRykKLVdFQkNPUkVfRVhQT1JUIENHQ29sb3JS
ZWYgY2FjaGVkQ0dDb2xvcihjb25zdCBDb2xvciYpOworV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRy
PENHQ29sb3JSZWY+IGNhY2hlZENHQ29sb3IoY29uc3QgQ29sb3ImKTsKIFdFQkNPUkVfRVhQT1JU
IENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gcGxhdGZvcm1Db252ZXJ0Q29sb3JDb21wb25lbnRz
KENvbG9yU3BhY2UsIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4sIGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYpOwogV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxTUkdCQTx1aW50OF90
Pj4gcm91bmRBbmRDbGFtcFRvU1JHQkFMb3NzeShDR0NvbG9yUmVmKTsKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ci5tbQppbmRleCA1MjU0N2I1OWMxOWZhODdiYTQyYjY1MzQyNTU3OWI0ZDMwNjA5YjU2Li5jMTI2
YjkzZTg3MDZmOTU1MzBmNjEyNmY4YWQyNWZhZjYyMjJhZDcxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tbQpAQCAt
MTYzLDcgKzE2Myw3IEBAIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpMb2NhbFNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllcihSZXRhaW5QdHI8QVZTYW1wbGVCCiAKIHZvaWQgTG9jYWxTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmluaXRpYWxpemUoYm9vbCBoaWRlUm9vdExheWVyLCBJbnRT
aXplIHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBkaWRTdWNjZWVkKT4mJiBjYWxs
YmFjaykKIHsKLSAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKS5iYWNrZ3JvdW5k
Q29sb3IgPSBjYWNoZWRDR0NvbG9yKENvbG9yOjpibGFjayk7CisgICAgbV9zYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIuZ2V0KCkuYmFja2dyb3VuZENvbG9yID0gY2FjaGVkQ0dDb2xvcihDb2xvcjo6
YmxhY2spLmdldCgpOwogICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpLmFuY2hv
clBvaW50ID0geyAuNSwgLjUgfTsKICAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQo
KS5uZWVkc0Rpc3BsYXlPbkJvdW5kc0NoYW5nZSA9IFlFUzsKICAgICBtX3NhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllci5nZXQoKS52aWRlb0dyYXZpdHkgPSBBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXpl
QXNwZWN0RmlsbDsKQEAgLTE3MSw3ICsxNzEsNyBAQCB2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjppbml0aWFsaXplKGJvb2wgaGlkZVJvb3RMYXllciwgSW50U2l6ZSBzaXplLAog
ICAgIG1fcm9vdExheWVyID0gYWRvcHROUyhbW0NBTGF5ZXIgYWxsb2NdIGluaXRdKTsKICAgICBt
X3Jvb3RMYXllci5nZXQoKS5oaWRkZW4gPSBoaWRlUm9vdExheWVyOwogCi0gICAgbV9yb290TGF5
ZXIuZ2V0KCkuYmFja2dyb3VuZENvbG9yID0gY2FjaGVkQ0dDb2xvcihDb2xvcjo6YmxhY2spOwor
ICAgIG1fcm9vdExheWVyLmdldCgpLmJhY2tncm91bmRDb2xvciA9IGNhY2hlZENHQ29sb3IoQ29s
b3I6OmJsYWNrKS5nZXQoKTsKICAgICBtX3Jvb3RMYXllci5nZXQoKS5uZWVkc0Rpc3BsYXlPbkJv
dW5kc0NoYW5nZSA9IFlFUzsKIAogICAgIG1fcm9vdExheWVyLmdldCgpLmJvdW5kcyA9IENHUmVj
dE1ha2UoMCwgMCwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwCmlu
ZGV4IDFmMzkyZjU0NzczOTRjYzNjNzc1ZmE0ZDE5OGM3NDM4MjkyYWE1MmQuLjFlZTg5YjNlZWQ1
N2ZkNDYwMDAwYjMzMzA0NzJjOWMxYTVmYzViZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcApAQCAtMTU5LDEx
ICsxNTksMTIgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdUZXh0QXRQb2ludChDR0NvbnRl
eHRSZWYgY29udGV4dCwgQ0dGbG9hdCB4LCBDR0Zsb2F0IHkKICAgICAgICAga0NUU3Ryb2tlV2lk
dGhBdHRyaWJ1dGVOYW1lLAogICAgICAgICBrQ1RTdHJva2VDb2xvckF0dHJpYnV0ZU5hbWUsCiAg
ICAgfTsKKyAgICBhdXRvIHN0cm9rZUNHQ29sb3IgPSBjYWNoZWRDR0NvbG9yKHN0cm9rZUNvbG9y
KTsKICAgICBDRlR5cGVSZWYgdmFsdWVzW10gPSB7CiAgICAgICAgIGZvbnQuZ2V0KCksCiAgICAg
ICAgIGtDRkJvb2xlYW5UcnVlLAogICAgICAgICBzdHJva2VXaWR0aE51bWJlci5nZXQoKSwKLSAg
ICAgICAgY2FjaGVkQ0dDb2xvcihzdHJva2VDb2xvciksCisgICAgICAgIHN0cm9rZUNHQ29sb3Iu
Z2V0KCksCiAgICAgfTsKIAogICAgIGF1dG8gYXR0cmlidXRlcyA9IGFkb3B0Q0YoQ0ZEaWN0aW9u
YXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtleXMsIHZhbHVlcywgV1RGX0FSUkFZX0xF
TkdUSChrZXlzKSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rp
b25hcnlWYWx1ZUNhbGxCYWNrcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUZpbHRlcnNDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FGaWx0ZXJzQ29jb2Eu
bW0KaW5kZXggZDRmYTNjNGJmYWQzNGFhZjMwOTNhOWYwMjQ4NmJiNzI3Zjk4ZDRhYS4uMmQwMjAx
NmJiOGVlNjNlYjdlM2YzYTczZjNjYTY2OWJiMDllMGU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUZpbHRlcnNDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9y
bUNBRmlsdGVyc0NvY29hLm1tCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgUGxhdGZvcm1DQUZpbHRl
cnM6OnNldEZpbHRlcnNPbkxheWVyKFBsYXRmb3JtTGF5ZXIqIGxheWVyLCBjb25zdCBGaWx0ZXJP
cGVyCiAgICAgICAgICAgICAvLyA8cmRhcjovL3Byb2JsZW0vMTA5NTk5Njk+IEhhbmRsZSBjYXNl
IHdoZXJlIGRyb3Atc2hhZG93IGlzIG5vdCB0aGUgbGFzdCBmaWx0ZXIuCiAgICAgICAgICAgICBj
b25zdCBhdXRvJiBkcm9wU2hhZG93T3BlcmF0aW9uID0gZG93bmNhc3Q8RHJvcFNoYWRvd0ZpbHRl
ck9wZXJhdGlvbj4oZmlsdGVyT3BlcmF0aW9uKTsKICAgICAgICAgICAgIFtsYXllciBzZXRTaGFk
b3dPZmZzZXQ6Q0dTaXplTWFrZShkcm9wU2hhZG93T3BlcmF0aW9uLngoKSwgZHJvcFNoYWRvd09w
ZXJhdGlvbi55KCkpXTsKLSAgICAgICAgICAgIFtsYXllciBzZXRTaGFkb3dDb2xvcjpjYWNoZWRD
R0NvbG9yKGRyb3BTaGFkb3dPcGVyYXRpb24uY29sb3IoKSldOworICAgICAgICAgICAgW2xheWVy
IHNldFNoYWRvd0NvbG9yOmNhY2hlZENHQ29sb3IoZHJvcFNoYWRvd09wZXJhdGlvbi5jb2xvcigp
KS5nZXQoKV07CiAgICAgICAgICAgICBbbGF5ZXIgc2V0U2hhZG93UmFkaXVzOmRyb3BTaGFkb3dP
cGVyYXRpb24uc3RkRGV2aWF0aW9uKCldOwogICAgICAgICAgICAgW2xheWVyIHNldFNoYWRvd09w
YWNpdHk6MV07CiAgICAgICAgICAgICByZXR1cm4gbmlsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5
ZXJDb2NvYS5tbQppbmRleCBjMDhiYjA3NDk0NjEyNmRmNTY5YTg0MWQwYjU2MWZhOTY3NTdhMzY0
Li4zNGUyNTkwZjU3NzI5NmIyMjM5YmYyODY4MmZjNzU2YWM2NjkwM2FhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9Q
bGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQpAQCAtODI2LDcgKzgyNiw3IEBAIENvbG9yIFBsYXRmb3Jt
Q0FMYXllckNvY29hOjpiYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAogdm9pZCBQbGF0Zm9ybUNBTGF5
ZXJDb2NvYTo6c2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJiB2YWx1ZSkKIHsKICAgICBC
RUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBbbV9sYXllciBzZXRCYWNrZ3JvdW5kQ29s
b3I6Y2FjaGVkQ0dDb2xvcih2YWx1ZSldOworICAgIFttX2xheWVyIHNldEJhY2tncm91bmRDb2xv
cjpjYWNoZWRDR0NvbG9yKHZhbHVlKS5nZXQoKV07CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBU
SU9OUwogfQogCkBAIC04NDEsNyArODQxLDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6
c2V0Qm9yZGVyQ29sb3IoY29uc3QgQ29sb3ImIHZhbHVlKQogewogICAgIGlmICh2YWx1ZS5pc1Zh
bGlkKCkpIHsKICAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgICAgIFtt
X2xheWVyIHNldEJvcmRlckNvbG9yOmNhY2hlZENHQ29sb3IodmFsdWUpXTsKKyAgICAgICAgW21f
bGF5ZXIgc2V0Qm9yZGVyQ29sb3I6Y2FjaGVkQ0dDb2xvcih2YWx1ZSkuZ2V0KCldOwogICAgICAg
ICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAgICAgfSBlbHNlIHsKICAgICAgICAgQkVHSU5f
QkxPQ0tfT0JKQ19FWENFUFRJT05TCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCmluZGV4IGI2
MjhkYTk2Yjg2ZmMyMmFjM2YwY2M1MDkyNmM0ODIzOGY3ZDVmNDYuLmU3NTBmNmRlNmI2ZjM4MDUx
ZDBlYzc5YTJjYWVlNGM1MzQyZTZhZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCkBA
IC01NzcsNyArNTc3LDcgQEAgQ29sb3IgUGxhdGZvcm1DQUxheWVyV2luOjpiYWNrZ3JvdW5kQ29s
b3IoKSBjb25zdAogCiB2b2lkIFBsYXRmb3JtQ0FMYXllcldpbjo6c2V0QmFja2dyb3VuZENvbG9y
KGNvbnN0IENvbG9yJiB2YWx1ZSkKIHsKLSAgICBDQUNGTGF5ZXJTZXRCYWNrZ3JvdW5kQ29sb3Io
bV9sYXllci5nZXQoKSwgY2FjaGVkQ0dDb2xvcih2YWx1ZSkpOworICAgIENBQ0ZMYXllclNldEJh
Y2tncm91bmRDb2xvcihtX2xheWVyLmdldCgpLCBjYWNoZWRDR0NvbG9yKHZhbHVlKS5nZXQoKSk7
CiAgICAgc2V0TmVlZHNDb21taXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbkludGVybmFsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJX
aW5JbnRlcm5hbC5jcHAKaW5kZXggYTZjNDJmZjcyMmVmZGI4N2Q1YjhjZjAwMzQ0YTMxMDM0N2Jl
ZDlmZS4uMjk2ZjkwMTQwMzIzOWY2MTY0NTg3ODMzOThhMTE1OWJkNmE0YzViMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXll
cldpbkludGVybmFsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS93aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwuY3BwCkBAIC0xMjAsNyArMTIwLDcgQEAg
dm9pZCBQbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbDo6ZHJhd1JlcGFpbnRDb3VudGVycyhDQUNG
TGF5ZXJSZWYgY2FMYXllciwgQ0dDb24KICAgICBpZiAoIW93bmVyKCkgfHwgb3duZXIoKS0+dXNl
c1RpbGVkQmFja2luZ0xheWVyKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIENHQ29sb3JSZWYg
YmFja2dyb3VuZENvbG9yID0gbnVsbHB0cjsKKyAgICBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gYmFj
a2dyb3VuZENvbG9yOwogICAgIC8vIE1ha2UgdGhlIGJhY2tncm91bmQgb2YgdGhlIGNvdW50ZXIg
dGhlIHNhbWUgYXMgdGhlIGJvcmRlciBjb2xvciwKICAgICAvLyB1bmxlc3MgdGhlcmUgaXMgbm8g
Ym9yZGVyLCB0aGVuIG1ha2UgaXQgcmVkCiAgICAgZmxvYXQgYm9yZGVyV2lkdGggPSBDQUNGTGF5
ZXJHZXRCb3JkZXJXaWR0aChjYUxheWVyKTsKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIFBsYXRm
b3JtQ0FMYXllcldpbkludGVybmFsOjpkcmF3UmVwYWludENvdW50ZXJzKENBQ0ZMYXllclJlZiBj
YUxheWVyLCBDR0NvbgogICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBjYWNoZWRDR0NvbG9yKENv
bG9yOjpyZWQpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0Q0cgZ3JhcGhpY3NDb250ZXh0KGNvbnRl
eHQpOwotICAgIFBsYXRmb3JtQ0FMYXllcjo6ZHJhd1JlcGFpbnRJbmRpY2F0b3IoZ3JhcGhpY3ND
b250ZXh0LCBvd25lcigpLCBkcmF3Q291bnQsIHJvdW5kQW5kQ2xhbXBUb1NSR0JBTG9zc3koYmFj
a2dyb3VuZENvbG9yKSk7CisgICAgUGxhdGZvcm1DQUxheWVyOjpkcmF3UmVwYWludEluZGljYXRv
cihncmFwaGljc0NvbnRleHQsIG93bmVyKCksIGRyYXdDb3VudCwgcm91bmRBbmRDbGFtcFRvU1JH
QkFMb3NzeShiYWNrZ3JvdW5kQ29sb3IuZ2V0KCkpKTsKIH0KIAogdm9pZCBQbGF0Zm9ybUNBTGF5
ZXJXaW5JbnRlcm5hbDo6aW50ZXJuYWxTZXROZWVkc0Rpc3BsYXkoY29uc3QgRmxvYXRSZWN0KiBk
aXJ0eVJlY3QpCkBAIC0zMTIsNyArMzEyLDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJXaW5JbnRl
cm5hbDo6c2V0Qm9yZGVyV2lkdGgoZmxvYXQgdmFsdWUpCiAKIHZvaWQgUGxhdGZvcm1DQUxheWVy
V2luSW50ZXJuYWw6OnNldEJvcmRlckNvbG9yKGNvbnN0IENvbG9yJiB2YWx1ZSkKIHsKLSAgICBD
QUNGTGF5ZXJTZXRCb3JkZXJDb2xvcihvd25lcigpLT5wbGF0Zm9ybUxheWVyKCksIGNhY2hlZENH
Q29sb3IodmFsdWUpKTsKKyAgICBDQUNGTGF5ZXJTZXRCb3JkZXJDb2xvcihvd25lcigpLT5wbGF0
Zm9ybUxheWVyKCksIGNhY2hlZENHQ29sb3IodmFsdWUpLmdldCgpKTsKIH0KIAogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCmluZGV4
IDEzZWNiMzM2MTg1MmQ1YmMxMjlkZjFhZmUzMjgxOWE3NjAyM2RjZDguLjZmZTNlMTU0M2FjNGRk
MTI4ZTE2ZWQ1NmFhMDg2NTJmMzk5OWZlNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCkBAIC0xNzIsNyArMTcyLDcgQEAgc3RhdGljIFJl
dGFpblB0cjxDR0NvbG9yUmVmPiBjcmVhdGVDR0NvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKICAg
ICByZXR1cm4gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKGNnQ29sb3JTcGFjZSwgY2dGbG9hdENvbXBv
bmVudHMpKTsKIH0KIAotQ0dDb2xvclJlZiBjYWNoZWRDR0NvbG9yKGNvbnN0IENvbG9yJiBjb2xv
cikKK1JldGFpblB0cjxDR0NvbG9yUmVmPiBjYWNoZWRDR0NvbG9yKGNvbnN0IENvbG9yJiBjb2xv
cikKIHsKICAgICBpZiAoYXV0byBzcmdiID0gY29sb3IudHJ5R2V0QXNTUkdCQUJ5dGVzKCkpIHsK
ICAgICAgICAgc3dpdGNoIChQYWNrZWRDb2xvcjo6UkdCQSB7ICpzcmdiIH0udmFsdWUpIHsKQEAg
LTE4Miw3ICsxODIsNyBAQCBDR0NvbG9yUmVmIGNhY2hlZENHQ29sb3IoY29uc3QgQ29sb3ImIGNv
bG9yKQogICAgICAgICAgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKICAgICAgICAg
ICAgICAgICB0cmFuc3BhcmVudENHQ29sb3IuY29uc3RydWN0KGNyZWF0ZUNHQ29sb3IoQ29sb3I6
OnRyYW5zcGFyZW50QmxhY2spKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgcmV0dXJu
IHRyYW5zcGFyZW50Q0dDb2xvci5nZXQoKS5nZXQoKTsKKyAgICAgICAgICAgIHJldHVybiB0cmFu
c3BhcmVudENHQ29sb3IuZ2V0KCk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBQYWNrZWRDb2xv
cjo6UkdCQSB7IENvbG9yOjpibGFjayB9LnZhbHVlOiB7CiAgICAgICAgICAgICBzdGF0aWMgTGF6
eU5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDR0NvbG9yUmVmPj4gYmxhY2tDR0NvbG9yOwpAQCAt
MTkwLDcgKzE5MCw3IEBAIENHQ29sb3JSZWYgY2FjaGVkQ0dDb2xvcihjb25zdCBDb2xvciYgY29s
b3IpCiAgICAgICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewogICAgICAgICAg
ICAgICAgIGJsYWNrQ0dDb2xvci5jb25zdHJ1Y3QoY3JlYXRlQ0dDb2xvcihDb2xvcjo6YmxhY2sp
KTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgcmV0dXJuIGJsYWNrQ0dDb2xvci5nZXQo
KS5nZXQoKTsKKyAgICAgICAgICAgIHJldHVybiBibGFja0NHQ29sb3IuZ2V0KCk7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBQYWNrZWRDb2xvcjo6UkdCQSB7IENvbG9yOjp3aGl0ZSB9LnZhbHVl
OiB7CiAgICAgICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDR0Nv
bG9yUmVmPj4gd2hpdGVDR0NvbG9yOwpAQCAtMTk4LDcgKzE5OCw3IEBAIENHQ29sb3JSZWYgY2Fj
aGVkQ0dDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiAgICAgICAgICAgICBzdGQ6OmNhbGxfb25j
ZShvbmNlRmxhZywgW10gewogICAgICAgICAgICAgICAgIHdoaXRlQ0dDb2xvci5jb25zdHJ1Y3Qo
Y3JlYXRlQ0dDb2xvcihDb2xvcjo6d2hpdGUpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAg
ICAgcmV0dXJuIHdoaXRlQ0dDb2xvci5nZXQoKS5nZXQoKTsKKyAgICAgICAgICAgIHJldHVybiB3
aGl0ZUNHQ29sb3IuZ2V0KCk7CiAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTIwNyw3
ICsyMDcsNyBAQCBDR0NvbG9yUmVmIGNhY2hlZENHQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQog
ICAgIExvY2tlciBsb2NrZXIgeyBjYWNoZWRDb2xvckxvY2sgfTsKIAogICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxUaW55TFJVQ2FjaGU8Q29sb3IsIFJldGFpblB0cjxDR0NvbG9yUmVmPiwgMzI+
PiBjYWNoZTsKLSAgICByZXR1cm4gY2FjaGUuZ2V0KCkuZ2V0KGNvbG9yKS5nZXQoKTsKKyAgICBy
ZXR1cm4gY2FjaGUuZ2V0KCkuZ2V0KGNvbG9yKTsKIH0KIAogQ29sb3JDb21wb25lbnRzPGZsb2F0
LCA0PiBwbGF0Zm9ybUNvbnZlcnRDb2xvckNvbXBvbmVudHMoQ29sb3JTcGFjZSBpbnB1dENvbG9y
U3BhY2UsIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gaW5wdXRDb2xvckNvbXBvbmVudHMsIGNv
bnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgb3V0cHV0Q29sb3JTcGFjZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50Q0cuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDRy5jcHAKaW5kZXggNTcx
ZDYxZTNjY2JjNDIyNmI0NGY1N2E2Y2FhN2RkNjU2NTQ0NjM5NC4uOTk4YjU0NTNiZTI3ZWE1ZDU4
Y2JjOWM3MGJhOThjMjdkYWQwMzNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDRy5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBHcmFk
aWVudDo6Y3JlYXRlQ0dHcmFkaWVudCgpCiAKICAgICBhdXRvIGNvbG9yc0FycmF5ID0gYWRvcHRD
RihDRkFycmF5Q3JlYXRlTXV0YWJsZSgwLCBtX3N0b3BzLnNpemUoKSwgJmtDRlR5cGVBcnJheUNh
bGxCYWNrcykpOwogICAgIGZvciAoY29uc3QgYXV0byYgc3RvcCA6IG1fc3RvcHMpIHsKLSAgICAg
ICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGNvbG9yc0FycmF5LmdldCgpLCBjYWNoZWRDR0NvbG9yKHN0
b3AuY29sb3IpKTsKKyAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGNvbG9yc0FycmF5LmdldCgp
LCBjYWNoZWRDR0NvbG9yKHN0b3AuY29sb3IpLmdldCgpKTsKICAgICAgICAgbG9jYXRpb25zLnVu
Y2hlY2tlZEFwcGVuZChzdG9wLm9mZnNldCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5k
ZXggYjVmNGUyYTFmYzQ1YzBlMWU3MDgxY2I1YjM5YTBiODQyMzlkNjg2OS4uZGVlYzY3YjQ3ZWQ2
ODQwNjJmNzliZTlkNjMzMWQwYzc4NjY1OThlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcApAQCAtNTIs
NyArNTIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyB2b2lkIHNldENHRmlsbENv
bG9yKENHQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBDb2xvciYgY29sb3IpCiB7Ci0gICAgQ0dD
b250ZXh0U2V0RmlsbENvbG9yV2l0aENvbG9yKGNvbnRleHQsIGNhY2hlZENHQ29sb3IoY29sb3Ip
KTsKKyAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3JXaXRoQ29sb3IoY29udGV4dCwgY2FjaGVkQ0dD
b2xvcihjb2xvcikuZ2V0KCkpOwogfQogCiBpbmxpbmUgQ0dBZmZpbmVUcmFuc2Zvcm0gZ2V0VXNl
clRvQmFzZUNUTShDR0NvbnRleHRSZWYgY29udGV4dCkKQEAgLTEwNzIsNyArMTA3Miw3IEBAIHN0
YXRpYyB2b2lkIHNldENHU2hhZG93KGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250
ZXh0LCBjb25zdCBGbG9hdFNpemUmCiAgICAgaWYgKCFjb2xvci5pc1ZhbGlkKCkpCiAgICAgICAg
IENHQ29udGV4dFNldFNoYWRvdyhjb250ZXh0LCBDR1NpemVNYWtlKHhPZmZzZXQsIHlPZmZzZXQp
LCBibHVyUmFkaXVzKTsKICAgICBlbHNlCi0gICAgICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhD
b2xvcihjb250ZXh0LCBDR1NpemVNYWtlKHhPZmZzZXQsIHlPZmZzZXQpLCBibHVyUmFkaXVzLCBj
YWNoZWRDR0NvbG9yKGNvbG9yKSk7CisgICAgICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xv
cihjb250ZXh0LCBDR1NpemVNYWtlKHhPZmZzZXQsIHlPZmZzZXQpLCBibHVyUmFkaXVzLCBjYWNo
ZWRDR0NvbG9yKGNvbG9yKS5nZXQoKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OmRp
ZFVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCkBAIC0xMDgzLDcgKzEwODMsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpkaWRVcGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0Nv
bnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaQogICAgICAgICBDR0NvbnRleHRTZXRMaW5lV2lkdGgo
Y29udGV4dCwgc3RkOjptYXgoc3RhdGUuc3Ryb2tlVGhpY2tuZXNzLCAwLmYpKTsKIAogICAgIGlm
IChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2Up
KQotICAgICAgICBDR0NvbnRleHRTZXRTdHJva2VDb2xvcldpdGhDb2xvcihjb250ZXh0LCBjYWNo
ZWRDR0NvbG9yKHN0YXRlLnN0cm9rZUNvbG9yKSk7CisgICAgICAgIENHQ29udGV4dFNldFN0cm9r
ZUNvbG9yV2l0aENvbG9yKGNvbnRleHQsIGNhY2hlZENHQ29sb3Ioc3RhdGUuc3Ryb2tlQ29sb3Ip
LmdldCgpKTsKIAogICAgIGlmIChmbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6
RmlsbENvbG9yQ2hhbmdlKSkKICAgICAgICAgc2V0Q0dGaWxsQ29sb3IoY29udGV4dCwgc3RhdGUu
ZmlsbENvbG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0NvbG9yQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0NvbG9yQ29jb2EuaAppbmRleCBmMTMxMTNkYWM0MGQ1YzEwZDU4OTZkYmE2OTIzZDI2YTRk
YWEzMGFiLi4wYWQ0MjMxNjNhNzJlYWIyMjQ2MzAxYTJlYzVhZDU5ZjM5MmVjNzY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Db2xvckNvY29hLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQ29sb3JDb2NvYS5o
CkBAIC0zMywxMSArMzMsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ29sb3I7CiAK
ICNpZiBVU0UoQVBQS0lUKQotV0VCQ09SRV9FWFBPUlQgTlNDb2xvciAqcGxhdGZvcm1Db2xvcihj
b25zdCBDb2xvciYpOworV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TQ29sb3I+IHBsYXRmb3Jt
Q29sb3IoY29uc3QgQ29sb3ImKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
LVdFQkNPUkVfRVhQT1JUIFVJQ29sb3IgKnBsYXRmb3JtQ29sb3IoY29uc3QgQ29sb3ImKTsKK1dF
QkNPUkVfRVhQT1JUIFJldGFpblB0cjxVSUNvbG9yPiBwbGF0Zm9ybUNvbG9yKGNvbnN0IENvbG9y
Jik7CiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQ29sb3JDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0NvbG9yQ29jb2EubW0KaW5kZXggOTU3Nzcw
MTA2MGQ0ODIwMDEzNDQyMWZhMGY4NmEwMGQzY2I2OGU1MS4uNTYxZTY4NTRhZmY4MDU2ZDA2ZGQ3
N2JkN2RmODU3ZTQyOGYxNjFlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvQ29sb3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Db2xvckNvY29hLm1tCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogI2lmIFVTRShBUFBLSVQpCiAKLU5TQ29sb3IgKnBsYXRmb3JtQ29sb3Io
Y29uc3QgQ29sb3ImIGNvbG9yKQorUmV0YWluUHRyPE5TQ29sb3I+IHBsYXRmb3JtQ29sb3IoY29u
c3QgQ29sb3ImIGNvbG9yKQogewogICAgIHJldHVybiBuc0NvbG9yKGNvbG9yKTsKIH0KQEAgLTQ2
LDkgKzQ2LDkgQEAgTlNDb2xvciAqcGxhdGZvcm1Db2xvcihjb25zdCBDb2xvciYgY29sb3IpCiAK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCi1VSUNvbG9yICpwbGF0Zm9ybUNvbG9yKGNvbnN0
IENvbG9yJiBjb2xvcikKK1JldGFpblB0cjxVSUNvbG9yPiBwbGF0Zm9ybUNvbG9yKGNvbnN0IENv
bG9yJiBjb2xvcikKIHsKLSAgICByZXR1cm4gW1BBTDo6Z2V0VUlDb2xvckNsYXNzKCkgX2Rpc2Ft
YmlndWF0ZWRfZHVlX3RvX0NJSW1hZ2VfY29sb3JXaXRoQ0dDb2xvcjpjYWNoZWRDR0NvbG9yKGNv
bG9yKV07CisgICAgcmV0dXJuIFtQQUw6OmdldFVJQ29sb3JDbGFzcygpIF9kaXNhbWJpZ3VhdGVk
X2R1ZV90b19DSUltYWdlX2NvbG9yV2l0aENHQ29sb3I6Y2FjaGVkQ0dDb2xvcihjb2xvcikuZ2V0
KCldOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAppbmRleCA3MmZiMTdhZTEy
ZjYwZGNjOTcyZmY4MzI1NGE2YzU5MDM1MTE0OTAwLi5mYTZjYmY2YmYxYWQxZDExZWYwN2VjYjQ4
MTE1ZjQzN2M3YjYxYzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCkBAIC00ODMsNyArNDgz
LDcgQEAgc3RhdGljIHZvaWQgYWRkQXR0cmlidXRlc0ZvckN1c3RvbUZvbnRQYWxldHRlcyhDRk11
dGFibGVEaWN0aW9uYXJ5UmVmIGF0dHJpYnV0ZXMKICAgICAgICAgICAgIGludDY0X3QgcmF3SW5k
ZXggPSBwYWlyLmZpcnN0OyAvLyBUaGVyZSBpcyBubyBrQ0ZOdW1iZXJVSW50VHlwZS4KICAgICAg
ICAgICAgIGF1dG8gbnVtYmVyID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBrQ0ZOdW1iZXJTSW50NjRUeXBlLCAmcmF3SW5kZXgpKTsKICAgICAgICAgICAgIGF1
dG8gY29sb3JPYmplY3QgPSBjYWNoZWRDR0NvbG9yKGNvbG9yKTsKLSAgICAgICAgICAgIENGRGlj
dGlvbmFyeUFkZFZhbHVlKG92ZXJyaWRlRGljdGlvbmFyeS5nZXQoKSwgbnVtYmVyLmdldCgpLCBj
b2xvck9iamVjdCk7CisgICAgICAgICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShvdmVycmlkZURp
Y3Rpb25hcnkuZ2V0KCksIG51bWJlci5nZXQoKSwgY29sb3JPYmplY3QuZ2V0KCkpOwogICAgICAg
ICB9CiAgICAgICAgIGlmIChDRkRpY3Rpb25hcnlHZXRDb3VudChvdmVycmlkZURpY3Rpb25hcnku
Z2V0KCkpKQogICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoYXR0cmlidXRlcywga0NU
Rm9udFBhbGV0dGVDb2xvcnNBdHRyaWJ1dGUsIG92ZXJyaWRlRGljdGlvbmFyeS5nZXQoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGlj
c0NvbnRleHRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0dyYXBoaWNzQ29udGV4dENvY29hLm1tCmluZGV4IDM4OGFmY2Q2ZjQ2YWZjNDUyMjFmODA3MWQz
NTA5NjdmMGU1MzU1MGQuLmE1ODA0NGYyMDNmZWU4MmFhNWFmMmZlNWEzZGYyOWMzNDViY2ViNzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBo
aWNzQ29udGV4dENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0dyYXBoaWNzQ29udGV4dENvY29hLm1tCkBAIC04NCw3ICs4NCw3IEBAIHN0YXRpYyBi
b29sIGRyYXdGb2N1c1JpbmdBdFRpbWUoQ0dDb250ZXh0UmVmIGNvbnRleHQsIE5TVGltZUludGVy
dmFsIHRpbWVPZmZzZXQsCiAgICAgLy8gLTEuIEFjY29yZGluZyB0byBDb3JlR3JhcGhpY3MsIHRo
ZSByZWFzb25pbmcgZm9yIHRoaXMgYmVoYXZpb3IgaGFzIGJlZW4KICAgICAvLyBsb3N0IGluIHRp
bWUuCiAgICAgZm9jdXNSaW5nU3R5bGUuYWNjdW11bGF0ZSA9IC0xOwotICAgIGF1dG8gc3R5bGUg
PSBhZG9wdENGKENHU3R5bGVDcmVhdGVGb2N1c1JpbmdXaXRoQ29sb3IoJmZvY3VzUmluZ1N0eWxl
LCBjYWNoZWRDR0NvbG9yKGNvbG9yKSkpOworICAgIGF1dG8gc3R5bGUgPSBhZG9wdENGKENHU3R5
bGVDcmVhdGVGb2N1c1JpbmdXaXRoQ29sb3IoJmZvY3VzUmluZ1N0eWxlLCBjYWNoZWRDR0NvbG9y
KGNvbG9yKS5nZXQoKSkpOwogCiAgICAgQ0dDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNv
bnRleHQpOwogCkBAIC0xNTksNyArMTU5LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHNldFBhdHRl
cm5QaGFzZUluVXNlclNwYWNlKENHQ29udGV4dFJlZiBjb250ZXh0LCBDR1BvaW50IHBoYXMKICAg
ICBDR0NvbnRleHRTZXRQYXR0ZXJuUGhhc2UoY29udGV4dCwgQ0dTaXplTWFrZShwaGFzZS54LCBw
aGFzZS55KSk7CiB9CiAKLXN0YXRpYyBDR0NvbG9yUmVmIGNvbG9yRm9yTWFya2VyTGluZVN0eWxl
KERvY3VtZW50TWFya2VyTGluZVN0eWxlOjpNb2RlIHN0eWxlLCBib29sIHVzZURhcmtNb2RlKQor
c3RhdGljIFJldGFpblB0cjxDR0NvbG9yUmVmPiBjb2xvckZvck1hcmtlckxpbmVTdHlsZShEb2N1
bWVudE1hcmtlckxpbmVTdHlsZTo6TW9kZSBzdHlsZSwgYm9vbCB1c2VEYXJrTW9kZSkKIHsKICAg
ICBzd2l0Y2ggKHN0eWxlKSB7CiAgICAgLy8gUmVkCkBAIC0xOTgsNyArMTk4LDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHRDRzo6ZHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcihjb25zdCBGbG9hdFJl
Y3QmIHJlY3QsIERvY3VtZW4KIAogICAgIENHQ29udGV4dFJlZiBwbGF0Zm9ybUNvbnRleHQgPSB0
aGlzLT5wbGF0Zm9ybUNvbnRleHQoKTsKICAgICBDR0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2
ZXIgeyBwbGF0Zm9ybUNvbnRleHQgfTsKLSAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3JXaXRoQ29s
b3IocGxhdGZvcm1Db250ZXh0LCBjaXJjbGVDb2xvcik7CisgICAgQ0dDb250ZXh0U2V0RmlsbENv
bG9yV2l0aENvbG9yKHBsYXRmb3JtQ29udGV4dCwgY2lyY2xlQ29sb3IuZ2V0KCkpOwogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZldob2xlRG90czsgKytpKSB7CiAgICAgICAg
IGF1dG8gbG9jYXRpb24gPSByZWN0LmxvY2F0aW9uKCk7CiAgICAgICAgIGxvY2F0aW9uLm1vdmUo
b2Zmc2V0ICsgaSAqIChkb3REaWFtZXRlciArIGRvdEdhcCksIDApOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMuaAppbmRleCBjZjk4YTI2Y2MwZjVi
NWQ0YTNiODY5ZjgzZmIyN2JiNWVhZjMyODBjLi44ZTFjNDkwNTVjODg1MzQ3MzBhNjA5NTc4MGEw
NTVlZDRhODE5ZGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvQ29sb3JNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvQ29sb3JNYWMuaApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdF
QkNPUkVfRVhQT1JUIENvbG9yIGNvbG9yRnJvbU5TQ29sb3IoTlNDb2xvciAqKTsKIENvbG9yIHNl
bWFudGljQ29sb3JGcm9tTlNDb2xvcihOU0NvbG9yICopOwotV0VCQ09SRV9FWFBPUlQgTlNDb2xv
ciAqbnNDb2xvcihjb25zdCBDb2xvciYpOworV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TQ29s
b3I+IG5zQ29sb3IoY29uc3QgQ29sb3ImKTsKIAogV0VCQ09SRV9FWFBPUlQgYm9vbCB1c2VzVGVz
dE1vZGVGb2N1c1JpbmdDb2xvcigpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRVc2VzVGVzdE1v
ZGVGb2N1c1JpbmdDb2xvcihib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9Db2xvck1hYy5tbQppbmRleCA4MGI4NGVhOGJkMTBmNDkxOWY4Nzk3Y2QyYzM2
ZjM1ZmRiOTM1MWE3Li44NzY4ODg0NTRhMjJjNWZiMmQ1OGFmM2JlYzg3ODY5ZmY2NTU2NTgyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1t
CkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXVEYgewogCiB0ZW1wbGF0ZTw+IFJldGFpblB0
cjxOU0NvbG9yPiBUaW55TFJVQ2FjaGVQb2xpY3k8V2ViQ29yZTo6Q29sb3IsIFJldGFpblB0cjxO
U0NvbG9yPj46OmNyZWF0ZVZhbHVlRm9yS2V5KGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikK
IHsKLSAgICByZXR1cm4gW05TQ29sb3IgY29sb3JXaXRoQ0dDb2xvcjpjYWNoZWRDR0NvbG9yKGNv
bG9yKV07CisgICAgcmV0dXJuIFtOU0NvbG9yIGNvbG9yV2l0aENHQ29sb3I6Y2FjaGVkQ0dDb2xv
cihjb2xvcikuZ2V0KCldOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKQEAgLTExMyw3ICsxMTMs
NyBAQCBDb2xvciBzZW1hbnRpY0NvbG9yRnJvbU5TQ29sb3IoTlNDb2xvciAqY29sb3IpCiAgICAg
cmV0dXJuIENvbG9yKG1ha2VTaW1wbGVDb2xvckZyb21OU0NvbG9yKGNvbG9yKSwgQ29sb3I6OkZs
YWdzOjpTZW1hbnRpYyk7CiB9CiAKLU5TQ29sb3IgKm5zQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9y
KQorUmV0YWluUHRyPE5TQ29sb3I+IG5zQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogewogICAg
IGlmIChhdXRvIHNyZ2IgPSBjb2xvci50cnlHZXRBc1NSR0JBQnl0ZXMoKSkgewogICAgICAgICBz
d2l0Y2ggKFBhY2tlZENvbG9yOjpSR0JBIHsgKnNyZ2IgfS52YWx1ZSkgewpAQCAtMTIzLDcgKzEy
Myw3IEBAIE5TQ29sb3IgKm5zQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogICAgICAgICAgICAg
c3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKICAgICAgICAgICAgICAgICBjbGVhckNvbG9y
LmNvbnN0cnVjdChbTlNDb2xvciBjb2xvcldpdGhTUkdCUmVkOjAgZ3JlZW46MCBibHVlOjAgYWxw
aGE6MF0pOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICByZXR1cm4gY2xlYXJDb2xvci5n
ZXQoKS5nZXQoKTsKKyAgICAgICAgICAgIHJldHVybiBjbGVhckNvbG9yLmdldCgpOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgUGFja2VkQ29sb3I6OlJHQkEgeyBDb2xvcjo6YmxhY2sgfS52YWx1
ZTogewogICAgICAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlND
b2xvcj4+IGJsYWNrQ29sb3I7CkBAIC0xMzEsNyArMTMxLDcgQEAgTlNDb2xvciAqbnNDb2xvcihj
b25zdCBDb2xvciYgY29sb3IpCiAgICAgICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywg
W10gewogICAgICAgICAgICAgICAgIGJsYWNrQ29sb3IuY29uc3RydWN0KFtOU0NvbG9yIGNvbG9y
V2l0aFNSR0JSZWQ6MCBncmVlbjowIGJsdWU6MCBhbHBoYToxXSk7CiAgICAgICAgICAgICB9KTsK
LSAgICAgICAgICAgIHJldHVybiBibGFja0NvbG9yLmdldCgpLmdldCgpOworICAgICAgICAgICAg
cmV0dXJuIGJsYWNrQ29sb3IuZ2V0KCk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBQYWNrZWRD
b2xvcjo6UkdCQSB7IENvbG9yOjp3aGl0ZSB9LnZhbHVlOiB7CiAgICAgICAgICAgICBzdGF0aWMg
TGF6eU5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0NvbG9yPj4gd2hpdGVDb2xvcjsKQEAgLTEz
OSw3ICsxMzksNyBAQCBOU0NvbG9yICpuc0NvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKICAgICAg
ICAgICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CiAgICAgICAgICAgICAgICAgd2hp
dGVDb2xvci5jb25zdHJ1Y3QoW05TQ29sb3IgY29sb3JXaXRoU1JHQlJlZDoxIGdyZWVuOjEgYmx1
ZToxIGFscGhhOjFdKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgcmV0dXJuIHdoaXRl
Q29sb3IuZ2V0KCkuZ2V0KCk7CisgICAgICAgICAgICByZXR1cm4gd2hpdGVDb2xvci5nZXQoKTsK
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMTQ4LDcgKzE0OCw3IEBAIE5TQ29sb3Ig
Km5zQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogICAgIExvY2tlciBsb2NrZXIgeyBjYWNoZWRD
b2xvckxvY2sgfTsKIAogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUaW55TFJVQ2FjaGU8Q29s
b3IsIFJldGFpblB0cjxOU0NvbG9yPiwgMzI+PiBjYWNoZTsKLSAgICByZXR1cm4gY2FjaGUuZ2V0
KCkuZ2V0KGNvbG9yKS5nZXQoKTsKKyAgICByZXR1cm4gY2FjaGUuZ2V0KCkuZ2V0KGNvbG9yKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDR1dpbi5jcHAKaW5k
ZXggYTc5MjE4OTFlN2FkNWNjZjhjNzhiMWQ1ZDBjYmY0NTBhNTIzZGYwZS4uYTllZGVmOWJmYTlm
MzJiMDgzYThkYTcxYTRkNjczZTgwMzc0ZmM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3Bw
CkBAIC0xMTQsNyArMTE0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6ZHJhd0ZvY3VzUmlu
Zyhjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYgcmVjdHMsIGZsb2F0IHdpZHQKIHsKICAgICBmbG9h
dCByYWRpdXMgPSAod2lkdGggLSAxKSAvIDIuMGY7CiAgICAgb2Zmc2V0ICs9IHJhZGl1czsKLSAg
ICBDR0NvbG9yUmVmIGNvbG9yUmVmID0gY29sb3IuaXNWYWxpZCgpID8gY2FjaGVkQ0dDb2xvcihj
b2xvcikgOiBudWxscHRyOworICAgIGF1dG8gY29sb3JSZWYgPSBjb2xvci5pc1ZhbGlkKCkgPyBj
YWNoZWRDR0NvbG9yKGNvbG9yKSA6IG51bGxwdHI7CiAKICAgICBhdXRvIGZvY3VzUmluZ1BhdGgg
PSBhZG9wdENGKENHUGF0aENyZWF0ZU11dGFibGUoKSk7CiAgICAgdW5zaWduZWQgcmVjdENvdW50
ID0gcmVjdHMuc2l6ZSgpOwpAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
Q0c6OmRyYXdGb2N1c1JpbmcoY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mIHJlY3RzLCBmbG9hdCB3
aWR0CiAgICAgLy8gRmluZCBvdXQgZnJvbSBDRyBpZiB0aGlzIGlzIHRoZWlyIGJ1Zy4KICAgICBD
R0NvbnRleHRTZXRSR0JGaWxsQ29sb3IoY29udGV4dCwgMCwgMCwgMCwgMCk7CiAKLSAgICBDR0Nv
bnRleHRTZXRGb2N1c1JpbmdXaXRoQ29sb3IoY29udGV4dCwgcmFkaXVzLCBjb2xvclJlZiwgMCwg
KENGRGljdGlvbmFyeVJlZikwKTsKKyAgICBDR0NvbnRleHRTZXRGb2N1c1JpbmdXaXRoQ29sb3Io
Y29udGV4dCwgcmFkaXVzLCBjb2xvclJlZi5nZXQoKSwgMCwgKENGRGljdGlvbmFyeVJlZikwKTsK
ICAgICBDR0NvbnRleHRGaWxsUGF0aChjb250ZXh0KTsKIAogICAgIENHQ29udGV4dFJlc3RvcmVH
U3RhdGUoY29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
TGVnYWN5VGlsZUNhY2hlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRp
bGVDYWNoZS5tbQppbmRleCBjNTZhMWE3ZWEwZTU4YzFiYmUxNTYxYWM3NTUxYjA2OTAzNmE0MzJm
Li5jMzljMzEyNGU4NTQyYWY5NTE5NzE3ODRiODBmMjA0YzgxOTVmY2U4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0KQEAgLTU2OCw3ICs1Njgs
NyBAQCB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6ZHJhd0xheWVyKExlZ2FjeVRpbGVMYXllciogbGF5
ZXIsIENHQ29udGV4dFJlZiBjb250ZXh0LCBEcgogICAgICAgICBDR0NvbnRleHRTYXZlR1N0YXRl
KGNvbnRleHQpOwogCiAgICAgICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShjb250ZXh0LCBmcmFt
ZS5vcmlnaW4ueCwgZnJhbWUub3JpZ2luLnkpOwotICAgICAgICBDR0NvbnRleHRTZXRGaWxsQ29s
b3JXaXRoQ29sb3IoY29udGV4dCwgY2FjaGVkQ0dDb2xvcihjb2xvckZvckdyaWRUaWxlQm9yZGVy
KFtsYXllciB0aWxlR3JpZF0pKSk7CisgICAgICAgIENHQ29udGV4dFNldEZpbGxDb2xvcldpdGhD
b2xvcihjb250ZXh0LCBjYWNoZWRDR0NvbG9yKGNvbG9yRm9yR3JpZFRpbGVCb3JkZXIoW2xheWVy
IHRpbGVHcmlkXSkpLmdldCgpKTsKICAgICAgICAgCiAgICAgICAgIENHUmVjdCBsYWJlbEJvdW5k
cyA9IFtsYXllciBib3VuZHNdOwogICAgICAgICBsYWJlbEJvdW5kcy5zaXplLndpZHRoID0gMTAg
KyAxMiAqIHN0cmxlbih0ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9MZWdhY3lUaWxlR3JpZFRpbGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
TGVnYWN5VGlsZUdyaWRUaWxlLm1tCmluZGV4IDc4YzQ5ODAzYmU2OWFlYWI5Zjk3YWU0MWJmZjZi
NjFiZDcyYTY5ZmYuLjU5NzlmN2RlNzEyZmMzYmIyZjU0NTIxMzUwYTU0YmNkYzI1NDdkOGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlR3JpZFRpbGUu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVHcmlkVGlsZS5t
bQpAQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgTGVnYWN5VGlsZUdyaWRUaWxlOjpzaG93Qm9yZGVy
KGJvb2wgZmxhZykKIHsKICAgICBMZWdhY3lUaWxlTGF5ZXIqIGxheWVyID0gbV90aWxlTGF5ZXIu
Z2V0KCk7CiAgICAgaWYgKGZsYWcpIHsKLSAgICAgICAgW2xheWVyIHNldEJvcmRlckNvbG9yOmNh
Y2hlZENHQ29sb3IobV90aWxlR3JpZC0+dGlsZUNhY2hlKCkuY29sb3JGb3JHcmlkVGlsZUJvcmRl
cihtX3RpbGVHcmlkKSldOworICAgICAgICBbbGF5ZXIgc2V0Qm9yZGVyQ29sb3I6Y2FjaGVkQ0dD
b2xvcihtX3RpbGVHcmlkLT50aWxlQ2FjaGUoKS5jb2xvckZvckdyaWRUaWxlQm9yZGVyKG1fdGls
ZUdyaWQpKS5nZXQoKV07CiAgICAgICAgIFtsYXllciBzZXRCb3JkZXJXaWR0aDowLjVmXTsKICAg
ICB9IGVsc2UgewogICAgICAgICBbbGF5ZXIgc2V0Qm9yZGVyQ29sb3I6bmlsXTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCmlu
ZGV4IGUwZDFhZTFmODJjOTg5Yzk5ZDFmODZhNjJjYzFmM2JhN2ZiNzE2ZTQuLjA0MTVmMDVhYWZm
NGVhZTQ5ZTVjOTBhNWY2NzVkY2ZiYjIyOGE1MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQpAQCAtNDIxLDcgKzQyMSw3
IEBAIHN0YXRpYyB2b2lkIHJlZ2lzdGVySXRlbVRvUGFzdGVib2FyZChXZWJJdGVtUHJvdmlkZXJS
ZWdpc3RyYXRpb25JbmZvTGlzdCAqcmVwcmVzCiBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6
c2V0Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogewogICAgIGF1dG8gcmVwcmVzZW50YXRpb25z
VG9SZWdpc3RlciA9IGFkb3B0TlMoW1tXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvTGlz
dCBhbGxvY10gaW5pdF0pOwotICAgIFVJQ29sb3IgKnVpQ29sb3IgPSBbUEFMOjpnZXRVSUNvbG9y
Q2xhc3MoKSBjb2xvcldpdGhDR0NvbG9yOmNhY2hlZENHQ29sb3IoY29sb3IpXTsKKyAgICBVSUNv
bG9yICp1aUNvbG9yID0gW1BBTDo6Z2V0VUlDb2xvckNsYXNzKCkgY29sb3JXaXRoQ0dDb2xvcjpj
YWNoZWRDR0NvbG9yKGNvbG9yKS5nZXQoKV07CiAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0
ZXIgYWRkRGF0YTpbTlNLZXllZEFyY2hpdmVyIGFyY2hpdmVkRGF0YVdpdGhSb290T2JqZWN0OnVp
Q29sb3IgcmVxdWlyaW5nU2VjdXJlQ29kaW5nOk5PIGVycm9yOm5pbF0gZm9yVHlwZTpVSUNvbG9y
UGJvYXJkVHlwZV07CiAgICAgcmVnaXN0ZXJJdGVtVG9QYXN0ZWJvYXJkKHJlcHJlc2VudGF0aW9u
c1RvUmVnaXN0ZXIuZ2V0KCksIG1fcGFzdGVib2FyZC5nZXQoKSk7CiAgICAgcmV0dXJuIDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlckFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQppbmRleCAzZDhhNzAxMGI3ZWFjMDFjYTcyMzA4
Y2YzNGZlYmFmYTVkNWEyNGZiLi4xMTcyODk0ZmVkMjViOGY0ZjVjMzMzMGFmMzJlMjQyODhhN2M1
ODYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KQEAgLTI2Miw3ICsyNjIsNyBA
QCB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpyZXF1ZXN0VmlkZW9Db250
ZW50TGF5ZXIoKQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgQVNTRVJUKGlzVUlUaHJl
YWQoKSk7CiAgICAgV2ViVGhyZWFkUnVuKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwg
dGhpcywgdmlkZW9GdWxsc2NyZWVuTGF5ZXIgPSByZXRhaW5QdHIoW21fdmlkZW9GdWxsc2NyZWVu
VmlldyBsYXllcl0pXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgW3ZpZGVvRnVsbHNjcmVlbkxheWVy
IHNldEJhY2tncm91bmRDb2xvcjpjYWNoZWRDR0NvbG9yKFdlYkNvcmU6OkNvbG9yOjp0cmFuc3Bh
cmVudEJsYWNrKV07CisgICAgICAgIFt2aWRlb0Z1bGxzY3JlZW5MYXllciBzZXRCYWNrZ3JvdW5k
Q29sb3I6Y2FjaGVkQ0dDb2xvcihXZWJDb3JlOjpDb2xvcjo6dHJhbnNwYXJlbnRCbGFjaykuZ2V0
KCldOwogICAgICAgICBtX2Z1bGxzY3JlZW5Nb2RlbC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIo
dmlkZW9GdWxsc2NyZWVuTGF5ZXIuZ2V0KCksIFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90
ZWN0ZWRUaGlzKSwgdGhpc10gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlz
XSB7CiAgICAgICAgICAgICAgICAgaWYgKCFtX2ludGVyZmFjZSkKQEAgLTI4Miw3ICsyODIsNyBA
QCB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpyZXR1cm5WaWRlb0NvbnRl
bnRMYXllcigpCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBBU1NFUlQoaXNVSVRocmVh
ZCgpKTsKICAgICBXZWJUaHJlYWRSdW4oW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCB0
aGlzLCB2aWRlb0Z1bGxzY3JlZW5MYXllciA9IHJldGFpblB0cihbbV92aWRlb0Z1bGxzY3JlZW5W
aWV3IGxheWVyXSldICgpIG11dGFibGUgewotICAgICAgICBbdmlkZW9GdWxsc2NyZWVuTGF5ZXIg
c2V0QmFja2dyb3VuZENvbG9yOmNhY2hlZENHQ29sb3IoV2ViQ29yZTo6Q29sb3I6OnRyYW5zcGFy
ZW50QmxhY2spXTsKKyAgICAgICAgW3ZpZGVvRnVsbHNjcmVlbkxheWVyIHNldEJhY2tncm91bmRD
b2xvcjpjYWNoZWRDR0NvbG9yKFdlYkNvcmU6OkNvbG9yOjp0cmFuc3BhcmVudEJsYWNrKS5nZXQo
KV07CiAgICAgICAgIG1fZnVsbHNjcmVlbk1vZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihu
aWwsIFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhpc10gKCkgbXV0
YWJsZSB7CiAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRo
aXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlzXSB7CiAgICAgICAgICAgICAgICAgaWYg
KCFtX2ludGVyZmFjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9M
b2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL0xvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UubW0KaW5kZXggMDg4NGFlMmI1OTg0YWFj
ZDdlMDZhODQ5OWFhZWZkYzY3ZTIwZWUyOC4uMzFmNDIxZjg4OWNjYzJmYTE2ODFiNjBjMDc3NGI2
ZDRjYTQzMjdkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xvY2Fs
RGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL0xvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UubW0KQEAgLTQ2LDcgKzQ2LDcgQEAgTG9j
YWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZTo6TG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZShi
b29sIHVzZURhcmtBcHBlYXJhbmMKICAgICBOU0FwcGVhcmFuY2UgKmFwcGVhcmFuY2UgPSBbTlNB
cHBlYXJhbmNlIGFwcGVhcmFuY2VOYW1lZDptX3VzaW5nRGFya0FwcGVhcmFuY2UgPyBOU0FwcGVh
cmFuY2VOYW1lRGFya0FxdWEgOiBOU0FwcGVhcmFuY2VOYW1lQXF1YV07CiAKICAgICBpZiAodGlu
dENvbG9yLmlzVmFsaWQoKSkKLSAgICAgICAgYXBwZWFyYW5jZSA9IFthcHBlYXJhbmNlIGFwcGVh
cmFuY2VCeUFwcGx5aW5nVGludENvbG9yOm5zQ29sb3IodGludENvbG9yKV07CisgICAgICAgIGFw
cGVhcmFuY2UgPSBbYXBwZWFyYW5jZSBhcHBlYXJhbmNlQnlBcHBseWluZ1RpbnRDb2xvcjpuc0Nv
bG9yKHRpbnRDb2xvcikuZ2V0KCldOwogCiAgICAgW05TQXBwZWFyYW5jZSBzZXRDdXJyZW50QXBw
ZWFyYW5jZTphcHBlYXJhbmNlXTsKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19F
TkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3Rl
Ym9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJv
YXJkTWFjLm1tCmluZGV4IGQ1ZDRkNjBmZmU1ZjUzNjJjYmY5ZmJiYWUwZTVjNmJmMWUzNDA1NmUu
LjYwMDJlYjRiNjdmNTEwY2E2Mjc0OTBlYTM4OTEyNDVjOWNlNzhhNzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQpAQCAt
MzY5LDcgKzM2OSw3IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRVUkwoY29uc3Qg
UGFzdGVib2FyZFVSTCYgcGFzdGVib2FyZFVSTCkKIAogaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9h
cmQ6OnNldENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKIHsKLSAgICBOU0NvbG9yICpwYXN0ZWJv
YXJkQ29sb3IgPSBuc0NvbG9yKGNvbG9yKTsKKyAgICBhdXRvIHBhc3RlYm9hcmRDb2xvciA9IG5z
Q29sb3IoY29sb3IpOwogICAgIFtwYXN0ZWJvYXJkQ29sb3Igd3JpdGVUb1Bhc3RlYm9hcmQ6bV9w
YXN0ZWJvYXJkLmdldCgpXTsKICAgICByZXR1cm4gY2hhbmdlQ291bnQoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbQppbmRleCA0YjIz
ZDJkZGUzMGFhNGM5NTcyZmVjNzFlNTgyMzNiNGE2OGJjMzQxLi4zNGYyMjZmOThiOWViMTgxYzVh
NjQ4ZGE4ZjY1N2Q1MGEzMDBjZjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCkBAIC02MDIsNyArNjAyLDcgQEAgdm9pZCBTY3JvbGxi
YXJUaGVtZU1hYzo6c2V0VXBPdmVyaGFuZ0FyZWFCYWNrZ3JvdW5kKENBTGF5ZXIgKmxheWVyLCBj
b25zdCBDb2xvciYKICAgICBzdGF0aWMgQ0dDb2xvclJlZiBjYWNoZWRMaW5lbkJhY2tncm91bmRD
b2xvciA9IGxpbmVuQmFja2dyb3VuZENvbG9yKCkubGVha1JlZigpOwogICAgIC8vIFdlIG9wZXJh
dGUgb24gdGhlIENBTGF5ZXIgZGlyZWN0bHkgaGVyZSwgc2luY2UgR3JhcGhpY3NMYXllciBkb2Vz
bid0IGhhdmUgdGhlIGNvbmNlcHQKICAgICAvLyBvZiBwYXR0ZXJuIGltYWdlcywgYW5kIHdlIGtu
b3cgdGhhdCBXZWJDb3JlIHdvbid0IHRvdWNoIHRoaXMgbGF5ZXIuCi0gICAgbGF5ZXIuYmFja2dy
b3VuZENvbG9yID0gY3VzdG9tQmFja2dyb3VuZENvbG9yLmlzVmFsaWQoKSA/IGNhY2hlZENHQ29s
b3IoY3VzdG9tQmFja2dyb3VuZENvbG9yKSA6IGNhY2hlZExpbmVuQmFja2dyb3VuZENvbG9yOwor
ICAgIGxheWVyLmJhY2tncm91bmRDb2xvciA9IGN1c3RvbUJhY2tncm91bmRDb2xvci5pc1ZhbGlk
KCkgPyBjYWNoZWRDR0NvbG9yKGN1c3RvbUJhY2tncm91bmRDb2xvcikuZ2V0KCkgOiBjYWNoZWRM
aW5lbkJhY2tncm91bmRDb2xvcjsKIH0KIAogdm9pZCBTY3JvbGxiYXJUaGVtZU1hYzo6cmVtb3Zl
T3ZlcmhhbmdBcmVhQmFja2dyb3VuZChDQUxheWVyICpsYXllcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9UaGVtZU1hYy5tbQppbmRleCA0MGFmYWI1NDY5NDk2ZmM0MWI2ZDU3NWEzOTdlY2M4
YWQyOTNkYjg4Li5iY2VmY2RlYzk5YzhmNzYzZjk0YmNmMzY5MDk4ZmE3YzQ3N2E4ZGZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCkBAIC0zODIsNyArMzgyLDcgQEAg
c3RhdGljIGJvb2wgZHJhd0NlbGxGb2N1c1JpbmdXaXRoRnJhbWVBdFRpbWUoTlNDZWxsICpjZWxs
LCBOU1JlY3QgY2VsbEZyYW1lLCBOU1YKICAgICAvLyBGSVhNRTogVGhpcyBjb2xvciBzaG91bGQg
YmUgc2hhcmVkIHdpdGggUmVuZGVyVGhlbWVNYWMuIEZvciBub3cganVzdCB1c2UgdGhlIHNhbWUg
TlNDb2xvciBjb2xvci4KICAgICAvLyBUaGUgY29sb3IgaXMgZXhwZWN0ZWQgdG8gYmUgb3BhcXVl
LCBzaW5jZSBDb3JlR3JhcGhpY3Mgd2lsbCBhcHBseSBvcGFjaXR5IHdoZW4gZHJhd2luZyAoYmVj
YXVzZSBvcGFjaXR5IGlzIG5vcm1hbGx5IGFuaW1hdGVkKS4KICAgICBhdXRvIGNvbG9yID0gY29s
b3JGcm9tTlNDb2xvcihbTlNDb2xvciBrZXlib2FyZEZvY3VzSW5kaWNhdG9yQ29sb3JdKS5vcGFx
dWVDb2xvcigpOwotICAgIGF1dG8gc3R5bGUgPSBhZG9wdENGKENHU3R5bGVDcmVhdGVGb2N1c1Jp
bmdXaXRoQ29sb3IoJmZvY3VzUmluZ1N0eWxlLCBjYWNoZWRDR0NvbG9yKGNvbG9yKSkpOworICAg
IGF1dG8gc3R5bGUgPSBhZG9wdENGKENHU3R5bGVDcmVhdGVGb2N1c1JpbmdXaXRoQ29sb3IoJmZv
Y3VzUmluZ1N0eWxlLCBjYWNoZWRDR0NvbG9yKGNvbG9yKS5nZXQoKSkpOwogICAgIENHQ29udGV4
dFNldFN0eWxlKGNnQ29udGV4dCwgc3R5bGUuZ2V0KCkpOwogCiAgICAgQ0dDb250ZXh0QmVnaW5U
cmFuc3BhcmVuY3lMYXllcldpdGhSZWN0KGNnQ29udGV4dCwgTlNSZWN0VG9DR1JlY3QoY2VsbEZy
YW1lKSwgbnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1Mu
bW0KaW5kZXggZjJiN2QwNDgzZGQzNmM5ZGMwNDJiZTdmMzYxOWI4YjFmMWVjNTJlYS4uZWJjMTY2
N2U4MjczYmM4MTUwM2YwMjgyNzc0ZTM1NWJkZTZkZWJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQpAQCAtMzc2LDcgKzM3Niw3IEBAIHN0YXRpYyBDR1Bv
aW50IHNob3J0ZW5lZChDR1BvaW50IHN0YXJ0LCBDR1BvaW50IGVuZCwgZmxvYXQgd2lkdGgpCiBz
dGF0aWMgdm9pZCBkcmF3Sm9pbmVkTGluZXMoQ0dDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFZl
Y3RvcjxDR1BvaW50PiYgcG9pbnRzLCBDR0xpbmVDYXAgbGluZUNhcCwgZmxvYXQgbGluZVdpZHRo
LCBDb2xvciBzdHJva2VDb2xvcikKIHsKICAgICBDR0NvbnRleHRTZXRMaW5lV2lkdGgoY29udGV4
dCwgbGluZVdpZHRoKTsKLSAgICBDR0NvbnRleHRTZXRTdHJva2VDb2xvcldpdGhDb2xvcihjb250
ZXh0LCBjYWNoZWRDR0NvbG9yKHN0cm9rZUNvbG9yKSk7CisgICAgQ0dDb250ZXh0U2V0U3Ryb2tl
Q29sb3JXaXRoQ29sb3IoY29udGV4dCwgY2FjaGVkQ0dDb2xvcihzdHJva2VDb2xvcikuZ2V0KCkp
OwogICAgIENHQ29udGV4dFNldFNob3VsZEFudGlhbGlhcyhjb250ZXh0LCB0cnVlKTsKICAgICBD
R0NvbnRleHRCZWdpblBhdGgoY29udGV4dCk7CiAgICAgQ0dDb250ZXh0U2V0TGluZUNhcChjb250
ZXh0LCBsaW5lQ2FwKTsKQEAgLTE2MzIsNyArMTYzMiw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q1RG
b250UmVmPiBhdHRhY2htZW50QWN0aW9uRm9udCgpCiAKIHN0YXRpYyBVSUNvbG9yICphdHRhY2ht
ZW50QWN0aW9uQ29sb3IoY29uc3QgUmVuZGVyQXR0YWNobWVudCYgYXR0YWNobWVudCkKIHsKLSAg
ICByZXR1cm4gW1BBTDo6Z2V0VUlDb2xvckNsYXNzKCkgY29sb3JXaXRoQ0dDb2xvcjpjYWNoZWRD
R0NvbG9yKGF0dGFjaG1lbnQuc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVy
dHlDb2xvcikpXTsKKyAgICByZXR1cm4gW1BBTDo6Z2V0VUlDb2xvckNsYXNzKCkgY29sb3JXaXRo
Q0dDb2xvcjpjYWNoZWRDR0NvbG9yKGF0dGFjaG1lbnQuc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50
Q29sb3IoQ1NTUHJvcGVydHlDb2xvcikpLmdldCgpXTsKIH0KIAogc3RhdGljIFJldGFpblB0cjxD
VEZvbnRSZWY+IGF0dGFjaG1lbnRUaXRsZUZvbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lTWFjLm1tCmluZGV4IDhiZWIyOTU3NzM5ZDMxYmI0OTc3YTBlMGE5YjI4M2Mz
NzFiMWVjNWIuLjYzMTBjZWUzNDRkMWQ0MzZjMjRhYTIyM2M3Y2Y1MTI5ODUwZjJjY2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KQEAgLTIzNTEsNyArMjM1
MSw3IEBAIHZvaWQgQXR0YWNobWVudExheW91dDo6bGF5T3V0VGl0bGUoY29uc3QgUmVuZGVyQXR0
YWNobWVudCYgYXR0YWNobWVudCkKIAogICAgIE5TRGljdGlvbmFyeSAqdGV4dEF0dHJpYnV0ZXMg
PSBAewogICAgICAgICAoX19icmlkZ2UgaWQpa0NURm9udEF0dHJpYnV0ZU5hbWU6IChfX2JyaWRn
ZSBpZClmb250LmdldCgpLAotICAgICAgICAoX19icmlkZ2UgaWQpa0NURm9yZWdyb3VuZENvbG9y
QXR0cmlidXRlTmFtZTogKF9fYnJpZGdlIE5TQ29sb3IgKiljYWNoZWRDR0NvbG9yKHRpdGxlVGV4
dENvbG9yRm9yQXR0YWNobWVudChhdHRhY2htZW50LCBzdHlsZSkpCisgICAgICAgIChfX2JyaWRn
ZSBpZClrQ1RGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lOiAoX19icmlkZ2UgTlNDb2xvciAq
KWNhY2hlZENHQ29sb3IodGl0bGVUZXh0Q29sb3JGb3JBdHRhY2htZW50KGF0dGFjaG1lbnQsIHN0
eWxlKSkuZ2V0KCkKICAgICB9OwogICAgIFJldGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+IGF0
dHJpYnV0ZWRUaXRsZSA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRX
aXRoU3RyaW5nOnRpdGxlIGF0dHJpYnV0ZXM6dGV4dEF0dHJpYnV0ZXNdKTsKICAgICBSZXRhaW5Q
dHI8Q1RGcmFtZXNldHRlclJlZj4gdGl0bGVGcmFtZXNldHRlciA9IGFkb3B0Q0YoQ1RGcmFtZXNl
dHRlckNyZWF0ZVdpdGhBdHRyaWJ1dGVkU3RyaW5nKChDRkF0dHJpYnV0ZWRTdHJpbmdSZWYpYXR0
cmlidXRlZFRpdGxlLmdldCgpKSk7CkBAIC0yNDEwLDcgKzI0MTAsNyBAQCB2b2lkIEF0dGFjaG1l
bnRMYXlvdXQ6OmxheU91dFN1YnRpdGxlKGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmIGF0dGFjaG1l
bnQpCiAgICAgYXV0byBmb250ID0gYWRvcHRDRihDVEZvbnRDcmVhdGVVSUZvbnRGb3JMYW5ndWFn
ZShrQ1RGb250VUlGb250U3lzdGVtLCBhdHRhY2htZW50U3VidGl0bGVGb250U2l6ZSwgbGFuZ3Vh
Z2UpKTsKICAgICBOU0RpY3Rpb25hcnkgKnRleHRBdHRyaWJ1dGVzID0gQHsKICAgICAgICAgKF9f
YnJpZGdlIGlkKWtDVEZvbnRBdHRyaWJ1dGVOYW1lOiAoX19icmlkZ2UgaWQpZm9udC5nZXQoKSwK
LSAgICAgICAgKF9fYnJpZGdlIGlkKWtDVEZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWU6IChf
X2JyaWRnZSBOU0NvbG9yICopY2FjaGVkQ0dDb2xvcihzdWJ0aXRsZUNvbG9yKQorICAgICAgICAo
X19icmlkZ2UgaWQpa0NURm9yZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZTogKF9fYnJpZGdlIE5T
Q29sb3IgKiljYWNoZWRDR0NvbG9yKHN1YnRpdGxlQ29sb3IpLmdldCgpCiAgICAgfTsKICAgICBS
ZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiBhdHRyaWJ1dGVkU3VidGl0bGVUZXh0ID0gYWRv
cHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6c3VidGl0bGVU
ZXh0IGF0dHJpYnV0ZXM6dGV4dEF0dHJpYnV0ZXNdKTsKICAgICBzdWJ0aXRsZUxpbmUgPSBhZG9w
dENGKENUTGluZUNyZWF0ZVdpdGhBdHRyaWJ1dGVkU3RyaW5nKChDRkF0dHJpYnV0ZWRTdHJpbmdS
ZWYpYXR0cmlidXRlZFN1YnRpdGxlVGV4dC5nZXQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9jb2NvYS9XZWJWaWV3VmlzdWFsSWRlbnRpZmljYXRpb25PdmVybGF5Lm1t
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJWaWV3VmlzdWFsSWRlbnRpZmljYXRp
b25PdmVybGF5Lm1tCmluZGV4IDE2YzM0ODYzZGNjM2Q1MWIxNWRkN2Y5MzQwZWUyN2E2MGNmYjQ3
OTMuLjk1YzI4MWE2YjE5N2Y2OWQ1ZGM2MDYwOTc5MTlmOWFmNGYzMTQwYmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvY29jb2EvV2ViVmlld1Zpc3VhbElkZW50aWZpY2F0aW9u
T3ZlcmxheS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2NvY29hL1dlYlZpZXdWaXN1
YWxJZGVudGlmaWNhdGlvbk92ZXJsYXkubW0KQEAgLTk0LDcgKzk0LDcgQEAgLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoV2ViVmlldzooUGxhdGZvcm1WaWV3ICopd2ViVmlldyBraW5kOihOU1N0cmlu
ZyAqKWtpbmQgZGUKICAgICBbX2xheWVyIHNldE5hbWU6QCJXZWJWaWV3VmlzdWFsSWRlbnRpZmlj
YXRpb25PdmVybGF5Il07CiAgICAgW19sYXllciBzZXRGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIFtf
dmlldyBib3VuZHNdLnNpemUud2lkdGgsIFtfdmlldyBib3VuZHNdLnNpemUuaGVpZ2h0KV07CiAg
ICAgYXV0byB2aWV3Q29sb3IgPSBpc0RlcHJlY2F0ZWQgPyBXZWJDb3JlOjpDb2xvcjo6cmVkLmNv
bG9yV2l0aEFscGhhQnl0ZSg1MCkgOiBXZWJDb3JlOjpDb2xvcjo6Ymx1ZS5jb2xvcldpdGhBbHBo
YUJ5dGUoMzIpOwotICAgIFtfbGF5ZXIgc2V0QmFja2dyb3VuZENvbG9yOmNhY2hlZENHQ29sb3Io
dmlld0NvbG9yKV07CisgICAgW19sYXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6Y2FjaGVkQ0dDb2xv
cih2aWV3Q29sb3IpLmdldCgpXTsKICAgICBbX2xheWVyIHNldFpQb3NpdGlvbjo5OTldOwogICAg
IFtfbGF5ZXIgc2V0RGVsZWdhdGU6c2VsZl07CiAgICAgW19sYXllciB3ZWJfZGlzYWJsZUFsbEFj
dGlvbnNdOwpAQCAtMTUzLDExICsxNTMsMTEgQEAgc3RhdGljIHZvaWQgZHJhd1BhdHRlcm4odm9p
ZCAqb3ZlcmxheVB0ciwgQ0dDb250ZXh0UmVmIGN0eCkKICAgICBDR0NvbnRleHRTZXRUZXh0RHJh
d2luZ01vZGUoY3R4LCBrQ0dUZXh0RmlsbCk7CiAKICAgICBDR0NvbnRleHRTZXRUZXh0UG9zaXRp
b24oY3R4LCAwLCAwKTsKLSAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3JXaXRoQ29sb3IoY3R4LCBj
YWNoZWRDR0NvbG9yKFdlYkNvcmU6OkNvbG9yOjpibGFjaykpOworICAgIENHQ29udGV4dFNldEZp
bGxDb2xvcldpdGhDb2xvcihjdHgsIGNhY2hlZENHQ29sb3IoV2ViQ29yZTo6Q29sb3I6OmJsYWNr
KS5nZXQoKSk7CiAgICAgQ1RMaW5lRHJhdyhsaW5lLmdldCgpLCBjdHgpOwogCiAgICAgQ0dDb250
ZXh0U2V0VGV4dFBvc2l0aW9uKGN0eCwgMCwgdGV4dFNpemUuaGVpZ2h0ICsgNSk7Ci0gICAgQ0dD
b250ZXh0U2V0RmlsbENvbG9yV2l0aENvbG9yKGN0eCwgY2FjaGVkQ0dDb2xvcihXZWJDb3JlOjpD
b2xvcjo6d2hpdGUpKTsKKyAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3JXaXRoQ29sb3IoY3R4LCBj
YWNoZWRDR0NvbG9yKFdlYkNvcmU6OkNvbG9yOjp3aGl0ZSkuZ2V0KCkpOwogICAgIENUTGluZURy
YXcobGluZS5nZXQoKSwgY3R4KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
Y29hL0FyZ3VtZW50Q29kZXJzQ29jb2EubW0KaW5kZXggMjEyNTM5OTI2NGFiMWZjMGEzNmM1YzM2
MDU0MTdkYmQzNjMzYzhkOC4uYzZmZmY2OTA2ZmMyMTY1ZjkzMTczMzkxNTkzMGZhNDlmNjYxODY0
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnND
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Bcmd1bWVudENvZGVyc0Nv
Y29hLm1tCkBAIC0yOTEsNyArMjkxLDcgQEAgc3RhdGljIGlubGluZSBzdGQ6Om9wdGlvbmFsPFJl
dGFpblB0cjxpZD4+IGRlY29kZUNvbG9ySW50ZXJuYWwoRGVjb2RlciYgZGVjb2RlcikKICAgICBD
b2xvciBjb2xvcjsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvbG9yKSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4geyBhZG9wdE5TKFtbVUlDb2xvciBhbGxvY10g
aW5pdFdpdGhDR0NvbG9yOmNhY2hlZENHQ29sb3IoY29sb3IpXSkgfTsKKyAgICByZXR1cm4geyBh
ZG9wdE5TKFtbVUlDb2xvciBhbGxvY10gaW5pdFdpdGhDR0NvbG9yOmNhY2hlZENHQ29sb3IoY29s
b3IpLmdldCgpXSkgfTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1tIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVByb3Bl
cnR5QXBwbGllci5tbQppbmRleCBhODFmMGU1MjAxNTY1M2ZkNGQwOWYzN2ZlZjdmYmZhZjY4MTRh
NzMwLi4zYWIzN2MxZmYyNTJlYTk0NTg1NTU3MWYzZmViMWE4YTY2ZGFmZGE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlUHJv
cGVydHlBcHBsaWVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIubW0KQEAgLTEwMiw3ICsxMDIsNyBAQCBA
ZW5kCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1zdGF0
aWMgQ0dDb2xvclJlZiBjZ0NvbG9yRnJvbUNvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK3N0YXRp
YyBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gY2dDb2xvckZyb21Db2xvcihjb25zdCBDb2xvciYgY29s
b3IpCiB7CiAgICAgaWYgKCFjb2xvci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBuaWw7CkBA
IC0xNjYsMTAgKzE2NiwxMCBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllcjo6
YXBwbHlQcm9wZXJ0aWVzVG9MYXllcihDQUxheWVyICpsYXllciwgUmVtbwogICAgICAgICBsYXll
ci5ib3VuZHMgPSBwcm9wZXJ0aWVzLmJvdW5kczsKICAgICAKICAgICBpZiAocHJvcGVydGllcy5j
aGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpCYWNrZ3JvdW5k
Q29sb3JDaGFuZ2VkKQotICAgICAgICBsYXllci5iYWNrZ3JvdW5kQ29sb3IgPSBjZ0NvbG9yRnJv
bUNvbG9yKHByb3BlcnRpZXMuYmFja2dyb3VuZENvbG9yKTsKKyAgICAgICAgbGF5ZXIuYmFja2dy
b3VuZENvbG9yID0gY2dDb2xvckZyb21Db2xvcihwcm9wZXJ0aWVzLmJhY2tncm91bmRDb2xvciku
Z2V0KCk7CiAKICAgICBpZiAocHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uOjpCb3JkZXJDb2xvckNoYW5nZWQpCi0gICAgICAgIGxheWVyLmJv
cmRlckNvbG9yID0gY2dDb2xvckZyb21Db2xvcihwcm9wZXJ0aWVzLmJvcmRlckNvbG9yKTsKKyAg
ICAgICAgbGF5ZXIuYm9yZGVyQ29sb3IgPSBjZ0NvbG9yRnJvbUNvbG9yKHByb3BlcnRpZXMuYm9y
ZGVyQ29sb3IpLmdldCgpOwogCiAgICAgaWYgKHByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMg
JiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6Qm9yZGVyV2lkdGhDaGFuZ2VkKQogICAgICAg
ICBsYXllci5ib3JkZXJXaWR0aCA9IHByb3BlcnRpZXMuYm9yZGVyV2lkdGg7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCAxNzNkNzMwZDUy
NTU4N2ZmNDIyZWViOTAyODdkMzI4ZDU3ZmU3ZDdmLi5hNWFhODNlNTI3NGQ0MDRmYWFmY2MxNDFi
ZDcwNDk2MDExYjI1OGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW0KQEAgLTE3NzAsMTIgKzE3NzAsMTIgQEAgLSAoQ29jb2FDb2xvciAqKXRo
ZW1lQ29sb3IKICAgICBhdXRvIHRoZW1lQ29sb3IgPSBfcGFnZS0+dGhlbWVDb2xvcigpOwogICAg
IGlmICghdGhlbWVDb2xvci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0
dXJuIFdlYkNvcmU6OnBsYXRmb3JtQ29sb3IodGhlbWVDb2xvcik7CisgICAgcmV0dXJuIFdlYkNv
cmU6OnBsYXRmb3JtQ29sb3IodGhlbWVDb2xvcikuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoQ29j
b2FDb2xvciAqKXVuZGVyUGFnZUJhY2tncm91bmRDb2xvcgogewotICAgIHJldHVybiBXZWJDb3Jl
OjpwbGF0Zm9ybUNvbG9yKF9wYWdlLT51bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IoKSk7CisgICAg
cmV0dXJuIFdlYkNvcmU6OnBsYXRmb3JtQ29sb3IoX3BhZ2UtPnVuZGVyUGFnZUJhY2tncm91bmRD
b2xvcigpKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtICh2b2lkKXNldFVuZGVyUGFnZUJhY2tncm91
bmRDb2xvcjooQ29jb2FDb2xvciAqKXVuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlCkBA
IC0zMjY1LDcgKzMyNjUsNyBAQCAtIChDb2NvYUNvbG9yICopX3BhZ2VFeHRlbmRlZEJhY2tncm91
bmRDb2xvcgogICAgIGF1dG8gcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yID0gX3BhZ2UtPnBh
Z2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcigpOwogICAgIGlmICghcGFnZUV4dGVuZGVkQmFja2dy
b3VuZENvbG9yLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gV2Vi
Q29yZTo6cGxhdGZvcm1Db2xvcihwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IpOworICAgIHJl
dHVybiBXZWJDb3JlOjpwbGF0Zm9ybUNvbG9yKHBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvciku
YXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoQ29jb2FDb2xvciAqKV9zYW1wbGVkUGFnZVRvcENvbG9y
CkBAIC0zMjczLDcgKzMyNzMsNyBAQCAtIChDb2NvYUNvbG9yICopX3NhbXBsZWRQYWdlVG9wQ29s
b3IKICAgICBhdXRvIHNhbXBsZWRQYWdlVG9wQ29sb3IgPSBfcGFnZS0+c2FtcGxlZFBhZ2VUb3BD
b2xvcigpOwogICAgIGlmICghc2FtcGxlZFBhZ2VUb3BDb2xvci5pc1ZhbGlkKCkpCiAgICAgICAg
IHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnBsYXRmb3JtQ29sb3Ioc2FtcGxlZFBh
Z2VUb3BDb2xvcik7CisgICAgcmV0dXJuIFdlYkNvcmU6OnBsYXRmb3JtQ29sb3Ioc2FtcGxlZFBh
Z2VUb3BDb2xvcikuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoaWQgPF9XS0lucHV0RGVsZWdhdGU+
KV9pbnB1dERlbGVnYXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tCmluZGV4IDM1YzIyNWYzY2Q2Nzg5
YWUyMDQzZjk2MWU5MDA1YzUzNGViZTRmZDguLjZmZGYwOTAyNGQ4NjYzNTViNzBhY2RlZmMwMzli
MjMzNDdmMTExMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tCkBAIC0xMzksNyArMTM5LDcgQEAg
LSAoTlNVUkwgKilzdGFydFVSTAogCiAtIChDb2NvYUNvbG9yICopdGhlbWVDb2xvcgogewotICAg
IHJldHVybiBXZWJDb3JlOjpwbGF0Zm9ybUNvbG9yKF9hcHBsaWNhdGlvbk1hbmlmZXN0LT5hcHBs
aWNhdGlvbk1hbmlmZXN0KCkudGhlbWVDb2xvcik7CisgICAgcmV0dXJuIFdlYkNvcmU6OnBsYXRm
b3JtQ29sb3IoX2FwcGxpY2F0aW9uTWFuaWZlc3QtPmFwcGxpY2F0aW9uTWFuaWZlc3QoKS50aGVt
ZUNvbG9yKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChfV0tBcHBsaWNhdGlvbk1hbmlmZXN0RGlz
cGxheU1vZGUpZGlzcGxheU1vZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lv
cy9XS1dlYlZpZXdJT1MubW0KaW5kZXggZjkwYWJhOWFkOTlkYjM1M2I0NDIzMTAxODY2ZmExZTU4
ZGQ1NGI5OS4uNzQ4NjgwNDNlMDljYTYyN2RkNzYwZTliMzE0NjY5NDM2NDI3YjA4MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KQEAgLTU0
NCw3ICs1NDQsNyBAQCAtICh2b2lkKV91cGRhdGVTY3JvbGxWaWV3QmFja2dyb3VuZAogICAgIGlm
IChfc2Nyb2xsVmlld0JhY2tncm91bmRDb2xvciAhPSBuZXdTY3JvbGxWaWV3QmFja2dyb3VuZENv
bG9yKSB7CiAgICAgICAgIF9zY3JvbGxWaWV3QmFja2dyb3VuZENvbG9yID0gbmV3U2Nyb2xsVmll
d0JhY2tncm91bmRDb2xvcjsKIAotICAgICAgICBhdXRvIHVpQmFja2dyb3VuZENvbG9yID0gYWRv
cHROUyhbW1VJQ29sb3IgYWxsb2NdIGluaXRXaXRoQ0dDb2xvcjpjYWNoZWRDR0NvbG9yKG5ld1Nj
cm9sbFZpZXdCYWNrZ3JvdW5kQ29sb3IpXSk7CisgICAgICAgIGF1dG8gdWlCYWNrZ3JvdW5kQ29s
b3IgPSBhZG9wdE5TKFtbVUlDb2xvciBhbGxvY10gaW5pdFdpdGhDR0NvbG9yOmNhY2hlZENHQ29s
b3IobmV3U2Nyb2xsVmlld0JhY2tncm91bmRDb2xvcikuZ2V0KCldKTsKICAgICAgICAgW19zY3Jv
bGxWaWV3IHNldEJhY2tncm91bmRDb2xvcjp1aUJhY2tncm91bmRDb2xvci5nZXQoKV07CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCmluZGV4IDViYmRl
ZDI3NTRmOWMyMzQwNDE4NGZmMmEyMWQ1ZTVlZWI5YmM1OGIuLmE1ODg2MWZjMzExOWVjYzk0ZjNh
ZGEwMzM5OTIwY2FjMjZhODJlZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9tYWMvV0tWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMv
V0tWaWV3Lm1tCkBAIC0xMzI4LDcgKzEzMjgsNyBAQCAtICh2b2lkKXNldFNob3VsZENsaXBUb1Zp
c2libGVSZWN0OihCT09MKWNsaXBzVG9WaXNpYmxlUmVjdAogCiAtIChOU0NvbG9yICopdW5kZXJs
YXlDb2xvcgogewotICAgIHJldHVybiBfZGF0YS0+X2ltcGwtPnVuZGVybGF5Q29sb3IoKTsKKyAg
ICByZXR1cm4gX2RhdGEtPl9pbXBsLT51bmRlcmxheUNvbG9yKCkuYXV0b3JlbGVhc2UoKTsKIH0K
IAogLSAodm9pZClzZXRVbmRlcmxheUNvbG9yOihOU0NvbG9yICopdW5kZXJsYXlDb2xvcgpAQCAt
MTUxNiw3ICsxNTE2LDcgQEAgLSAoX1dLT3ZlcmxheVNjcm9sbGJhclN0eWxlKV9vdmVybGF5U2Ny
b2xsYmFyU3R5bGUKIAogLSAoTlNDb2xvciAqKV9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IK
IHsKLSAgICByZXR1cm4gX2RhdGEtPl9pbXBsLT5wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3Io
KTsKKyAgICByZXR1cm4gX2RhdGEtPl9pbXBsLT5wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3Io
KS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChCT09MKWlzVXNpbmdVSVNpZGVDb21wb3NpdGluZwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL21hYy9XS1dlYlZpZXdNYWMu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvbWFjL1dLV2ViVmlld01hYy5tbQppbmRl
eCBhMDdjOWVkZTVhNWI0YjRhYzAzYjFmMWQ0ZDEwNWI1MzJhNGNlNzYzLi41YjA2YmM1N2RhNDFk
YzJmMTI0NDgyZWM5MzhjZTA2MDVhNWUzZjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvbWFjL1dLV2ViVmlld01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvbWFjL1dLV2ViVmlld01hYy5tbQpAQCAtMTM1NSw3ICsxMzU1LDcgQEAgLSAodm9p
ZClfc2V0QmFja2dyb3VuZENvbG9yOihOU0NvbG9yICopYmFja2dyb3VuZENvbG9yCiAKIC0gKE5T
Q29sb3IgKilfdW5kZXJsYXlDb2xvcgogewotICAgIHJldHVybiBfaW1wbC0+dW5kZXJsYXlDb2xv
cigpOworICAgIHJldHVybiBfaW1wbC0+dW5kZXJsYXlDb2xvcigpLmF1dG9yZWxlYXNlKCk7CiB9
CiAKIC0gKHZvaWQpX3NldFVuZGVybGF5Q29sb3I6KE5TQ29sb3IgKil1bmRlcmxheUNvbG9yCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAppbmRleCA1OTBiODdj
MWM1YzJjMDlhY2U4YjlmMTcxMGRiOTM3ODQyYjE1NmM1Li4xYzU3NDQ1OGVmMzA4YzFhMDU1NDFi
ZDZhZGQyYmRhNTA0MDBkMjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLmgKQEAgLTMxNSw4ICszMTUsOCBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6RGVz
dGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UoKTsKIAogICAgIHZvaWQgc2V0VW5kZXJsYXlD
b2xvcihOU0NvbG9yICopOwotICAgIE5TQ29sb3IgKnVuZGVybGF5Q29sb3IoKSBjb25zdDsKLSAg
ICBOU0NvbG9yICpwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKKyAgICBSZXRh
aW5QdHI8TlNDb2xvcj4gdW5kZXJsYXlDb2xvcigpIGNvbnN0OworICAgIFJldGFpblB0cjxOU0Nv
bG9yPiBwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKICAgICAKICAgICBfV0tS
ZWN0RWRnZSBwaW5uZWRTdGF0ZSgpOwogICAgIF9XS1JlY3RFZGdlIHJ1YmJlckJhbmRpbmdFbmFi
bGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmlu
ZGV4IDQwMmQyY2NiMzdlNWQyNzMxYzcwNjAxZWMzMDhjZDY2MjczNTRkZjcuLjY5ZjQzYTA5NjI3
NjM3ZWVmOTU2MmFiM2JmOTI2NjkxN2IxMmYxMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC0xMzE1LDcgKzEzMTUsNyBAQCB2b2lkIFdlYlZp
ZXdJbXBsOjp1cGRhdGVUZXh0VG91Y2hCYXIoKQogICAgICAgICAgICAgW21fdGV4dFRvdWNoQmFy
SXRlbUNvbnRyb2xsZXIgc2V0VGV4dElzQm9sZDooYm9vbCkobV9wYWdlLT5lZGl0b3JTdGF0ZSgp
LnBvc3RMYXlvdXREYXRhKCkudHlwaW5nQXR0cmlidXRlcyAmIEF0dHJpYnV0ZUJvbGQpXTsKICAg
ICAgICAgICAgIFttX3RleHRUb3VjaEJhckl0ZW1Db250cm9sbGVyIHNldFRleHRJc0l0YWxpYzoo
Ym9vbCkobV9wYWdlLT5lZGl0b3JTdGF0ZSgpLnBvc3RMYXlvdXREYXRhKCkudHlwaW5nQXR0cmli
dXRlcyAmIEF0dHJpYnV0ZUl0YWxpY3MpXTsKICAgICAgICAgICAgIFttX3RleHRUb3VjaEJhckl0
ZW1Db250cm9sbGVyIHNldFRleHRJc1VuZGVybGluZWQ6KGJvb2wpKG1fcGFnZS0+ZWRpdG9yU3Rh
dGUoKS5wb3N0TGF5b3V0RGF0YSgpLnR5cGluZ0F0dHJpYnV0ZXMgJiBBdHRyaWJ1dGVVbmRlcmxp
bmUpXTsKLSAgICAgICAgICAgIFttX3RleHRUb3VjaEJhckl0ZW1Db250cm9sbGVyIHNldFRleHRD
b2xvcjpuc0NvbG9yKGVkaXRvclN0YXRlLnBvc3RMYXlvdXREYXRhKCkudGV4dENvbG9yKV07Cisg
ICAgICAgICAgICBbbV90ZXh0VG91Y2hCYXJJdGVtQ29udHJvbGxlciBzZXRUZXh0Q29sb3I6bnND
b2xvcihlZGl0b3JTdGF0ZS5wb3N0TGF5b3V0RGF0YSgpLnRleHRDb2xvcikuZ2V0KCldOwogICAg
ICAgICAgICAgW1ttX3RleHRUb3VjaEJhckl0ZW1Db250cm9sbGVyIHRleHRMaXN0VG91Y2hCYXJW
aWV3Q29udHJvbGxlcl0gc2V0Q3VycmVudExpc3RUeXBlOihMaXN0VHlwZSltX3BhZ2UtPmVkaXRv
clN0YXRlKCkucG9zdExheW91dERhdGEoKS5lbmNsb3NpbmdMaXN0VHlwZV07CiAgICAgICAgICAg
ICBbbV90ZXh0VG91Y2hCYXJJdGVtQ29udHJvbGxlciBzZXRDdXJyZW50VGV4dEFsaWdubWVudDpu
c1RleHRBbGlnbm1lbnRGcm9tVGV4dEFsaWdubWVudCgoVGV4dEFsaWdubWVudCllZGl0b3JTdGF0
ZS5wb3N0TGF5b3V0RGF0YSgpLnRleHRBbGlnbm1lbnQpXTsKICAgICAgICAgfQpAQCAtMjYyNSw3
ICsyNjI1LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0VW5kZXJsYXlDb2xvcihOU0NvbG9yICp1
bmRlcmxheUNvbG9yKQogICAgIG1fcGFnZS0+c2V0VW5kZXJsYXlDb2xvcihXZWJDb3JlOjpjb2xv
ckZyb21OU0NvbG9yKHVuZGVybGF5Q29sb3IpKTsKIH0KIAotTlNDb2xvciAqV2ViVmlld0ltcGw6
OnVuZGVybGF5Q29sb3IoKSBjb25zdAorUmV0YWluUHRyPE5TQ29sb3I+IFdlYlZpZXdJbXBsOjp1
bmRlcmxheUNvbG9yKCkgY29uc3QKIHsKICAgICBXZWJDb3JlOjpDb2xvciB3ZWJDb2xvciA9IG1f
cGFnZS0+dW5kZXJsYXlDb2xvcigpOwogICAgIGlmICghd2ViQ29sb3IuaXNWYWxpZCgpKQpAQCAt
MjYzNCw3ICsyNjM0LDcgQEAgTlNDb2xvciAqV2ViVmlld0ltcGw6OnVuZGVybGF5Q29sb3IoKSBj
b25zdAogICAgIHJldHVybiBXZWJDb3JlOjpuc0NvbG9yKHdlYkNvbG9yKTsKIH0KIAotTlNDb2xv
ciAqV2ViVmlld0ltcGw6OnBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcigpIGNvbnN0CitSZXRh
aW5QdHI8TlNDb2xvcj4gV2ViVmlld0ltcGw6OnBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcigp
IGNvbnN0CiB7CiAgICAgV2ViQ29yZTo6Q29sb3IgY29sb3IgPSBtX3BhZ2UtPnBhZ2VFeHRlbmRl
ZEJhY2tncm91bmRDb2xvcigpOwogICAgIGlmICghY29sb3IuaXNWYWxpZCgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2lvcy9XS0luc3BlY3RvckhpZ2hs
aWdodFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvaW9zL1dLSW5z
cGVjdG9ySGlnaGxpZ2h0Vmlldy5tbQppbmRleCBjN2I4YWY2NDI2NDk4MmU1NTY2MGExYWUwZmY2
ZTM3NzNhYzc2YjhkLi42OTY0MmU2NGVjMmVhYmRjNzQ5M2JmODllZDZmM2EwZGUzNTBlZDY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvaW9zL1dLSW5zcGVj
dG9ySGlnaGxpZ2h0Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0
b3IvaW9zL1dLSW5zcGVjdG9ySGlnaGxpZ2h0Vmlldy5tbQpAQCAtMjI5LDEwICsyMjksMTAgQEAg
LSAodm9pZClfbGF5b3V0Rm9yTm9kZUhpZ2hsaWdodDooY29uc3QgV2ViQ29yZTo6SW5zcGVjdG9y
T3ZlcmxheTo6SGlnaGxpZ2h0JiloaWcKICAgICBXZWJDb3JlOjpGbG9hdFF1YWQgcGFkZGluZ1F1
YWQgPSBoaWdobGlnaHQucXVhZHNbb2Zmc2V0ICsgMl07CiAgICAgV2ViQ29yZTo6RmxvYXRRdWFk
IGNvbnRlbnRRdWFkID0gaGlnaGxpZ2h0LnF1YWRzW29mZnNldCArIDNdOwogCi0gICAgbWFyZ2lu
TGF5ZXIuZmlsbENvbG9yID0gY2FjaGVkQ0dDb2xvcihoaWdobGlnaHQubWFyZ2luQ29sb3IpOwot
ICAgIGJvcmRlckxheWVyLmZpbGxDb2xvciA9IGNhY2hlZENHQ29sb3IoaGlnaGxpZ2h0LmJvcmRl
ckNvbG9yKTsKLSAgICBwYWRkaW5nTGF5ZXIuZmlsbENvbG9yID0gY2FjaGVkQ0dDb2xvcihoaWdo
bGlnaHQucGFkZGluZ0NvbG9yKTsKLSAgICBjb250ZW50TGF5ZXIuZmlsbENvbG9yID0gY2FjaGVk
Q0dDb2xvcihoaWdobGlnaHQuY29udGVudENvbG9yKTsKKyAgICBtYXJnaW5MYXllci5maWxsQ29s
b3IgPSBjYWNoZWRDR0NvbG9yKGhpZ2hsaWdodC5tYXJnaW5Db2xvcikuZ2V0KCk7CisgICAgYm9y
ZGVyTGF5ZXIuZmlsbENvbG9yID0gY2FjaGVkQ0dDb2xvcihoaWdobGlnaHQuYm9yZGVyQ29sb3Ip
LmdldCgpOworICAgIHBhZGRpbmdMYXllci5maWxsQ29sb3IgPSBjYWNoZWRDR0NvbG9yKGhpZ2hs
aWdodC5wYWRkaW5nQ29sb3IpLmdldCgpOworICAgIGNvbnRlbnRMYXllci5maWxsQ29sb3IgPSBj
YWNoZWRDR0NvbG9yKGhpZ2hsaWdodC5jb250ZW50Q29sb3IpLmdldCgpOwogCiAgICAgbGF5ZXJQ
YXRoV2l0aEhvbGUobWFyZ2luTGF5ZXIsIG1hcmdpblF1YWQsIGJvcmRlclF1YWQpOwogICAgIGxh
eWVyUGF0aFdpdGhIb2xlKGJvcmRlckxheWVyLCBib3JkZXJRdWFkLCBwYWRkaW5nUXVhZCk7CkBA
IC0yNjAsMTAgKzI2MCwxMCBAQCAtICh2b2lkKV9sYXlvdXRGb3JSZWN0c0hpZ2hsaWdodDooY29u
c3QgV2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6SGlnaGxpZ2h0JiloaQogCiAgICAgW3NlbGYg
X2NyZWF0ZUxheWVyczpudW1MYXllcnNdOwogCi0gICAgQ0dDb2xvclJlZiBjb250ZW50Q29sb3Ig
PSBjYWNoZWRDR0NvbG9yKGhpZ2hsaWdodC5jb250ZW50Q29sb3IpOworICAgIGF1dG8gY29udGVu
dENvbG9yID0gY2FjaGVkQ0dDb2xvcihoaWdobGlnaHQuY29udGVudENvbG9yKTsKICAgICBmb3Ig
KE5TVUludGVnZXIgaSA9IDA7IGkgPCBudW1MYXllcnM7ICsraSkgewogICAgICAgICBDQVNoYXBl
TGF5ZXIgKmxheWVyID0gW19sYXllcnMgb2JqZWN0QXRJbmRleDppXTsKLSAgICAgICAgbGF5ZXIu
ZmlsbENvbG9yID0gY29udGVudENvbG9yOworICAgICAgICBsYXllci5maWxsQ29sb3IgPSBjb250
ZW50Q29sb3IuZ2V0KCk7CiAgICAgICAgIGxheWVyUGF0aChsYXllciwgaGlnaGxpZ2h0LnF1YWRz
W2ldKTsKICAgICB9CiB9CkBAIC0zMDgsNyArMzA4LDcgQEAgc3RhdGljIENBTGF5ZXIgKiBjcmVh
dGVMYXlvdXRIYXRjaGluZ0xheWVyKFdlYkNvcmU6OkZsb2F0UXVhZCBxdWFkLCBXZWJDb3JlOjpD
b2wKICAgICAgICAgfQogICAgIH0KICAgICBsYXllci5wYXRoID0gaGF0Y2hQYXRoLmdldCgpOwot
ICAgIGxheWVyLnN0cm9rZUNvbG9yID0gY2FjaGVkQ0dDb2xvcihzdHJva2VDb2xvcik7CisgICAg
bGF5ZXIuc3Ryb2tlQ29sb3IgPSBjYWNoZWRDR0NvbG9yKHN0cm9rZUNvbG9yKS5nZXQoKTsKICAg
ICBsYXllci5saW5lV2lkdGggPSAwLjU7CiAgICAgbGF5ZXIubGluZURhc2hQYXR0ZXJuID0gQFtb
TlNOdW1iZXIgbnVtYmVyV2l0aEludDoyXSwgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6Ml1dOwog
CkBAIC00MTMsOCArNDEzLDggQEAgc3RhdGljIENBTGF5ZXIgKiBjcmVhdGVMYXlvdXRMYWJlbExh
eWVyKFN0cmluZyBsYWJlbCwgV2ViQ29yZTo6RmxvYXRQb2ludCBwb2ludCwKIAogICAgIENBU2hh
cGVMYXllciAqbGFiZWxQYXRoTGF5ZXIgPSBbQ0FTaGFwZUxheWVyIGxheWVyXTsKICAgICBsYWJl
bFBhdGhMYXllci5wYXRoID0gcGxhdGZvcm1MYWJlbFBhdGg7Ci0gICAgbGFiZWxQYXRoTGF5ZXIu
ZmlsbENvbG9yID0gY2FjaGVkQ0dDb2xvcihiYWNrZ3JvdW5kQ29sb3IpOwotICAgIGxhYmVsUGF0
aExheWVyLnN0cm9rZUNvbG9yID0gY2FjaGVkQ0dDb2xvcihzdHJva2VDb2xvcik7CisgICAgbGFi
ZWxQYXRoTGF5ZXIuZmlsbENvbG9yID0gY2FjaGVkQ0dDb2xvcihiYWNrZ3JvdW5kQ29sb3IpLmdl
dCgpOworICAgIGxhYmVsUGF0aExheWVyLnN0cm9rZUNvbG9yID0gY2FjaGVkQ0dDb2xvcihzdHJv
a2VDb2xvcikuZ2V0KCk7CiAgICAgbGFiZWxQYXRoTGF5ZXIucG9zaXRpb24gPSBDR1BvaW50TWFr
ZShwb2ludC54KCksIHBvaW50LnkoKSk7CiAgICAgW2xheWVyIGFkZFN1YmxheWVyOmxhYmVsUGF0
aExheWVyXTsKICNlbmRpZgpAQCAtNDQ2LDcgKzQ0Niw3IEBAIC0gKENBTGF5ZXIgKilfY3JlYXRl
R3JpZE92ZXJsYXlMYXllcjooY29uc3QgV2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6SGlnaGxp
Z2h0CiAgICAgQ0FTaGFwZUxheWVyICpncmlkTGluZXNMYXllciA9IFtDQVNoYXBlTGF5ZXIgbGF5
ZXJdOwogICAgIGdyaWRMaW5lc0xheWVyLnBhdGggPSBncmlkTGluZXNQYXRoLmdldCgpOwogICAg
IGdyaWRMaW5lc0xheWVyLmxpbmVXaWR0aCA9IDE7Ci0gICAgZ3JpZExpbmVzTGF5ZXIuc3Ryb2tl
Q29sb3IgPSBjYWNoZWRDR0NvbG9yKG92ZXJsYXkuY29sb3IpOworICAgIGdyaWRMaW5lc0xheWVy
LnN0cm9rZUNvbG9yID0gY2FjaGVkQ0dDb2xvcihvdmVybGF5LmNvbG9yKS5nZXQoKTsKICAgICBb
bGF5ZXIgYWRkU3VibGF5ZXI6Z3JpZExpbmVzTGF5ZXJdOwogCiAgICAgZm9yIChhdXRvIGdhcFF1
YWQgOiBvdmVybGF5LmdhcHMpCkBAIC00NTcsNyArNDU3LDcgQEAgLSAoQ0FMYXllciAqKV9jcmVh
dGVHcmlkT3ZlcmxheUxheWVyOihjb25zdCBXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5OjpIaWdo
bGlnaHQKICAgICAgICAgbGF5ZXJQYXRoKGFyZWFMYXllciwgYXJlYS5xdWFkKTsKICAgICAgICAg
YXJlYUxheWVyLmxpbmVXaWR0aCA9IDM7CiAgICAgICAgIGFyZWFMYXllci5maWxsQ29sb3IgPSBD
R0NvbG9yR2V0Q29uc3RhbnRDb2xvcihrQ0dDb2xvckNsZWFyKTsKLSAgICAgICAgYXJlYUxheWVy
LnN0cm9rZUNvbG9yID0gY2FjaGVkQ0dDb2xvcihvdmVybGF5LmNvbG9yKTsKKyAgICAgICAgYXJl
YUxheWVyLnN0cm9rZUNvbG9yID0gY2FjaGVkQ0dDb2xvcihvdmVybGF5LmNvbG9yKS5nZXQoKTsK
ICAgICAgICAgW2xheWVyIGFkZFN1YmxheWVyOmFyZWFMYXllcl07CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QREYvV0tQREZIVURWaWV3Lm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUERGL1dLUERGSFVEVmlldy5tbQppbmRleCAzY2YyN2QxYmU5NzA0
ZDZhZjY3MTE0ZDhlOWFkMDkwYjI2YTFlOGNlLi5jZWQyMDIwYjNmYzRjYjkxMWRkODg1ZmM1OGY5
MTJiNjk0NTc5ZmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QREYvV0tQ
REZIVURWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BERi9XS1BERkhVRFZp
ZXcubW0KQEAgLTI2OSw3ICsyNjksNyBAQCAtICh2b2lkKV9zZXR1cExheWVyOihDQUxheWVyICop
cGFyZW50TGF5ZXIKICAgICBfbGF5ZXIgPSBhZG9wdE5TKFtbQ0FMYXllciBhbGxvY10gaW5pdF0p
OwogICAgIFtfbGF5ZXIgc2V0Q29ybmVyUmFkaXVzOmxheWVyQ29ybmVyUmFkaXVzXTsKICAgICAK
LSAgICBbX2xheWVyIHNldEJhY2tncm91bmRDb2xvcjpXZWJDb3JlOjpjYWNoZWRDR0NvbG9yKHsg
V2ViQ29yZTo6U1JHQkE8ZmxvYXQ+KGxheWVyR3JheUNvbXBvbmVudCwgbGF5ZXJHcmF5Q29tcG9u
ZW50LCBsYXllckdyYXlDb21wb25lbnQpIH0pXTsKKyAgICBbX2xheWVyIHNldEJhY2tncm91bmRD
b2xvcjpXZWJDb3JlOjpjYWNoZWRDR0NvbG9yKHsgV2ViQ29yZTo6U1JHQkE8ZmxvYXQ+KGxheWVy
R3JheUNvbXBvbmVudCwgbGF5ZXJHcmF5Q29tcG9uZW50LCBsYXllckdyYXlDb21wb25lbnQpIH0p
LmdldCgpXTsKICAgICBbc2VsZiBfc2V0TGF5ZXJPcGFjaXR5OmxheWVyQWxwaGFdOwogICAgIAog
ICAgIFtzZWxmIF9sb2FkSWNvbkltYWdlc107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbQppbmRleCBiZWU4OWMwMTU1
MjBhN2IzYjAyYTBjZDIyMTFlMzliMTAyMTJmYWEzLi4yZDBlNjY2OTM0NzcyOWM2YjQ0YzE3MDdk
Y2MyZTQyN2RjNzRkNWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
RHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW0KQEAgLTIyNiw3ICsyMjYsNyBAQCB2b2lk
IERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6ZGVsaXZlckRlbGF5ZWREcm9wUHJldmlldyhVSVZp
ZXcgKmNvbnRlbnRWaWV3LCBVSQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIHRleHRJbmRp
Y2F0b3JJbWFnZSA9IHVpSW1hZ2VGb3JJbWFnZShpbmRpY2F0b3IuY29udGVudEltYWdlLmdldCgp
KTsKLSAgICBhdXRvIHByZXZpZXcgPSBjcmVhdGVUYXJnZXRlZERyYWdQcmV2aWV3KHRleHRJbmRp
Y2F0b3JJbWFnZS5nZXQoKSwgY29udGVudFZpZXcsIHByZXZpZXdDb250YWluZXIsIGluZGljYXRv
ci50ZXh0Qm91bmRpbmdSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzLCBpbmRpY2F0b3IudGV4dFJl
Y3RzSW5Cb3VuZGluZ1JlY3RDb29yZGluYXRlcywgW1VJQ29sb3IgY29sb3JXaXRoQ0dDb2xvcjpj
YWNoZWRDR0NvbG9yKGluZGljYXRvci5lc3RpbWF0ZWRCYWNrZ3JvdW5kQ29sb3IpXSwgbmlsKTsK
KyAgICBhdXRvIHByZXZpZXcgPSBjcmVhdGVUYXJnZXRlZERyYWdQcmV2aWV3KHRleHRJbmRpY2F0
b3JJbWFnZS5nZXQoKSwgY29udGVudFZpZXcsIHByZXZpZXdDb250YWluZXIsIGluZGljYXRvci50
ZXh0Qm91bmRpbmdSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzLCBpbmRpY2F0b3IudGV4dFJlY3Rz
SW5Cb3VuZGluZ1JlY3RDb29yZGluYXRlcywgW1VJQ29sb3IgY29sb3JXaXRoQ0dDb2xvcjpjYWNo
ZWRDR0NvbG9yKGluZGljYXRvci5lc3RpbWF0ZWRCYWNrZ3JvdW5kQ29sb3IpLmdldCgpXSwgbmls
KTsKICAgICBmb3IgKGF1dG8mIGl0ZW1BbmRQcmV2aWV3UHJvdmlkZXIgOiBtX2RlbGF5ZWRJdGVt
UHJldmlld1Byb3ZpZGVycykKICAgICAgICAgaXRlbUFuZFByZXZpZXdQcm92aWRlci5wcm92aWRl
cihwcmV2aWV3LmdldCgpKTsKICAgICBtX2RlbGF5ZWRJdGVtUHJldmlld1Byb3ZpZGVycy5jbGVh
cigpOwpAQCAtMzEzLDcgKzMxMyw3IEBAIFVJVGFyZ2V0ZWREcmFnUHJldmlldyAqRHJhZ0Ryb3BJ
bnRlcmFjdGlvblN0YXRlOjpwcmV2aWV3Rm9yRHJhZ0l0ZW0oVUlEcmFnSXRlbSAqCiAgICAgaWYg
KHNob3VsZFVzZVRleHRJbmRpY2F0b3JUb0NyZWF0ZVByZXZpZXdGb3JEcmFnU291cmNlKHNvdXJj
ZSkpIHsKICAgICAgICAgYXV0byBpbmRpY2F0b3IgPSBzb3VyY2UuaW5kaWNhdG9yRGF0YS52YWx1
ZSgpOwogICAgICAgICBhdXRvIHRleHRJbmRpY2F0b3JJbWFnZSA9IHVpSW1hZ2VGb3JJbWFnZShp
bmRpY2F0b3IuY29udGVudEltYWdlLmdldCgpKTsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVRhcmdl
dGVkRHJhZ1ByZXZpZXcodGV4dEluZGljYXRvckltYWdlLmdldCgpLCBjb250ZW50VmlldywgcHJl
dmlld0NvbnRhaW5lciwgaW5kaWNhdG9yLnRleHRCb3VuZGluZ1JlY3RJblJvb3RWaWV3Q29vcmRp
bmF0ZXMsIGluZGljYXRvci50ZXh0UmVjdHNJbkJvdW5kaW5nUmVjdENvb3JkaW5hdGVzLCBbVUlD
b2xvciBjb2xvcldpdGhDR0NvbG9yOmNhY2hlZENHQ29sb3IoaW5kaWNhdG9yLmVzdGltYXRlZEJh
Y2tncm91bmRDb2xvcildLCBuaWwpLmF1dG9yZWxlYXNlKCk7CisgICAgICAgIHJldHVybiBjcmVh
dGVUYXJnZXRlZERyYWdQcmV2aWV3KHRleHRJbmRpY2F0b3JJbWFnZS5nZXQoKSwgY29udGVudFZp
ZXcsIHByZXZpZXdDb250YWluZXIsIGluZGljYXRvci50ZXh0Qm91bmRpbmdSZWN0SW5Sb290Vmll
d0Nvb3JkaW5hdGVzLCBpbmRpY2F0b3IudGV4dFJlY3RzSW5Cb3VuZGluZ1JlY3RDb29yZGluYXRl
cywgW1VJQ29sb3IgY29sb3JXaXRoQ0dDb2xvcjpjYWNoZWRDR0NvbG9yKGluZGljYXRvci5lc3Rp
bWF0ZWRCYWNrZ3JvdW5kQ29sb3IpLmdldCgpXSwgbmlsKS5hdXRvcmVsZWFzZSgpOwogICAgIH0K
IAogICAgIHJldHVybiBuaWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1ZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbQppbmRleCAwM2FiMGQ0MmEwN2IwODNkYTU5
NmQwYmI1NTliZDhjZTMwMTQ0NDYwLi5iYmJiMDI1NGZhYWExZDQ0MjM0ODA0Y2U3YTY4MjA3YWQy
YTk5OTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvVmlld0dlc3R1
cmVDb250cm9sbGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9WaWV3
R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0KQEAgLTIyNSw3ICsyMjUsNyBAQCB2b2lkIFZpZXdHZXN0
dXJlQ29udHJvbGxlcjo6YmVnaW5Td2lwZUdlc3R1cmUoX1VJTmF2aWdhdGlvbkludGVyYWN0aXZl
VHJhbnNpdGlvbgogICAgICAgICAgICAgW21fc25hcHNob3RWaWV3IGxheWVyXS5jb250ZW50cyA9
IHNuYXBzaG90LT5hc0xheWVyQ29udGVudHMoKTsKICAgICAgICAgV2ViQ29yZTo6Q29sb3IgY29y
ZUNvbG9yID0gc25hcHNob3QtPmJhY2tncm91bmRDb2xvcigpOwogICAgICAgICBpZiAoY29yZUNv
bG9yLmlzVmFsaWQoKSkKLSAgICAgICAgICAgIGJhY2tncm91bmRDb2xvciA9IGFkb3B0TlMoW1tV
SUNvbG9yIGFsbG9jXSBpbml0V2l0aENHQ29sb3I6V2ViQ29yZTo6Y2FjaGVkQ0dDb2xvcihjb3Jl
Q29sb3IpXSk7CisgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBhZG9wdE5TKFtbVUlDb2xv
ciBhbGxvY10gaW5pdFdpdGhDR0NvbG9yOldlYkNvcmU6OmNhY2hlZENHQ29sb3IoY29yZUNvbG9y
KS5nZXQoKV0pOwogICAgIH0KIAogICAgIFttX3NuYXBzaG90VmlldyBzZXRCYWNrZ3JvdW5kQ29s
b3I6YmFja2dyb3VuZENvbG9yLmdldCgpXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDI1MzQ1MDJlODRi
YTQ4MGQyNDhkZDZhZThjMjlkYzliNDM0MTA5Y2UuLmMzZjA4OGQ1NTFhMTQxM2VlYzljZWJiZjky
ZDNkMjUxMGE1NmQ3Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtMjAxMiw3ICsyMDEyLDcgQEAgLSAo
dm9pZClfdXBkYXRlVGFwSGlnaGxpZ2h0CiAgICAgaWYgKCFbX2hpZ2hsaWdodFZpZXcgc3VwZXJ2
aWV3XSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgW19oaWdobGlnaHRWaWV3IHNldENvbG9yOmFk
b3B0TlMoW1tVSUNvbG9yIGFsbG9jXSBpbml0V2l0aENHQ29sb3I6Y2FjaGVkQ0dDb2xvcihfdGFw
SGlnaGxpZ2h0SW5mb3JtYXRpb24uY29sb3IpXSkuZ2V0KCldOworICAgIFtfaGlnaGxpZ2h0Vmll
dyBzZXRDb2xvcjphZG9wdE5TKFtbVUlDb2xvciBhbGxvY10gaW5pdFdpdGhDR0NvbG9yOmNhY2hl
ZENHQ29sb3IoX3RhcEhpZ2hsaWdodEluZm9ybWF0aW9uLmNvbG9yKS5nZXQoKV0pLmdldCgpXTsK
IAogICAgIGF1dG8mIGhpZ2hsaWdodGVkUXVhZHMgPSBfdGFwSGlnaGxpZ2h0SW5mb3JtYXRpb24u
cXVhZHM7CiAgICAgYm9vbCBhbGxSZWN0aWxpbmVhciA9IHRydWU7CkBAIC0zNjkxLDcgKzM2OTEs
NyBAQCAtIChVSUNvbG9yICopX2Nhc2NhZGVJbnRlcmFjdGlvblRpbnRDb2xvcgogICAgIGlmICgh
X3BhZ2UtPmVkaXRvclN0YXRlKCkuaXNNaXNzaW5nUG9zdExheW91dERhdGEpIHsKICAgICAgICAg
V2ViQ29yZTo6Q29sb3IgY2FyZXRDb2xvciA9IF9wYWdlLT5lZGl0b3JTdGF0ZSgpLnBvc3RMYXlv
dXREYXRhKCkuY2FyZXRDb2xvcjsKICAgICAgICAgaWYgKGNhcmV0Q29sb3IuaXNWYWxpZCgpKQot
ICAgICAgICAgICAgcmV0dXJuIFtVSUNvbG9yIGNvbG9yV2l0aENHQ29sb3I6Y2FjaGVkQ0dDb2xv
cihjYXJldENvbG9yKV07CisgICAgICAgICAgICByZXR1cm4gW1VJQ29sb3IgY29sb3JXaXRoQ0dD
b2xvcjpjYWNoZWRDR0NvbG9yKGNhcmV0Q29sb3IpLmdldCgpXTsKICAgICB9CiAgICAgcmV0dXJu
IFtzZWxmIF9pbmhlcml0ZWRJbnRlcmFjdGlvblRpbnRDb2xvcl07CiB9CkBAIC04NTk3LDcgKzg1
OTcsNyBAQCAtIChVSVRhcmdldGVkUHJldmlldyAqKV9jcmVhdGVUYXJnZXRlZENvbnRleHRNZW51
SGludFByZXZpZXdJZlBvc3NpYmxlCiAgICAgaWYgKF9wb3NpdGlvbkluZm9ybWF0aW9uLmlzTGlu
ayAmJiBfcG9zaXRpb25JbmZvcm1hdGlvbi5saW5rSW5kaWNhdG9yLmNvbnRlbnRJbWFnZSkgewog
ICAgICAgICBhdXRvIGluZGljYXRvciA9IF9wb3NpdGlvbkluZm9ybWF0aW9uLmxpbmtJbmRpY2F0
b3I7CiAgICAgICAgIGF1dG8gdGV4dEluZGljYXRvckltYWdlID0gdWlJbWFnZUZvckltYWdlKGlu
ZGljYXRvci5jb250ZW50SW1hZ2UuZ2V0KCkpOwotICAgICAgICB0YXJnZXRlZFByZXZpZXcgPSBj
cmVhdGVUYXJnZXRlZFByZXZpZXcodGV4dEluZGljYXRvckltYWdlLmdldCgpLCBzZWxmLCBzZWxm
LmNvbnRhaW5lckZvckNvbnRleHRNZW51SGludFByZXZpZXdzLCBpbmRpY2F0b3IudGV4dEJvdW5k
aW5nUmVjdEluUm9vdFZpZXdDb29yZGluYXRlcywgaW5kaWNhdG9yLnRleHRSZWN0c0luQm91bmRp
bmdSZWN0Q29vcmRpbmF0ZXMsIFtVSUNvbG9yIGNvbG9yV2l0aENHQ29sb3I6Y2FjaGVkQ0dDb2xv
cihpbmRpY2F0b3IuZXN0aW1hdGVkQmFja2dyb3VuZENvbG9yKV0pOworICAgICAgICB0YXJnZXRl
ZFByZXZpZXcgPSBjcmVhdGVUYXJnZXRlZFByZXZpZXcodGV4dEluZGljYXRvckltYWdlLmdldCgp
LCBzZWxmLCBzZWxmLmNvbnRhaW5lckZvckNvbnRleHRNZW51SGludFByZXZpZXdzLCBpbmRpY2F0
b3IudGV4dEJvdW5kaW5nUmVjdEluUm9vdFZpZXdDb29yZGluYXRlcywgaW5kaWNhdG9yLnRleHRS
ZWN0c0luQm91bmRpbmdSZWN0Q29vcmRpbmF0ZXMsIFtVSUNvbG9yIGNvbG9yV2l0aENHQ29sb3I6
Y2FjaGVkQ0dDb2xvcihpbmRpY2F0b3IuZXN0aW1hdGVkQmFja2dyb3VuZENvbG9yKS5nZXQoKV0p
OwogICAgIH0gZWxzZSBpZiAoKF9wb3NpdGlvbkluZm9ybWF0aW9uLmlzQXR0YWNobWVudCB8fCBf
cG9zaXRpb25JbmZvcm1hdGlvbi5pc0ltYWdlKSAmJiBfcG9zaXRpb25JbmZvcm1hdGlvbi5pbWFn
ZSkgewogICAgICAgICBhdXRvIGNnSW1hZ2UgPSBfcG9zaXRpb25JbmZvcm1hdGlvbi5pbWFnZS0+
bWFrZUNHSW1hZ2VDb3B5KCk7CiAgICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbVUlJbWFn
ZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmNnSW1hZ2UuZ2V0KCldKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0hvdmVyUGxhdHRlci5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0hvdmVyUGxhdHRlci5tbQppbmRleCAxNjUzM2RiMzVjN2RkZjg5
ODRlMjAwN2RmNjRhMWIwNjkxODhlNzdiLi43ZjExZTJmM2ZjNzU0ZjM2OWE1ODhmYzdjZjBjMmEw
M2NkOWQ5YzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tIb3Zl
clBsYXR0ZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLSG92ZXJQbGF0
dGVyLm1tCkBAIC0yMzcsNyArMjM3LDcgQEAgLSAodm9pZClkaWRSZWNlaXZlUG9zaXRpb25JbmZv
cm1hdGlvbjooY29uc3QgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3MKICAgICBS
ZXRhaW5QdHI8Q0dDb2xvclJlZj4gb2xkQmFja2dyb3VuZENvbG9yID0gW19sYXN0QmFja2dyb3Vu
ZExheWVyIHByZXNlbnRhdGlvbkxheWVyXS5iYWNrZ3JvdW5kQ29sb3I7CiAgICAgUmV0YWluUHRy
PENBTGF5ZXI+IGJhY2tncm91bmQgPSBfbGFzdEJhY2tncm91bmRMYXllciA/OiBhZG9wdE5TKFtb
Q0FMYXllciBhbGxvY10gaW5pdF0pOwogICAgIFtiYWNrZ3JvdW5kIHNldEZyYW1lOltwbGF0dGVy
IGJvdW5kc11dOwotICAgIFtiYWNrZ3JvdW5kIHNldEJhY2tncm91bmRDb2xvcjpjYWNoZWRDR0Nv
bG9yKGluZm9ybWF0aW9uLmxpbmtJbmRpY2F0b3IuZXN0aW1hdGVkQmFja2dyb3VuZENvbG9yKV07
CisgICAgW2JhY2tncm91bmQgc2V0QmFja2dyb3VuZENvbG9yOmNhY2hlZENHQ29sb3IoaW5mb3Jt
YXRpb24ubGlua0luZGljYXRvci5lc3RpbWF0ZWRCYWNrZ3JvdW5kQ29sb3IpLmdldCgpXTsKICAg
ICBbYmFja2dyb3VuZCBzZXRNYXNrOm1hc2suZ2V0KCldOwogICAgIFtiYWNrZ3JvdW5kIHdlYl9k
aXNhYmxlQWxsQWN0aW9uc107CiAgICAgW3BsYXR0ZXIgYWRkU3VibGF5ZXI6YmFja2dyb3VuZC5n
ZXQoKV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tG
b3JtQ29sb3JDb250cm9sLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dL
Rm9ybUNvbG9yQ29udHJvbC5tbQppbmRleCA1N2E5NjZmMjI1NmU4MDYxYWJkMjkxYzYyNTBkMDQ5
ZmEwMmFlZDk2Li5hNmZiMGE4YzlmNjEwNzc4ZGI4NDZhNGFkY2Y3MWIyNjc0MWNkNGE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtQ29sb3JDb250
cm9sLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1Db2xv
ckNvbnRyb2wubW0KQEAgLTc5LDcgKzc5LDcgQEAgLSAoTlNBcnJheTxVSUNvbG9yICo+ICopZm9j
dXNlZEVsZW1lbnRTdWdnZXN0ZWRDb2xvcnMKIAogICAgIE5TTXV0YWJsZUFycmF5PFVJQ29sb3Ig
Kj4gKmNvbG9ycyA9IFtOU011dGFibGVBcnJheSBhcnJheV07CiAgICAgZm9yIChjb25zdCBXZWJD
b3JlOjpDb2xvciYgY29sb3IgOiBfdmlldy5mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLnN1Z2dl
c3RlZENvbG9ycykKLSAgICAgICAgW2NvbG9ycyBhZGRPYmplY3Q6W1VJQ29sb3IgY29sb3JXaXRo
Q0dDb2xvcjpjYWNoZWRDR0NvbG9yKGNvbG9yKV1dOworICAgICAgICBbY29sb3JzIGFkZE9iamVj
dDpbVUlDb2xvciBjb2xvcldpdGhDR0NvbG9yOmNhY2hlZENHQ29sb3IoY29sb3IpLmdldCgpXV07
CiAKICAgICByZXR1cm4gY29sb3JzOwogfQpAQCAtODcsNyArODcsNyBAQCAtIChOU0FycmF5PFVJ
Q29sb3IgKj4gKilmb2N1c2VkRWxlbWVudFN1Z2dlc3RlZENvbG9ycwogCiAtICh2b2lkKXVwZGF0
ZUNvbG9yUGlja2VyU3RhdGUKIHsKLSAgICBbX2NvbG9yUGlja2VyVmlld0NvbnRyb2xsZXIgc2V0
U2VsZWN0ZWRDb2xvcjpbVUlDb2xvciBjb2xvcldpdGhDR0NvbG9yOmNhY2hlZENHQ29sb3IoX3Zp
ZXcuZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5jb2xvclZhbHVlKV1dOworICAgIFtfY29sb3JQ
aWNrZXJWaWV3Q29udHJvbGxlciBzZXRTZWxlY3RlZENvbG9yOltVSUNvbG9yIGNvbG9yV2l0aENH
Q29sb3I6Y2FjaGVkQ0dDb2xvcihfdmlldy5mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmNvbG9y
VmFsdWUpLmdldCgpXV07CiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCiAgICAgaWYgKFtf
Y29sb3JQaWNrZXJWaWV3Q29udHJvbGxlciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9z
ZXRTdWdnZXN0ZWRDb2xvcnM6KV0pCiAgICAgICAgIFtfY29sb3JQaWNrZXJWaWV3Q29udHJvbGxl
ciBfc2V0U3VnZ2VzdGVkQ29sb3JzOltzZWxmIGZvY3VzZWRFbGVtZW50U3VnZ2VzdGVkQ29sb3Jz
XV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViQ29sb3JQaWNr
ZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViQ29sb3JQaWNrZXJNYWMu
bW0KaW5kZXggNmRhMWY5NjhmZDg1N2FjMzVlZGVhNzc1YTNjNTZkMmM3N2RkMmZmZS4uOWM0NmM1
OTFmMGQ5NDZjZmEyZTFlOTRmOWU5YzYwNmM0NDExNjFiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1dlYkNvbG9yUGlja2VyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9XZWJDb2xvclBpY2tlck1hYy5tbQpAQCAtMTA3LDcgKzEwNyw3IEBA
IHZvaWQgV2ViQ29sb3JQaWNrZXJNYWM6OnNldFNlbGVjdGVkQ29sb3IoY29uc3QgV2ViQ29yZTo6
Q29sb3ImIGNvbG9yKQogICAgIGlmICghbV9jbGllbnQgfHwgIW1fY29sb3JQaWNrZXJVSSkKICAg
ICAgICAgcmV0dXJuOwogICAgIAotICAgIFttX2NvbG9yUGlja2VyVUkgc2V0Q29sb3I6bnNDb2xv
cihjb2xvcildOworICAgIFttX2NvbG9yUGlja2VyVUkgc2V0Q29sb3I6bnNDb2xvcihjb2xvciku
Z2V0KCldOwogfQogCiB2b2lkIFdlYkNvbG9yUGlja2VyTWFjOjpkaWRDaG9vc2VDb2xvcihjb25z
dCBXZWJDb3JlOjpDb2xvciYgY29sb3IpCkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBXZWJDb2xv
clBpY2tlck1hYzo6c2hvd0NvbG9yUGlja2VyKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikK
ICAgICBpZiAoIW1fY2xpZW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBbbV9jb2xvclBpY2tl
clVJIHNldEFuZFNob3dQaWNrZXI6dGhpcyB3aXRoQ29sb3I6bnNDb2xvcihjb2xvcikgc3VnZ2Vz
dGlvbnM6V1RGTW92ZShtX3N1Z2dlc3Rpb25zKV07CisgICAgW21fY29sb3JQaWNrZXJVSSBzZXRB
bmRTaG93UGlja2VyOnRoaXMgd2l0aENvbG9yOm5zQ29sb3IoY29sb3IpLmdldCgpIHN1Z2dlc3Rp
b25zOldURk1vdmUobV9zdWdnZXN0aW9ucyldOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
QEAgLTIzNyw3ICsyMzcsNyBAQCAtICh2b2lkKXNldEFuZFNob3dQaWNrZXI6KFdlYktpdDo6V2Vi
Q29sb3JQaWNrZXJNYWMqKXBpY2tlciB3aXRoQ29sb3I6KE5TQ29sb3IgKgogICAgIGlmIChzdWdn
ZXN0aW9ucy5zaXplKCkpIHsKICAgICAgICAgc3VnZ2VzdGVkQ29sb3JzID0gYWRvcHROUyhbW05T
Q29sb3JMaXN0IGFsbG9jXSBpbml0XSk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
c3RkOjptaW4oc3VnZ2VzdGlvbnMuc2l6ZSgpLCBtYXhDb2xvclN1Z2dlc3Rpb25zKTsgaSsrKQot
ICAgICAgICAgICAgW3N1Z2dlc3RlZENvbG9ycyBpbnNlcnRDb2xvcjpuc0NvbG9yKHN1Z2dlc3Rp
b25zLmF0KGkpKSBrZXk6QChpKS5zdHJpbmdWYWx1ZSBhdEluZGV4OmldOworICAgICAgICAgICAg
W3N1Z2dlc3RlZENvbG9ycyBpbnNlcnRDb2xvcjpuc0NvbG9yKHN1Z2dlc3Rpb25zLmF0KGkpKS5n
ZXQoKSBrZXk6QChpKS5zdHJpbmdWYWx1ZSBhdEluZGV4OmldOwogICAgIH0KIAogICAgIFtfcG9w
b3ZlcldlbGwgc2V0U3VnZ2VzdGVkQ29sb3JzOnN1Z2dlc3RlZENvbG9ycy5nZXQoKV07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmlu
ZGV4IGIzYzQ4YmJiNGEyOGI4MGNkY2MxYjg5ODAwNzgwYTdkYjkwYTI1MTYuLjA2MGY4ZTBkNmU2
N2NiODRmOWMzYjI4ZjBiMjM1ZTY2NjA0MDczNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC0xMTAzLDcgKzExMDMsNyBA
QCBib29sIFdlYlBhZ2U6OnNob3VsZEF2b2lkQ29tcHV0aW5nUG9zdExheW91dERhdGFGb3JFZGl0
b3JTdGF0ZSgpIGNvbnN0CiAKIHZvaWQgV2ViUGFnZTo6c2V0QWNjZW50Q29sb3IoV2ViQ29yZTo6
Q29sb3IgY29sb3IpCiB7Ci0gICAgW05TQXBwIF9zZXRBY2NlbnRDb2xvcjpjb2xvci5pc1ZhbGlk
KCkgPyBXZWJDb3JlOjpuc0NvbG9yKGNvbG9yKSA6IG5pbF07CisgICAgW05TQXBwIF9zZXRBY2Nl
bnRDb2xvcjpjb2xvci5pc1ZhbGlkKCkgPyBXZWJDb3JlOjpuc0NvbG9yKGNvbG9yKS5nZXQoKSA6
IG5pbF07CiB9CiAKICNlbmRpZiAvLyBIQVZFKEFQUF9BQ0NFTlRfQ09MT1JTKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIu
bW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdl
ci5tbQppbmRleCAxM2E2YmY5MWM5ZjUzZjU1M2M0YjdjZTc0NDI2NmEwMWNjMTBkOTIxLi5jNjFi
ODUxMmJhM2NmY2M4OWU0MzViZjk0MzQ0ZGQ3MjkxNzI1YjJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQpA
QCAtMjk0LDcgKzI5NCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZW50ZXJWaWRl
b0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoSFRNTFZpZGVvRWxlbWVuCiAgICAgICAgIFt2aWRl
b0xheWVyIHNldERlbGVnYXRlOltXZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUgc2hh
cmVkXV07CiAgICAgICAgIFt2aWRlb0xheWVyIHNldE5hbWU6QCJXZWIgVmlkZW8gRnVsbHNjcmVl
biBMYXllciJdOwogICAgICAgICBbdmlkZW9MYXllciBzZXRQb3NpdGlvbjpDR1BvaW50TWFrZSgw
LCAwKV07Ci0gICAgICAgIFt2aWRlb0xheWVyIHNldEJhY2tncm91bmRDb2xvcjpjYWNoZWRDR0Nv
bG9yKFdlYkNvcmU6OkNvbG9yOjp0cmFuc3BhcmVudEJsYWNrKV07CisgICAgICAgIFt2aWRlb0xh
eWVyIHNldEJhY2tncm91bmRDb2xvcjpjYWNoZWRDR0NvbG9yKFdlYkNvcmU6OkNvbG9yOjp0cmFu
c3BhcmVudEJsYWNrKS5nZXQoKV07CiAKICAgICAgICAgLy8gU2V0IGEgc2NhbGUgZmFjdG9yIGhl
cmUgdG8gbWFrZSBjb252ZXJ0UmVjdDp0b0xheWVyOm5pbCB0YWtlIHNjYWxlIGZhY3RvciBpbnRv
IGFjY291bnQuIDxyZGFyOi8vcHJvYmxlbS8xODMxNjU0Mj4uCiAgICAgICAgIC8vIFRoaXMgc2Nh
bGUgZmFjdG9yIGlzIGludmVydGVkIGluIHRoZSBob3N0aW5nIHByb2Nlc3MuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdJT1MubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdJT1MubW0KaW5kZXggOTdjMzc5
Y2VlNjZiNDkwODY5MWFmMGRmMWVjYjY2OWJlM2I2NWQyNS4uM2VkNDJkZDBjNTNmNjczYWU0NWYy
ZTc0MWExNzY0NjM0MDMwYTY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3Mv
V2ViVmlldy9XZWJQREZWaWV3SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dl
YlZpZXcvV2ViUERGVmlld0lPUy5tbQpAQCAtMTIyLDcgKzEyMiw3IEBAIC0gKHZvaWQpZHJhd1Bh
Z2U6KENHUERGUGFnZVJlZilhUGFnZQogICAgIC8vIERyYXcgcGFnZS4KICAgICBDR0NvbnRleHRT
YXZlR1N0YXRlKGNvbnRleHQpOwogICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihjb250
ZXh0LCBDR1NpemVNYWtlKDAuMGYsIDIuMGYpLCAzLjBmLCBbW3NlbGYgY2xhc3NdIHNoYWRvd0Nv
bG9yXSk7Ci0gICAgQ0dDb250ZXh0U2V0RmlsbENvbG9yV2l0aENvbG9yKGNvbnRleHQsIGNhY2hl
ZENHQ29sb3IoQ29sb3I6OndoaXRlKSk7CisgICAgQ0dDb250ZXh0U2V0RmlsbENvbG9yV2l0aENv
bG9yKGNvbnRleHQsIGNhY2hlZENHQ29sb3IoQ29sb3I6OndoaXRlKS5nZXQoKSk7CiAgICAgQ0dD
b250ZXh0RmlsbFJlY3QoY29udGV4dCwgcGFnZVJlY3QpOwogICAgIENHQ29udGV4dFJlc3RvcmVH
U3RhdGUoY29udGV4dCk7ICAgIAogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9pb3MvV2ViVmlldy9XZWJQbGFpbldoaXRlVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
aW9zL1dlYlZpZXcvV2ViUGxhaW5XaGl0ZVZpZXcubW0KaW5kZXggNjEwYzdjYzRmMjhhZTE2YzNh
MjVkZDkxZjUxNDFkZTE0Y2EyNTI2My4uNzdjZjA3NzdkMDQyZjQ1YWY5NjUzZmQ3MTcwMTIwNjU0
OGQxMTE5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQ
bGFpbldoaXRlVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dl
YlBsYWluV2hpdGVWaWV3Lm1tCkBAIC00MSw3ICs0MSw3IEBAIEBpbXBsZW1lbnRhdGlvbiBXZWJQ
bGFpbldoaXRlVmlldwogLSAodm9pZClkcmF3UmVjdDooTlNSZWN0KXJlY3QKIHsKICAgICBDR0Nv
bnRleHRSZWYgY29udGV4dCA9IFdLR2V0Q3VycmVudEdyYXBoaWNzQ29udGV4dCgpOwotICAgIENH
Q29udGV4dFNldEZpbGxDb2xvcldpdGhDb2xvcihjb250ZXh0LCBjYWNoZWRDR0NvbG9yKENvbG9y
Ojp3aGl0ZSkpOworICAgIENHQ29udGV4dFNldEZpbGxDb2xvcldpdGhDb2xvcihjb250ZXh0LCBj
YWNoZWRDR0NvbG9yKENvbG9yOjp3aGl0ZSkuZ2V0KCkpOwogICAgIFdLUmVjdEZpbGwoY29udGV4
dCwgW3NlbGYgYm91bmRzXSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01SR0JDb2xvci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01S
R0JDb2xvci5tbQppbmRleCA5NzYyYTYwNDBmYWQ3ZjQ3ZTI1MWYwYTcwYzk3MjY2NGM4OTA0Mzdj
Li42NWRlNDYxOGE5YWYwOTQ5Zjc5ZTQyNmEwM2NhYTlmNThkZTIxYTA3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NUkdCQ29sb3IubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTVJHQkNvbG9yLm1tCkBAIC04NSwxMyArODUsMTMgQEAgLSAo
RE9NQ1NTUHJpbWl0aXZlVmFsdWUgKilhbHBoYQogLSAoTlNDb2xvciAqKWNvbG9yCiB7CiAgICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVybiBXZWJDb3Jl
Ojpuc0NvbG9yKElNUEwtPmNvbG9yKCkpOworICAgIHJldHVybiBXZWJDb3JlOjpuc0NvbG9yKElN
UEwtPmNvbG9yKCkpLmF1dG9yZWxlYXNlKCk7CiB9CiAjZWxzZQogLSAoQ0dDb2xvclJlZiljb2xv
cgogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICByZXR1
cm4gV2ViQ29yZTo6Y2FjaGVkQ0dDb2xvcihJTVBMLT5jb2xvcigpKTsKKyAgICByZXR1cm4gV2Vi
Q29yZTo6Y2FjaGVkQ0dDb2xvcihJTVBMLT5jb2xvcigpKS5hdXRvcmVsZWFzZSgpOwogfQogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkluc3BlY3Rvci9X
ZWJOb2RlSGlnaGxpZ2h0Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkluc3Bl
Y3Rvci9XZWJOb2RlSGlnaGxpZ2h0Vmlldy5tbQppbmRleCA5NTBhZThlMDBkMzBhNDUyMDlmOWFk
ZGEzYzJiMzNmMTMxMDAyMmMxLi5kNjA3ZjhmODg0MGY5MjlhMDFjYmE4ZThlNGRmYjlkMGY0OGY1
ZTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJJbnNwZWN0b3IvV2Vi
Tm9kZUhpZ2hsaWdodFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViSW5z
cGVjdG9yL1dlYk5vZGVIaWdobGlnaHRWaWV3Lm1tCkBAIC0yNzcsMTAgKzI3NywxMCBAQCAtICh2
b2lkKV9sYXlvdXRGb3JOb2RlSGlnaGxpZ2h0OihJbnNwZWN0b3JPdmVybGF5OjpIaWdobGlnaHQq
KWhpZ2hsaWdodCBwYXJlbnQ6KAogICAgIEZsb2F0UXVhZCBwYWRkaW5nUXVhZCA9IGhpZ2hsaWdo
dC0+cXVhZHNbMl07CiAgICAgRmxvYXRRdWFkIGNvbnRlbnRRdWFkID0gaGlnaGxpZ2h0LT5xdWFk
c1szXTsKIAotICAgIG1hcmdpbkxheWVyLmZpbGxDb2xvciA9IGNhY2hlZENHQ29sb3IoaGlnaGxp
Z2h0LT5tYXJnaW5Db2xvcik7Ci0gICAgYm9yZGVyTGF5ZXIuZmlsbENvbG9yID0gY2FjaGVkQ0dD
b2xvcihoaWdobGlnaHQtPmJvcmRlckNvbG9yKTsKLSAgICBwYWRkaW5nTGF5ZXIuZmlsbENvbG9y
ID0gY2FjaGVkQ0dDb2xvcihoaWdobGlnaHQtPnBhZGRpbmdDb2xvcik7Ci0gICAgY29udGVudExh
eWVyLmZpbGxDb2xvciA9IGNhY2hlZENHQ29sb3IoaGlnaGxpZ2h0LT5jb250ZW50Q29sb3IpOwor
ICAgIG1hcmdpbkxheWVyLmZpbGxDb2xvciA9IGNhY2hlZENHQ29sb3IoaGlnaGxpZ2h0LT5tYXJn
aW5Db2xvcikuZ2V0KCk7CisgICAgYm9yZGVyTGF5ZXIuZmlsbENvbG9yID0gY2FjaGVkQ0dDb2xv
cihoaWdobGlnaHQtPmJvcmRlckNvbG9yKS5nZXQoKTsKKyAgICBwYWRkaW5nTGF5ZXIuZmlsbENv
bG9yID0gY2FjaGVkQ0dDb2xvcihoaWdobGlnaHQtPnBhZGRpbmdDb2xvcikuZ2V0KCk7CisgICAg
Y29udGVudExheWVyLmZpbGxDb2xvciA9IGNhY2hlZENHQ29sb3IoaGlnaGxpZ2h0LT5jb250ZW50
Q29sb3IpLmdldCgpOwogCiAgICAgbGF5ZXJQYXRoV2l0aEhvbGUobWFyZ2luTGF5ZXIsIG1hcmdp
blF1YWQsIGJvcmRlclF1YWQpOwogICAgIGxheWVyUGF0aFdpdGhIb2xlKGJvcmRlckxheWVyLCBi
b3JkZXJRdWFkLCBwYWRkaW5nUXVhZCk7CkBAIC0yOTgsMTAgKzI5OCwxMCBAQCAtICh2b2lkKV9s
YXlvdXRGb3JSZWN0c0hpZ2hsaWdodDooSW5zcGVjdG9yT3ZlcmxheTo6SGlnaGxpZ2h0KiloaWdo
bGlnaHQgcGFyZW50OgogCiAgICAgW3NlbGYgX2F0dGFjaDpwYXJlbnRMYXllciBudW1MYXllcnM6
bnVtTGF5ZXJzXTsKIAotICAgIENHQ29sb3JSZWYgY29udGVudENvbG9yID0gY2FjaGVkQ0dDb2xv
cihoaWdobGlnaHQtPmNvbnRlbnRDb2xvcik7CisgICAgYXV0byBjb250ZW50Q29sb3IgPSBjYWNo
ZWRDR0NvbG9yKGhpZ2hsaWdodC0+Y29udGVudENvbG9yKTsKICAgICBmb3IgKE5TVUludGVnZXIg
aSA9IDA7IGkgPCBudW1MYXllcnM7ICsraSkgewogICAgICAgICBDQVNoYXBlTGF5ZXIgKmxheWVy
ID0gW19sYXllcnMgb2JqZWN0QXRJbmRleDppXTsKLSAgICAgICAgbGF5ZXIuZmlsbENvbG9yID0g
Y29udGVudENvbG9yOworICAgICAgICBsYXllci5maWxsQ29sb3IgPSBjb250ZW50Q29sb3IuZ2V0
KCk7CiAgICAgICAgIGxheWVyUGF0aChsYXllciwgaGlnaGxpZ2h0LT5xdWFkc1tpXSk7CiAgICAg
fQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFt
ZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXgg
YzNlM2ViZWE5YzUwOTJkYWQxMmQyNGRmMGMwNDRlNTU3NzJkZGI3YS4uNWJiYzZmNmQ3OWFkZmZl
ZjgyOWM5Y2E3YTlkY2YyOWUwYWE3M2NhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC0xMDE0LDkgKzEwMTQsOSBAQCAtIChDR0NvbG9yUmVmKV9i
b2R5QmFja2dyb3VuZENvbG9yCiAgICAgaWYgKCFjb2xvci5pc1ZhbGlkKCkpCiAgICAgICAgIHJl
dHVybiBuaWw7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgcmV0dXJuIG5zQ29sb3Io
Y29sb3IpOworICAgIHJldHVybiBuc0NvbG9yKGNvbG9yKS5hdXRvcmVsZWFzZSgpOwogI2Vsc2UK
LSAgICByZXR1cm4gY2FjaGVkQ0dDb2xvcihjb2xvcik7CisgICAgcmV0dXJuIGNhY2hlZENHQ29s
b3IoY29sb3IpLmF1dG9yZWxlYXNlKCk7CiAjZW5kaWYKIH0KIApAQCAtMTQwMiw3ICsxNDAyLDcg
QEAgLSAoQ0dDb2xvclJlZiljYXJldENvbG9yCiAgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAg
cmV0dXJuIG5pbDsKICAgICBhdXRvIGNvbG9yID0gV2ViQ29yZTo6Q2FyZXRCYXNlOjpjb21wdXRl
Q2FyZXRDb2xvcihyZW5kZXJlci0+c3R5bGUoKSwgcmVuZGVyZXItPmVsZW1lbnQoKSk7Ci0gICAg
cmV0dXJuIGNvbG9yLmlzVmFsaWQoKSA/IGNhY2hlZENHQ29sb3IoY29sb3IpIDogbmlsOworICAg
IHJldHVybiBjb2xvci5pc1ZhbGlkKCkgPyBjYWNoZWRDR0NvbG9yKGNvbG9yKS5hdXRvcmVsZWFz
ZSgpIDogbmlsOwogfQogCiAtIChOU1ZpZXcgKilkb2N1bWVudFZpZXcKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZVZpZXcubW0KaW5kZXggZTlhN2JlNjQ5OTRm
MjkxYmUxMTM5ZjRlYmZjZDQyNjBhMzJmYTNhMy4uZDVlZGFlNGVjNjUxYzZlZWIzM2YyZjQ0ZGVj
ZTNkMTlmNzMzNTgzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJGcmFtZVZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJGcmFtZVZpZXcubW0KQEAgLTQ5NSw3ICs0OTUsNyBAQCAtICh2b2lkKWRyYXdSZWN0OihOU1Jl
Y3QpcmVjdAogICAgICAgICAgICAgTlNSZWN0RmlsbChyZWN0KTsKICNlbHNlCiAgICAgICAgICAg
ICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gV0tHZXRDdXJyZW50R3JhcGhpY3NDb250ZXh0KCk7
Ci0gICAgICAgICAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3JXaXRoQ29sb3IoY2dDb250ZXh0LCBX
ZWJDb3JlOjpjYWNoZWRDR0NvbG9yKFdlYkNvcmU6OkNvbG9yOjp3aGl0ZSkpOworICAgICAgICAg
ICAgQ0dDb250ZXh0U2V0RmlsbENvbG9yV2l0aENvbG9yKGNnQ29udGV4dCwgV2ViQ29yZTo6Y2Fj
aGVkQ0dDb2xvcihXZWJDb3JlOjpDb2xvcjo6d2hpdGUpLmdldCgpKTsKICAgICAgICAgICAgIFdL
UmVjdEZpbGwoY2dDb250ZXh0LCByZWN0KTsKICNlbmRpZgogICAgICAgICB9CkBAIC01MDcsNyAr
NTA3LDcgQEAgLSAodm9pZClkcmF3UmVjdDooTlNSZWN0KXJlY3QKICAgICAgICAgICAgIE5TUmVj
dEZpbGwocmVjdCk7CiAjZWxzZQogICAgICAgICAgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9
IFdLR2V0Q3VycmVudEdyYXBoaWNzQ29udGV4dCgpOwotICAgICAgICAgICAgQ0dDb250ZXh0U2V0
RmlsbENvbG9yV2l0aENvbG9yKGNnQ29udGV4dCwgV2ViQ29yZTo6Y2FjaGVkQ0dDb2xvcihXZWJD
b3JlOjpDb2xvcjo6Y3lhbikpOworICAgICAgICAgICAgQ0dDb250ZXh0U2V0RmlsbENvbG9yV2l0
aENvbG9yKGNnQ29udGV4dCwgV2ViQ29yZTo6Y2FjaGVkQ0dDb2xvcihXZWJDb3JlOjpDb2xvcjo6
Y3lhbikuZ2V0KCkpOwogICAgICAgICAgICAgV0tSZWN0RmlsbChjZ0NvbnRleHQsIHJlY3QpOwog
I2VuZGlmCiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViSW5kaWNhdGVMYXllci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViSW5kaWNhdGVMYXllci5tbQppbmRleCBhMGQ2ZTgyNjZjYzhlN2Q4YmRlMmViNWU1NDVk
YWQ4NmQxYzY2NmJmLi4wMDdlYTM0MzA3MDczMDNmNzE5OTMzYWJlZWM3MzE1MTI3Y2U1ODJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkluZGljYXRlTGF5
ZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJJbmRpY2F0ZUxh
eWVyLm1tCkBAIC01MSw3ICs1MSw3IEBAIC0gKGlkKWluaXRXaXRoV2ViVmlldzooV2ViVmlldyAq
KXdlYlZpZXcKIAogICAgIC8vIEJsdWUgaGlnaGxpZ2h0IGNvbG9yLgogICAgIGNvbnN0ZXhwciBh
dXRvIGhpZ2hsaWdodENvbG9yID0gU1JHQkE8dWludDhfdD4geyAxMTEsIDE2OCwgMjIwLCAxNjgg
fTsKLSAgICBzZWxmLmJhY2tncm91bmRDb2xvciA9IGNhY2hlZENHQ29sb3IoaGlnaGxpZ2h0Q29s
b3IpOworICAgIHNlbGYuYmFja2dyb3VuZENvbG9yID0gY2FjaGVkQ0dDb2xvcihoaWdobGlnaHRD
b2xvcikuZ2V0KCk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA2ZDY5N2RkODdiZDcwNmJhOWRhNzQzOWYyZGIy
ZDVjMTVhNDRkZDMxLi4zYjEwZGZhZmZjOTdiNGI4MGUzZTAzMjEzMzQxMjJhYzYzNDdkZGZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC04ODIsNyAr
ODgyLDcgQEAgLSAoV2ViVUlUZXh0SW5kaWNhdG9yRGF0YSAqKWluaXRXaXRoSW1hZ2U6KENHSW1h
Z2VSZWYpaW1hZ2UgdGV4dEluZGljYXRvckRhdGE6KGMKICAgICB9CiAKICAgICBpZiAoaW5kaWNh
dG9yRGF0YS5vcHRpb25zLmNvbnRhaW5zKFdlYkNvcmU6OlRleHRJbmRpY2F0b3JPcHRpb246OkNv
bXB1dGVFc3RpbWF0ZWRCYWNrZ3JvdW5kQ29sb3IpKQotICAgICAgICBfZXN0aW1hdGVkQmFja2dy
b3VuZENvbG9yID0gW1BBTDo6YWxsb2NVSUNvbG9ySW5zdGFuY2UoKSBpbml0V2l0aENHQ29sb3I6
Y2FjaGVkQ0dDb2xvcihpbmRpY2F0b3JEYXRhLmVzdGltYXRlZEJhY2tncm91bmRDb2xvcildOwor
ICAgICAgICBfZXN0aW1hdGVkQmFja2dyb3VuZENvbG9yID0gW1BBTDo6YWxsb2NVSUNvbG9ySW5z
dGFuY2UoKSBpbml0V2l0aENHQ29sb3I6Y2FjaGVkQ0dDb2xvcihpbmRpY2F0b3JEYXRhLmVzdGlt
YXRlZEJhY2tncm91bmRDb2xvcikuZ2V0KCldOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC05
NTEwLDcgKzk1MTAsNyBAQCAtICh2b2lkKXVwZGF0ZVRleHRUb3VjaEJhcgogCiAgICAgICAgICAg
ICAgICAgQ29sb3IgdGV4dENvbG9yID0gc3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQ
cm9wZXJ0eUNvbG9yKTsKICAgICAgICAgICAgICAgICBpZiAodGV4dENvbG9yLmlzVmFsaWQoKSkK
LSAgICAgICAgICAgICAgICAgICAgW19wcml2YXRlLT5fdGV4dFRvdWNoQmFySXRlbUNvbnRyb2xs
ZXIgc2V0VGV4dENvbG9yOm5zQ29sb3IodGV4dENvbG9yKV07CisgICAgICAgICAgICAgICAgICAg
IFtfcHJpdmF0ZS0+X3RleHRUb3VjaEJhckl0ZW1Db250cm9sbGVyIHNldFRleHRDb2xvcjpuc0Nv
bG9yKHRleHRDb2xvcikuZ2V0KCldOwogCiAgICAgICAgICAgICAgICAgW19wcml2YXRlLT5fdGV4
dFRvdWNoQmFySXRlbUNvbnRyb2xsZXIgc2V0Q3VycmVudFRleHRBbGlnbm1lbnQ6bnNUZXh0QWxp
Z25tZW50RnJvbVJlbmRlclN0eWxlKHN0eWxlKV07CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>