<?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>227775</bug_id>
          
          <creation_ts>2021-07-07 14:59:33 -0700</creation_ts>
          <short_desc>[Live Text] Selection is misaligned on some images on twitter.com</short_desc>
          <delta_ts>2021-07-08 13:59:43 -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>Platform</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>bdakin</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1775477</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-07-07 14:59:33 -0700</bug_when>
    <thetext>rdar://77142364</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775592</commentid>
    <comment_count>1</comment_count>
      <attachid>433111</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-07-07 20:33:06 -0700</bug_when>
    <thetext>Created attachment 433111
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775612</commentid>
    <comment_count>2</comment_count>
      <attachid>433111</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-07-07 23:10:14 -0700</bug_when>
    <thetext>Comment on attachment 433111
Patch

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

&gt; Source/WebKit/WebProcess/WebCoreSupport/ShareableBitmapUtilities.cpp:43
&gt;  RefPtr&lt;ShareableBitmap&gt; createShareableBitmap(RenderImage&amp; renderImage, std::optional&lt;FloatSize&gt; screenSizeInPixels, AllowAnimatedImages allowAnimatedImages)

This seems like a somewhat bizarre behavior to impose on all clients of `createShareableBitmap for RenderImage`, suddenly giving content from a wide variety of different renderers...

&gt; Source/WebKit/WebProcess/WebCoreSupport/ShareableBitmapUtilities.cpp:53
&gt; +        auto imageBuffer = snapshotFrameRect(frame.get(), snapshotRect, { snapshotFlags, PixelFormat::BGRA8, DestinationColorSpace::SRGB() });

... and this of course is quite limited (transforms, some kinds of video, etc. won&apos;t work); but probably in ways that don&apos;t affect your case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775616</commentid>
    <comment_count>3</comment_count>
      <attachid>433111</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-07-07 23:20:32 -0700</bug_when>
    <thetext>Comment on attachment 433111
Patch

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

&gt;&gt; Source/WebKit/WebProcess/WebCoreSupport/ShareableBitmapUtilities.cpp:43
&gt;&gt;  RefPtr&lt;ShareableBitmap&gt; createShareableBitmap(RenderImage&amp; renderImage, std::optional&lt;FloatSize&gt; screenSizeInPixels, AllowAnimatedImages allowAnimatedImages)
&gt; 
&gt; This seems like a somewhat bizarre behavior to impose on all clients of `createShareableBitmap for RenderImage`, suddenly giving content from a wide variety of different renderers...

From looking over the call sites of `createShareableBitmap`, I think this is compatible with all of the callers. The one in `WebHitTestResultData`, for instance, is only used for visual lookup, and the ones in WebPage are either about Live Text or node snapshotting, via the `includeSnapshot` flag on position information requests.

That said, perhaps this helper function deserves a name that clarifies this, like `createShareableBitmapFromVisibleImage` (I can&apos;t really think of a good name :/). Or maybe the snapshotting part of this can be moved out into a separate function that&apos;s specific to text recognition.

&gt;&gt; Source/WebKit/WebProcess/WebCoreSupport/ShareableBitmapUtilities.cpp:53
&gt;&gt; +        auto imageBuffer = snapshotFrameRect(frame.get(), snapshotRect, { snapshotFlags, PixelFormat::BGRA8, DestinationColorSpace::SRGB() });
&gt; 
&gt; ... and this of course is quite limited (transforms, some kinds of video, etc. won&apos;t work); but probably in ways that don&apos;t affect your case.

Indeed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775618</commentid>
    <comment_count>4</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-07-07 23:36:21 -0700</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #3)
&gt; Comment on attachment 433111 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=433111&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit/WebProcess/WebCoreSupport/ShareableBitmapUtilities.cpp:43
&gt; &gt;&gt;  RefPtr&lt;ShareableBitmap&gt; createShareableBitmap(RenderImage&amp; renderImage, std::optional&lt;FloatSize&gt; screenSizeInPixels, AllowAnimatedImages allowAnimatedImages)
&gt; &gt; 
&gt; &gt; This seems like a somewhat bizarre behavior to impose on all clients of `createShareableBitmap for RenderImage`, suddenly giving content from a wide variety of different renderers...
&gt; 
&gt; From looking over the call sites of `createShareableBitmap`, I think this is
&gt; compatible with all of the callers. The one in `WebHitTestResultData`, for
&gt; instance, is only used for visual lookup, and the ones in WebPage are either
&gt; about Live Text or node snapshotting, via the `includeSnapshot` flag on
&gt; position information requests.

Does seem to be the case, but...

&gt; That said, perhaps this helper function deserves a name that clarifies this,
&gt; like `createShareableBitmapFromVisibleImage` (I can&apos;t really think of a good
&gt; name :/). Or maybe the snapshotting part of this can be moved out into a
&gt; separate function that&apos;s specific to text recognition.

... it does seem like it needs a better name. You could imagine e.g. the Web Inspector&apos;s node snapshotting functionality using something like this method, and it would be pretty weird if you got content from a different node!

&gt; &gt;&gt; Source/WebKit/WebProcess/WebCoreSupport/ShareableBitmapUtilities.cpp:53
&gt; &gt;&gt; +        auto imageBuffer = snapshotFrameRect(frame.get(), snapshotRect, { snapshotFlags, PixelFormat::BGRA8, DestinationColorSpace::SRGB() });
&gt; &gt; 
&gt; &gt; ... and this of course is quite limited (transforms, some kinds of video, etc. won&apos;t work); but probably in ways that don&apos;t affect your case.
&gt; 
&gt; Indeed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775666</commentid>
    <comment_count>5</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-07-08 07:55:41 -0700</bug_when>
    <thetext>(In reply to Tim Horton from comment #4)
&gt; (In reply to Wenson Hsieh from comment #3)
&gt; &gt; Comment on attachment 433111 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=433111&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebKit/WebProcess/WebCoreSupport/ShareableBitmapUtilities.cpp:43
&gt; &gt; &gt;&gt;  RefPtr&lt;ShareableBitmap&gt; createShareableBitmap(RenderImage&amp; renderImage, std::optional&lt;FloatSize&gt; screenSizeInPixels, AllowAnimatedImages allowAnimatedImages)
&gt; &gt; &gt; 
&gt; &gt; &gt; This seems like a somewhat bizarre behavior to impose on all clients of `createShareableBitmap for RenderImage`, suddenly giving content from a wide variety of different renderers...
&gt; &gt; 
&gt; &gt; From looking over the call sites of `createShareableBitmap`, I think this is
&gt; &gt; compatible with all of the callers. The one in `WebHitTestResultData`, for
&gt; &gt; instance, is only used for visual lookup, and the ones in WebPage are either
&gt; &gt; about Live Text or node snapshotting, via the `includeSnapshot` flag on
&gt; &gt; position information requests.
&gt; 
&gt; Does seem to be the case, but...
&gt; 
&gt; &gt; That said, perhaps this helper function deserves a name that clarifies this,
&gt; &gt; like `createShareableBitmapFromVisibleImage` (I can&apos;t really think of a good
&gt; &gt; name :/). Or maybe the snapshotting part of this can be moved out into a
&gt; &gt; separate function that&apos;s specific to text recognition.
&gt; 
&gt; ... it does seem like it needs a better name. You could imagine e.g. the Web
&gt; Inspector&apos;s node snapshotting functionality using something like this
&gt; method, and it would be pretty weird if you got content from a different
&gt; node!

After giving it some more thought, I decided to add an optional flag parameter (e.g. `enum class UseSnapshotForTransparentImages : bool`) that would be `No` by default. Only the Live Text codepaths would then explicitly pass in `Yes`. Hopefully that would address this scenario?

&gt; 
&gt; &gt; &gt;&gt; Source/WebKit/WebProcess/WebCoreSupport/ShareableBitmapUtilities.cpp:53
&gt; &gt; &gt;&gt; +        auto imageBuffer = snapshotFrameRect(frame.get(), snapshotRect, { snapshotFlags, PixelFormat::BGRA8, DestinationColorSpace::SRGB() });
&gt; &gt; &gt; 
&gt; &gt; &gt; ... and this of course is quite limited (transforms, some kinds of video, etc. won&apos;t work); but probably in ways that don&apos;t affect your case.
&gt; &gt; 
&gt; &gt; Indeed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775686</commentid>
    <comment_count>6</comment_count>
      <attachid>433137</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-07-08 09:28:26 -0700</bug_when>
    <thetext>Created attachment 433137
Add an option struct</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775789</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-07-08 13:59:41 -0700</bug_when>
    <thetext>Committed r279751 (239527@main): &lt;https://commits.webkit.org/239527@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 433137.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433111</attachid>
            <date>2021-07-07 20:33:06 -0700</date>
            <delta_ts>2021-07-08 09:28:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227775-20210707203305.patch</filename>
            <type>text/plain</type>
            <size>11783</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5NjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTAzMWUyMDViZDdkODQy
MDliNDU0YTQ4MWYxNmJkZTVhN2UzODIwMi4uOGUxZjJkY2FjZGY1ZWYyNWY2MDVhOWUyZmJhOWU4
YjYxZjM0ZjE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTA3LTA3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtMaXZlIFRleHRd
IFNlbGVjdGlvbiBpcyBtaXNhbGlnbmVkIG9uIHNvbWUgaW1hZ2VzIG9uIHR3aXR0ZXIuY29tCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc3NzUKKyAg
ICAgICAgcmRhcjovLzc3MTQyMzY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgT24gVHdpdHRlciwgaW1hZ2UgdGh1bWJuYWlscyBjb25zaXN0IG9mIGZ1
bGx5IHRyYW5zcGFyZW50IGltYWdlIGVsZW1lbnRzIChgb3BhY2l0eTogMDtgKSB0aGF0IGFyZSBv
dmVybGFpZCBvdmVyCisgICAgICAgIGBkaXZgIGVsZW1lbnRzIHdpdGggYSBiYWNrZ3JvdW5kIGlt
YWdlLiBUaGUgaW1hZ2VzIGZvciBzb21lIG9mIHRoZXNlIHRyYW5zcGFyZW50IGltYWdlIGVsZW1l
bnRzIHNvbWV0aW1lcyBkb24ndAorICAgICAgICBtYXRjaCB0aGUgYmFja2dyb3VuZCBpbWFnZSBi
ZWhpbmQgaXQgKG5hbWVseSwgdGhlIGltYWdlIGlzIHN0cmV0Y2hlZCB0byBleGFjdGx5IGZpdCB0
aGUgYm91bmRzIG9mIHRoZQorICAgICAgICB0cmFuc3BhcmVudCBpbWFnZSBlbGVtZW50IGluIGEg
d2F5IHRoYXQgZG9lcyBub3QgcHJlc2VydmUgYXNwZWN0IHJhdGlvLCB3aGVyZWFzIHRoZSBiYWNr
Z3JvdW5kIGltYWdlIGlzIGNyb3BwZWQKKyAgICAgICAgdG8gY292ZXIgdGhlIGBkaXZgKS4gQXMg
c3VjaCwgTGl2ZSBUZXh0IGluIHRoZXNlIGltYWdlIGVsZW1lbnRzIGVuZHMgdXAgbWlzYWxpZ25l
ZCBhZ2FpbnN0IHRoZSBiYWNrZ3JvdW5kIGltYWdlCisgICAgICAgICh3aGljaCBpcyBhY3R1YWxs
eSB2aXNpYmxlIHRvIHRoZSB1c2VyKS4KKworICAgICAgICBUbyBhZGRyZXNzIHRoaXMsIHNwZWNp
YWwgY2FzZSBmdWxseSB0cmFuc3BhcmVudCBpbWFnZXMgc3VjaCB0aGF0IHdlIHRha2UgYSBzbmFw
c2hvdCBvZiB0aGUgcGFnZSB1c2luZyB0aGUKKyAgICAgICAgYWJzb2x1dGUgYm91bmRzIG9mIHRo
ZSB0cmFuc3BhcmVudCBpbWFnZSBhbmQgcnVuIE9DUiBvdmVyIHRoaXMgc25hcHNob3QsIGluc3Rl
YWQgb2YgdXNpbmcgdGhlIGltYWdlIGRhdGEgYXMtaXMuCisKKyAgICAgICAgVGVzdDogZmFzdC9p
bWFnZXMvdGV4dC1yZWNvZ25pdGlvbi9pbWFnZS1vdmVybGF5LWluLXRyYW5zcGFyZW50LWltYWdl
Lmh0bWwKKworICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEVsZW1lbnQ6OmNvbnRhaW5lclJlY3RGb3JUZXh0UmVjb2duaXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnVwZGF0ZVdpdGhUZXh0UmVjb2duaXRpb25SZXN1bHQp
OgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXBkYXRlRWxlbWVudHNXaXRoVGV4dFJlY29nbml0
aW9uUmVzdWx0cyk6CisKIDIwMjEtMDctMDYgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBh
cHBsZS5jb20+CiAKICAgICAgICAgW0xpdmUgVGV4dF0gRXh0cmFuZW91cyBzcGFjZXMgd2hlbiBj
b3B5aW5nIG9yIHRyYW5zbGF0aW5nIENoaW5lc2UgYW5kIEphcGFuZXNlIHRleHQgaW4gV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IDM0OTk4ZWZjMDZjOWU1NmUzMjlmM2U1YWI3MjhhOWY2Y2VkN2RhZWYuLjNi
ZmE4Y2M0NjA3OGVhYzZkYTA4ZDc3OWFiYmQyMjk1MTVkNmVkMTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTkgQEAKKzIwMjEtMDctMDcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5j
b20+CisKKyAgICAgICAgW0xpdmUgVGV4dF0gU2VsZWN0aW9uIGlzIG1pc2FsaWduZWQgb24gc29t
ZSBpbWFnZXMgb24gdHdpdHRlci5jb20KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNzc3NQorICAgICAgICByZGFyOi8vNzcxNDIzNjQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTZWUgV2ViQ29yZSBDaGFu
Z2VMb2cgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Y3Jl
YXRlU2hhcmVhYmxlQml0bWFwKToKKworICAgICAgICBBZGQgYSBzcGVjaWFsIGNhc2UgdG8gaGFu
ZGxlIHRoZSBzY2VuYXJpbyB3aGVyZSB0aGUgaW1hZ2UgcmVuZGVyZXIgaXMgZnVsbHkgdHJhbnNw
YXJlbnQuIEluc3RlYWQgb2YgdXNpbmcgdGhlCisgICAgICAgIGNhY2hlZCBpbWFnZSBkYXRhLCBm
YWxsIGJhY2sgdG8gYSBmcmFtZS1sZXZlbCBzbmFwc2hvdCBpbnN0ZWFkLCB1c2luZyB0aGUgYm91
bmRzIG9mIHRoZSBpbWFnZSByZW5kZXJlci4KKwogMjAyMS0wNy0wNiAgV2Vuc29uIEhzaWVoICA8
d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbTGl2ZSBUZXh0XSBFeHRyYW5lb3Vz
IHNwYWNlcyB3aGVuIGNvcHlpbmcgb3IgdHJhbnNsYXRpbmcgQ2hpbmVzZSBhbmQgSmFwYW5lc2Ug
dGV4dCBpbiBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKaW5kZXggNWQ5NWYy
NzBkYTc4MWIzZjQxMjEwNzk5ZDFkMzZkMTA3NTg1ZWVmNC4uM2FhODk4YjdlN2I4MjljZDFjYzFl
Y2NlMGM4OTdiMWVjNjEyZTY2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKQEAg
LTEzNDAsNiArMTM0MCwxOCBAQCBib29sIEhUTUxFbGVtZW50Ojppc0ltYWdlT3ZlcmxheVRleHQo
Y29uc3QgTm9kZSYgbm9kZSkKIAogI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKIAorSW50UmVj
dCBIVE1MRWxlbWVudDo6Y29udGFpbmVyUmVjdEZvclRleHRSZWNvZ25pdGlvbigpCit7CisgICAg
YXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOworICAgIGlmICghaXM8UmVuZGVySW1h
Z2U+KHJlbmRlcmVyKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGlmICghcmVuZGVyZXIt
Pm9wYWNpdHkoKSkKKyAgICAgICAgcmV0dXJuIHsgMCwgMCwgb2Zmc2V0V2lkdGgoKSwgb2Zmc2V0
SGVpZ2h0KCkgfTsKKworICAgIHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KGRvd25jYXN0PFJlbmRl
ckltYWdlPigqcmVuZGVyZXIpLnJlcGxhY2VkQ29udGVudFJlY3QoKSk7Cit9CisKIHZvaWQgSFRN
TEVsZW1lbnQ6OnVwZGF0ZVdpdGhUZXh0UmVjb2duaXRpb25SZXN1bHQoY29uc3QgVGV4dFJlY29n
bml0aW9uUmVzdWx0JiByZXN1bHQsIENhY2hlVGV4dFJlY29nbml0aW9uUmVzdWx0cyBjYWNoZVRl
eHRSZWNvZ25pdGlvblJlc3VsdHMpCiB7CiAgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ry
b3llZDxjb25zdCBBdG9tU3RyaW5nPiBpbWFnZU92ZXJsYXlMaW5lQ2xhc3MoImltYWdlLW92ZXJs
YXktbGluZSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKQEAgLTE0NzIsNyAr
MTQ4NCw3IEBAIHZvaWQgSFRNTEVsZW1lbnQ6OnVwZGF0ZVdpdGhUZXh0UmVjb2duaXRpb25SZXN1
bHQoY29uc3QgVGV4dFJlY29nbml0aW9uUmVzdWx0JiByCiAKICAgICBkb3duY2FzdDxSZW5kZXJJ
bWFnZT4oKnJlbmRlcmVyKS5zZXRIYXNJbWFnZU92ZXJsYXkoKTsKIAotICAgIGF1dG8gY29udGFp
bmVyUmVjdCA9IGVuY2xvc2luZ0ludFJlY3QoZG93bmNhc3Q8UmVuZGVySW1hZ2U+KCpyZW5kZXJl
cikucmVwbGFjZWRDb250ZW50UmVjdCgpKTsKKyAgICBhdXRvIGNvbnRhaW5lclJlY3QgPSBjb250
YWluZXJSZWN0Rm9yVGV4dFJlY29nbml0aW9uKCk7CiAgICAgYXV0byBjb252ZXJ0VG9Db250YWlu
ZXJDb29yZGluYXRlcyA9IFsmXShjb25zdCBGbG9hdFF1YWQmIG5vcm1hbGl6ZWRRdWFkKSB7CiAg
ICAgICAgIGF1dG8gcXVhZCA9IG5vcm1hbGl6ZWRRdWFkOwogICAgICAgICBxdWFkLnNjYWxlKGNv
bnRhaW5lclJlY3Qud2lkdGgoKSwgY29udGFpbmVyUmVjdC5oZWlnaHQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxFbGVtZW50LmgKaW5kZXggNDYzZTE2Y2U3YWIyODI5ODhlZjliZGJjYjIzYjI5NmU3ODE5
M2Y3NS4uYWRjMDJmM2ZhNjk3N2JjMTQyN2JkNDc3NTRmMWY0N2Q3ZDViNWMzZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEVsZW1lbnQuaApAQCAtMTM5LDYgKzEzOSw3IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc0ltYWdlT3ZlcmxheVRleHQoY29uc3QgTm9kZSopOwog
CiAjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTKQorICAgIEludFJlY3QgY29udGFpbmVyUmVjdEZv
clRleHRSZWNvZ25pdGlvbigpOwogICAgIGVudW0gY2xhc3MgQ2FjaGVUZXh0UmVjb2duaXRpb25S
ZXN1bHRzIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0
ZVdpdGhUZXh0UmVjb2duaXRpb25SZXN1bHQoY29uc3QgVGV4dFJlY29nbml0aW9uUmVzdWx0Jiwg
Q2FjaGVUZXh0UmVjb2duaXRpb25SZXN1bHRzID0gQ2FjaGVUZXh0UmVjb2duaXRpb25SZXN1bHRz
OjpZZXMpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBmMmYwMWFjODA3NGU3MjA4MjE4
YWMzZjc0OWEyNzM5NGIzY2QxYmEwLi4xMWI0NTU5YWZkMWJhNGRjNzgzZWRmYjA3M2Y0ZDhjMmJi
NTNhZjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTM2MzAsNyArMzYzMCw3IEBAIHZvaWQgUGFn
ZTo6dXBkYXRlRWxlbWVudHNXaXRoVGV4dFJlY29nbml0aW9uUmVzdWx0cygpCiAgICAgICAgIGlm
ICghaXM8UmVuZGVySW1hZ2U+KHJlbmRlcmVyKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0g
ICAgICAgIGF1dG8gbmV3Q29udGFpbmVyUmVjdCA9IGVuY2xvc2luZ0ludFJlY3QoZG93bmNhc3Q8
UmVuZGVySW1hZ2U+KCpyZW5kZXJlcikucmVwbGFjZWRDb250ZW50UmVjdCgpKTsKKyAgICAgICAg
YXV0byBuZXdDb250YWluZXJSZWN0ID0gcHJvdGVjdGVkRWxlbWVudC0+Y29udGFpbmVyUmVjdEZv
clRleHRSZWNvZ25pdGlvbigpOwogICAgICAgICBpZiAoY29udGFpbmVyUmVjdCA9PSBuZXdDb250
YWluZXJSZWN0KQogICAgICAgICAgICAgY29udGludWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TaGFyZWFibGVCaXRtYXBVdGlsaXRpZXMu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1NoYXJlYWJsZUJp
dG1hcFV0aWxpdGllcy5jcHAKaW5kZXggNjQ3YTc3NTAxY2Q5YzI0ZDA5ZmE1YzFlNzk4NmQ2OTlh
ZWJjMDU0NC4uZTAxOGEzMzlkZmZjNzliMTI4M2Y4NTgyZWYyYWQ2NzYyOWM3NzYxYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1NoYXJlYWJsZUJp
dG1hcFV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1NoYXJlYWJsZUJpdG1hcFV0aWxpdGllcy5jcHAKQEAgLTI4LDggKzI4LDExIEBACiAK
ICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NhY2hlZElt
YWdlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRnJh
bWVTbmFwc2hvdHRpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dlb21ldHJ5VXRpbGl0aWVzLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0ltYWdlQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9QbGF0Zm9ybVNjcmVlbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVySW1hZ2Uu
aD4KQEAgLTM5LDYgKzQyLDM0IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBSZWZQdHI8
U2hhcmVhYmxlQml0bWFwPiBjcmVhdGVTaGFyZWFibGVCaXRtYXAoUmVuZGVySW1hZ2UmIHJlbmRl
ckltYWdlLCBzdGQ6Om9wdGlvbmFsPEZsb2F0U2l6ZT4gc2NyZWVuU2l6ZUluUGl4ZWxzLCBBbGxv
d0FuaW1hdGVkSW1hZ2VzIGFsbG93QW5pbWF0ZWRJbWFnZXMpCiB7CisgICAgUmVmIGZyYW1lID0g
cmVuZGVySW1hZ2UuZnJhbWUoKTsKKyAgICBhdXRvIGNvbG9yU3BhY2VGb3JCaXRtYXAgPSBzY3Jl
ZW5Db2xvclNwYWNlKGZyYW1lLT5tYWluRnJhbWUoKS52aWV3KCkpOworICAgIGlmICghcmVuZGVy
SW1hZ2Uub3BhY2l0eSgpKSB7CisgICAgICAgIGF1dG8gc25hcHNob3RSZWN0ID0gcmVuZGVySW1h
Z2UuYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKTsKKyAgICAgICAgaWYgKHNuYXBzaG90UmVjdC5p
c0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4geyB9OworCisgICAgICAgIE9wdGlvblNldDxT
bmFwc2hvdEZsYWdzPiBzbmFwc2hvdEZsYWdzIHsgU25hcHNob3RGbGFnczo6RXhjbHVkZVNlbGVj
dGlvbkhpZ2hsaWdodGluZywgU25hcHNob3RGbGFnczo6UGFpbnRFdmVyeXRoaW5nRXhjbHVkaW5n
U2VsZWN0aW9uIH07CisgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBzbmFwc2hvdEZyYW1lUmVj
dChmcmFtZS5nZXQoKSwgc25hcHNob3RSZWN0LCB7IHNuYXBzaG90RmxhZ3MsIFBpeGVsRm9ybWF0
OjpCR1JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfSk7CisgICAgICAgIGlmICgh
aW1hZ2VCdWZmZXIpCisgICAgICAgICAgICByZXR1cm4geyB9OworCisgICAgICAgIGF1dG8gc25h
cHNob3RJbWFnZSA9IEltYWdlQnVmZmVyOjpzaW5rSW50b0ltYWdlKFdURk1vdmUoaW1hZ2VCdWZm
ZXIpLCBQcmVzZXJ2ZVJlc29sdXRpb246Olllcyk7CisgICAgICAgIGlmICghc25hcHNob3RJbWFn
ZSkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisKKyAgICAgICAgYXV0byBiaXRtYXAgPSBTaGFy
ZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShzbmFwc2hvdFJlY3Quc2l6ZSgpLCB7IFdURk1v
dmUoY29sb3JTcGFjZUZvckJpdG1hcCkgfSk7CisgICAgICAgIGlmICghYml0bWFwKQorICAgICAg
ICAgICAgcmV0dXJuIHsgfTsKKworICAgICAgICBhdXRvIGNvbnRleHQgPSBiaXRtYXAtPmNyZWF0
ZUdyYXBoaWNzQ29udGV4dCgpOworICAgICAgICBpZiAoIWNvbnRleHQpCisgICAgICAgICAgICBy
ZXR1cm4geyB9OworCisgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZSgqc25hcHNob3RJbWFnZSwg
eyBGbG9hdFBvaW50Ojp6ZXJvKCksIHNuYXBzaG90UmVjdC5zaXplKCkgfSk7CisgICAgICAgIHJl
dHVybiBiaXRtYXA7CisgICAgfQorCiAgICAgYXV0byogY2FjaGVkSW1hZ2UgPSByZW5kZXJJbWFn
ZS5jYWNoZWRJbWFnZSgpOwogICAgIGlmICghY2FjaGVkSW1hZ2UgfHwgY2FjaGVkSW1hZ2UtPmVy
cm9yT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01Nyw3ICs4OCw3IEBA
IFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNyZWF0ZVNoYXJlYWJsZUJpdG1hcChSZW5kZXJJbWFn
ZSYgcmVuZGVySW1hZ2UsIHN0ZDo6b3B0CiAgICAgfQogCiAgICAgLy8gRklYTUU6IE9ubHkgc2Vs
ZWN0IEV4dGVuZGVkQ29sb3Igb24gaW1hZ2VzIGtub3duIHRvIG5lZWQgd2lkZSBnYW11dC4KLSAg
ICBhdXRvIHNoYXJlZEJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKElu
dFNpemUoYml0bWFwU2l6ZSksIHsgc2NyZWVuQ29sb3JTcGFjZShyZW5kZXJJbWFnZS5mcmFtZSgp
Lm1haW5GcmFtZSgpLnZpZXcoKSkgfSk7CisgICAgYXV0byBzaGFyZWRCaXRtYXAgPSBTaGFyZWFi
bGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShJbnRTaXplKGJpdG1hcFNpemUpLCB7IFdURk1vdmUo
Y29sb3JTcGFjZUZvckJpdG1hcCkgfSk7CiAgICAgaWYgKCFzaGFyZWRCaXRtYXApCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNWE4Y2Q4NTg1NTNhYTQ2ZGJmODQ2OTM3NTJlNTBj
ZjNlZjI2YmNmZi4uNmZiZmMxNTYzYTBjOWRkZWNhOTYxOTY1ZTYyNTU4YTRlOWI0Y2NhYiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTA3LTA3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNp
ZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtMaXZlIFRleHRdIFNlbGVjdGlvbiBpcyBtaXNhbGln
bmVkIG9uIHNvbWUgaW1hZ2VzIG9uIHR3aXR0ZXIuY29tCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc3NzUKKyAgICAgICAgcmRhcjovLzc3MTQyMzY0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0
L2ltYWdlcy90ZXh0LXJlY29nbml0aW9uL2ltYWdlLW92ZXJsYXktaW4tdHJhbnNwYXJlbnQtaW1h
Z2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ltYWdlcy90ZXh0LXJlY29n
bml0aW9uL2ltYWdlLW92ZXJsYXktaW4tdHJhbnNwYXJlbnQtaW1hZ2UuaHRtbDogQWRkZWQuCisK
IDIwMjEtMDctMDYgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAg
ICAgICAgW0xpdmUgVGV4dF0gRXh0cmFuZW91cyBzcGFjZXMgd2hlbiBjb3B5aW5nIG9yIHRyYW5z
bGF0aW5nIENoaW5lc2UgYW5kIEphcGFuZXNlIHRleHQgaW4gV2ViS2l0CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2ltYWdlcy90ZXh0LXJlY29nbml0aW9uL2ltYWdlLW92ZXJsYXktaW4t
dHJhbnNwYXJlbnQtaW1hZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMv
dGV4dC1yZWNvZ25pdGlvbi9pbWFnZS1vdmVybGF5LWluLXRyYW5zcGFyZW50LWltYWdlLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44MTNkOTc0OWEyZmM2NGNmMjk2YmVhZmQ3ZDE4NzU2M2E2ZWMx
YjdiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvdGV4dC1yZWNv
Z25pdGlvbi9pbWFnZS1vdmVybGF5LWluLXRyYW5zcGFyZW50LWltYWdlLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDYgQEAKK1BBU1MgYm91bmRpbmdSZWN0LndpZHRoIGlzIDI1MAorUEFTUyBib3Vu
ZGluZ1JlY3QuaGVpZ2h0IGlzIDIwMAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3Rl
eHQtcmVjb2duaXRpb24vaW1hZ2Utb3ZlcmxheS1pbi10cmFuc3BhcmVudC1pbWFnZS5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvdGV4dC1yZWNvZ25pdGlvbi9pbWFnZS1vdmVybGF5LWlu
LXRyYW5zcGFyZW50LWltYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGIxZDFlMjhlZDgzZWYxMzdmYzYx
YzVhYmU0YzUzOGVkYTQzOTIwYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
aW1hZ2VzL3RleHQtcmVjb2duaXRpb24vaW1hZ2Utb3ZlcmxheS1pbi10cmFuc3BhcmVudC1pbWFn
ZS5odG1sCkBAIC0wLDAgKzEsNTQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxzdHlsZT4KK2ltZyB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogMDsKKyAg
ICBsZWZ0OiAwOworICAgIHdpZHRoOiAyNTBweDsKKyAgICBoZWlnaHQ6IDQwMHB4OworfQorCisu
YmFjayB7CisgICAgb2JqZWN0LWZpdDogY292ZXI7Cit9CisKKy5mcm9udCB7CisgICAgb3BhY2l0
eTogMDsKK30KKzwvc3R5bGU+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8aW1nIGNsYXNzPSJiYWNrIiBzcmM9
Ii4uL3Jlc291cmNlcy9kaWNlLnBuZyI+PC9pbWc+Cis8aW1nIGNsYXNzPSJmcm9udCIgc3JjPSIu
Li9yZXNvdXJjZXMvZGljZS5wbmciPjwvaW1nPgorPHNjcmlwdD4KK2FkZEV2ZW50TGlzdGVuZXIo
ImxvYWQiLCAoKSA9PiB7CisgICAgY29uc3QgaW1hZ2UgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9y
KCJpbWcuZnJvbnQiKTsKKyAgICBpbnRlcm5hbHMuaW5zdGFsbEltYWdlT3ZlcmxheShpbWFnZSwg
WworICAgICAgICB7CisgICAgICAgICAgICB0b3BMZWZ0IDogbmV3IERPTVBvaW50UmVhZE9ubHko
MCwgMCksCisgICAgICAgICAgICB0b3BSaWdodCA6IG5ldyBET01Qb2ludFJlYWRPbmx5KDEsIDAp
LAorICAgICAgICAgICAgYm90dG9tUmlnaHQgOiBuZXcgRE9NUG9pbnRSZWFkT25seSgxLCAwLjUp
LAorICAgICAgICAgICAgYm90dG9tTGVmdCA6IG5ldyBET01Qb2ludFJlYWRPbmx5KDAsIDAuNSks
CisgICAgICAgICAgICBjaGlsZHJlbjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgdGV4dCA6ICJmb28iLAorICAgICAgICAgICAgICAgICAgICB0b3BMZWZ0IDogbmV3
IERPTVBvaW50UmVhZE9ubHkoMCwgMCksCisgICAgICAgICAgICAgICAgICAgIHRvcFJpZ2h0IDog
bmV3IERPTVBvaW50UmVhZE9ubHkoMSwgMCksCisgICAgICAgICAgICAgICAgICAgIGJvdHRvbVJp
Z2h0IDogbmV3IERPTVBvaW50UmVhZE9ubHkoMSwgMC41KSwKKyAgICAgICAgICAgICAgICAgICAg
Ym90dG9tTGVmdCA6IG5ldyBET01Qb2ludFJlYWRPbmx5KDAsIDAuNSksCisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgfQorICAgIF0pOworCisgICAgbGV0IHRleHQg
PSBpbnRlcm5hbHMuc2hhZG93Um9vdChpbWFnZSkucXVlcnlTZWxlY3RvcigiLmltYWdlLW92ZXJs
YXktdGV4dCIpOworICAgIGJvdW5kaW5nUmVjdCA9IHRleHQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0
KCk7CisgICAgc2hvdWxkQmUoImJvdW5kaW5nUmVjdC53aWR0aCIsICIyNTAiKTsKKyAgICBzaG91
bGRCZSgiYm91bmRpbmdSZWN0LmhlaWdodCIsICIyMDAiKTsKK30pOworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433137</attachid>
            <date>2021-07-08 09:28:26 -0700</date>
            <delta_ts>2021-07-08 13:59:42 -0700</delta_ts>
            <desc>Add an option struct</desc>
            <filename>bug-227775-20210708092825.patch</filename>
            <type>text/plain</type>
            <size>17081</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5NjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTAzMWUyMDViZDdkODQy
MDliNDU0YTQ4MWYxNmJkZTVhN2UzODIwMi4uM2ViYjA2N2MzZTQxZDY3MzM0Nzg2NDY1ZmRmZTlj
NDZjMmE5N2Q1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTA3LTA4ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtMaXZlIFRleHRd
IFNlbGVjdGlvbiBpcyBtaXNhbGlnbmVkIG9uIHNvbWUgaW1hZ2VzIG9uIHR3aXR0ZXIuY29tCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc3NzUKKyAg
ICAgICAgcmRhcjovLzc3MTQyMzY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgT24gVHdpdHRlciwgaW1hZ2UgdGh1bWJuYWlscyBjb25zaXN0IG9mIGZ1
bGx5IHRyYW5zcGFyZW50IGltYWdlIGVsZW1lbnRzIChgb3BhY2l0eTogMDtgKSB0aGF0IGFyZSBv
dmVybGFpZCBvdmVyCisgICAgICAgIGBkaXZgIGVsZW1lbnRzIHdpdGggYSBiYWNrZ3JvdW5kIGlt
YWdlLiBUaGUgaW1hZ2VzIGZvciBzb21lIG9mIHRoZXNlIHRyYW5zcGFyZW50IGltYWdlIGVsZW1l
bnRzIHNvbWV0aW1lcyBkb24ndAorICAgICAgICBtYXRjaCB0aGUgYmFja2dyb3VuZCBpbWFnZSBi
ZWhpbmQgaXQgKG5hbWVseSwgdGhlIGltYWdlIGlzIHN0cmV0Y2hlZCB0byBleGFjdGx5IGZpdCB0
aGUgYm91bmRzIG9mIHRoZQorICAgICAgICB0cmFuc3BhcmVudCBpbWFnZSBlbGVtZW50IGluIGEg
d2F5IHRoYXQgZG9lcyBub3QgcHJlc2VydmUgYXNwZWN0IHJhdGlvLCB3aGVyZWFzIHRoZSBiYWNr
Z3JvdW5kIGltYWdlIGlzIGNyb3BwZWQKKyAgICAgICAgdG8gY292ZXIgdGhlIGBkaXZgKS4gQXMg
c3VjaCwgTGl2ZSBUZXh0IGluIHRoZXNlIGltYWdlIGVsZW1lbnRzIGVuZHMgdXAgbWlzYWxpZ25l
ZCBhZ2FpbnN0IHRoZSBiYWNrZ3JvdW5kIGltYWdlCisgICAgICAgICh3aGljaCBpcyBhY3R1YWxs
eSB2aXNpYmxlIHRvIHRoZSB1c2VyKS4KKworICAgICAgICBUbyBhZGRyZXNzIHRoaXMsIHNwZWNp
YWwgY2FzZSBmdWxseSB0cmFuc3BhcmVudCBpbWFnZXMgc3VjaCB0aGF0IHdlIHRha2UgYSBzbmFw
c2hvdCBvZiB0aGUgcGFnZSB1c2luZyB0aGUKKyAgICAgICAgYWJzb2x1dGUgYm91bmRzIG9mIHRo
ZSB0cmFuc3BhcmVudCBpbWFnZSBhbmQgcnVuIE9DUiBvdmVyIHRoaXMgc25hcHNob3QsIGluc3Rl
YWQgb2YgdXNpbmcgdGhlIGltYWdlIGRhdGEgYXMtaXMuCisKKyAgICAgICAgVGVzdDogZmFzdC9p
bWFnZXMvdGV4dC1yZWNvZ25pdGlvbi9pbWFnZS1vdmVybGF5LWluLXRyYW5zcGFyZW50LWltYWdl
Lmh0bWwKKworICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEVsZW1lbnQ6OmNvbnRhaW5lclJlY3RGb3JUZXh0UmVjb2duaXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnVwZGF0ZVdpdGhUZXh0UmVjb2duaXRpb25SZXN1bHQp
OgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXBkYXRlRWxlbWVudHNXaXRoVGV4dFJlY29nbml0
aW9uUmVzdWx0cyk6CisKIDIwMjEtMDctMDYgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBh
cHBsZS5jb20+CiAKICAgICAgICAgW0xpdmUgVGV4dF0gRXh0cmFuZW91cyBzcGFjZXMgd2hlbiBj
b3B5aW5nIG9yIHRyYW5zbGF0aW5nIENoaW5lc2UgYW5kIEphcGFuZXNlIHRleHQgaW4gV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IDM0OTk4ZWZjMDZjOWU1NmUzMjlmM2U1YWI3MjhhOWY2Y2VkN2RhZWYuLjAy
NzRlNGRmNmE2MmJjM2Y2Zjk0MWVmNWQxMzI4Y2FlOGU5ODI4ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjcgQEAKKzIwMjEtMDctMDggIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5j
b20+CisKKyAgICAgICAgW0xpdmUgVGV4dF0gU2VsZWN0aW9uIGlzIG1pc2FsaWduZWQgb24gc29t
ZSBpbWFnZXMgb24gdHdpdHRlci5jb20KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNzc3NQorICAgICAgICByZGFyOi8vNzcxNDIzNjQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTZWUgV2ViQ29yZSBDaGFu
Z2VMb2cgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Y3Jl
YXRlU2hhcmVhYmxlQml0bWFwKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1NoYXJlYWJsZUJpdG1hcFV0aWxpdGllcy5oOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVTaGFy
ZWFibGVCaXRtYXApOgorCisgICAgICAgIEFkZCBhbiBvcHRpb24gdG8gaGFuZGxlIHRoZSBzY2Vu
YXJpbyB3aGVyZSB0aGUgaW1hZ2UgcmVuZGVyZXIgaXMgZnVsbHkgdHJhbnNwYXJlbnQgYnkgZmFs
bGluZyBiYWNrIHRvIGEgZnJhbWUtCisgICAgICAgIGxldmVsIHNuYXBzaG90LCB1c2luZyB0aGUg
Ym91bmRzIG9mIHRoZSBpbWFnZSByZW5kZXJlci4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVxdWVzdFRleHRS
ZWNvZ25pdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tOgorICAgICAgICAoV2ViS2l0OjppbWFnZVBvc2l0aW9uSW5mb3JtYXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjplbGVtZW50UG9zaXRpb25JbmZvcm1hdGlvbik6CisKIDIwMjEtMDctMDYgIFdl
bnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW0xpdmUgVGV4
dF0gRXh0cmFuZW91cyBzcGFjZXMgd2hlbiBjb3B5aW5nIG9yIHRyYW5zbGF0aW5nIENoaW5lc2Ug
YW5kIEphcGFuZXNlIHRleHQgaW4gV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3Bw
CmluZGV4IDVkOTVmMjcwZGE3ODFiM2Y0MTIxMDc5OWQxZDM2ZDEwNzU4NWVlZjQuLjNhYTg5OGI3
ZTdiODI5Y2QxY2MxZWNjZTBjODk3YjFlYzYxMmU2NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVs
ZW1lbnQuY3BwCkBAIC0xMzQwLDYgKzEzNDAsMTggQEAgYm9vbCBIVE1MRWxlbWVudDo6aXNJbWFn
ZU92ZXJsYXlUZXh0KGNvbnN0IE5vZGUmIG5vZGUpCiAKICNpZiBFTkFCTEUoSU1BR0VfQU5BTFlT
SVMpCiAKK0ludFJlY3QgSFRNTEVsZW1lbnQ6OmNvbnRhaW5lclJlY3RGb3JUZXh0UmVjb2duaXRp
b24oKQoreworICAgIGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKKyAgICBpZiAo
IWlzPFJlbmRlckltYWdlPihyZW5kZXJlcikpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBp
ZiAoIXJlbmRlcmVyLT5vcGFjaXR5KCkpCisgICAgICAgIHJldHVybiB7IDAsIDAsIG9mZnNldFdp
ZHRoKCksIG9mZnNldEhlaWdodCgpIH07CisKKyAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChk
b3duY2FzdDxSZW5kZXJJbWFnZT4oKnJlbmRlcmVyKS5yZXBsYWNlZENvbnRlbnRSZWN0KCkpOwor
fQorCiB2b2lkIEhUTUxFbGVtZW50Ojp1cGRhdGVXaXRoVGV4dFJlY29nbml0aW9uUmVzdWx0KGNv
bnN0IFRleHRSZWNvZ25pdGlvblJlc3VsdCYgcmVzdWx0LCBDYWNoZVRleHRSZWNvZ25pdGlvblJl
c3VsdHMgY2FjaGVUZXh0UmVjb2duaXRpb25SZXN1bHRzKQogewogICAgIHN0YXRpYyBNYWluVGhy
ZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gaW1hZ2VPdmVybGF5TGluZUNsYXNz
KCJpbWFnZS1vdmVybGF5LWxpbmUiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CkBAIC0xNDcyLDcgKzE0ODQsNyBAQCB2b2lkIEhUTUxFbGVtZW50Ojp1cGRhdGVXaXRoVGV4dFJl
Y29nbml0aW9uUmVzdWx0KGNvbnN0IFRleHRSZWNvZ25pdGlvblJlc3VsdCYgcgogCiAgICAgZG93
bmNhc3Q8UmVuZGVySW1hZ2U+KCpyZW5kZXJlcikuc2V0SGFzSW1hZ2VPdmVybGF5KCk7CiAKLSAg
ICBhdXRvIGNvbnRhaW5lclJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KGRvd25jYXN0PFJlbmRlcklt
YWdlPigqcmVuZGVyZXIpLnJlcGxhY2VkQ29udGVudFJlY3QoKSk7CisgICAgYXV0byBjb250YWlu
ZXJSZWN0ID0gY29udGFpbmVyUmVjdEZvclRleHRSZWNvZ25pdGlvbigpOwogICAgIGF1dG8gY29u
dmVydFRvQ29udGFpbmVyQ29vcmRpbmF0ZXMgPSBbJl0oY29uc3QgRmxvYXRRdWFkJiBub3JtYWxp
emVkUXVhZCkgewogICAgICAgICBhdXRvIHF1YWQgPSBub3JtYWxpemVkUXVhZDsKICAgICAgICAg
cXVhZC5zY2FsZShjb250YWluZXJSZWN0LndpZHRoKCksIGNvbnRhaW5lclJlY3QuaGVpZ2h0KCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCmluZGV4IDQ2M2UxNmNlN2FiMjgyOTg4ZWY5YmRi
Y2IyM2IyOTZlNzgxOTNmNzUuLmFkYzAyZjNmYTY5NzdiYzE0MjdiZDQ3NzU0ZjFmNDdkN2Q1YjVj
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKQEAgLTEzOSw2ICsxMzksNyBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNJbWFnZU92ZXJsYXlUZXh0KGNv
bnN0IE5vZGUqKTsKIAogI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKKyAgICBJbnRSZWN0IGNv
bnRhaW5lclJlY3RGb3JUZXh0UmVjb2duaXRpb24oKTsKICAgICBlbnVtIGNsYXNzIENhY2hlVGV4
dFJlY29nbml0aW9uUmVzdWx0cyA6IGJvb2wgeyBObywgWWVzIH07CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCB1cGRhdGVXaXRoVGV4dFJlY29nbml0aW9uUmVzdWx0KGNvbnN0IFRleHRSZWNvZ25p
dGlvblJlc3VsdCYsIENhY2hlVGV4dFJlY29nbml0aW9uUmVzdWx0cyA9IENhY2hlVGV4dFJlY29n
bml0aW9uUmVzdWx0czo6WWVzKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggZjJmMDFh
YzgwNzRlNzIwODIxOGFjM2Y3NDlhMjczOTRiM2NkMWJhMC4uMTFiNDU1OWFmZDFiYTRkYzc4M2Vk
ZmIwNzNmNGQ4YzJiYjUzYWY0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0zNjMwLDcgKzM2MzAs
NyBAQCB2b2lkIFBhZ2U6OnVwZGF0ZUVsZW1lbnRzV2l0aFRleHRSZWNvZ25pdGlvblJlc3VsdHMo
KQogICAgICAgICBpZiAoIWlzPFJlbmRlckltYWdlPihyZW5kZXJlcikpCiAgICAgICAgICAgICBj
b250aW51ZTsKIAotICAgICAgICBhdXRvIG5ld0NvbnRhaW5lclJlY3QgPSBlbmNsb3NpbmdJbnRS
ZWN0KGRvd25jYXN0PFJlbmRlckltYWdlPigqcmVuZGVyZXIpLnJlcGxhY2VkQ29udGVudFJlY3Qo
KSk7CisgICAgICAgIGF1dG8gbmV3Q29udGFpbmVyUmVjdCA9IHByb3RlY3RlZEVsZW1lbnQtPmNv
bnRhaW5lclJlY3RGb3JUZXh0UmVjb2duaXRpb24oKTsKICAgICAgICAgaWYgKGNvbnRhaW5lclJl
Y3QgPT0gbmV3Q29udGFpbmVyUmVjdCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2hhcmVhYmxlQml0
bWFwVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9TaGFyZWFibGVCaXRtYXBVdGlsaXRpZXMuY3BwCmluZGV4IDY0N2E3NzUwMWNkOWMyNGQwOWZh
NWMxZTc5ODZkNjk5YWViYzA1NDQuLmI3ZTAwZmNiMzk2MzYxMTMyYmVmY2M3OWU4NzUyYmI1M2Rm
NzljOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9TaGFyZWFibGVCaXRtYXBVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9TaGFyZWFibGVCaXRtYXBVdGlsaXRpZXMuY3BwCkBAIC0yOCw4
ICsyOCwxMSBAQAogCiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9DYWNoZWRJbWFnZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL0ZyYW1lU25hcHNob3R0aW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HZW9tZXRy
eVV0aWxpdGllcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9JbWFnZUJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50U2l6ZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1JlbmRlckltYWdlLmg+CkBAIC0zNywzMyArNDAsNjEgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNyZWF0
ZVNoYXJlYWJsZUJpdG1hcChSZW5kZXJJbWFnZSYgcmVuZGVySW1hZ2UsIHN0ZDo6b3B0aW9uYWw8
RmxvYXRTaXplPiBzY3JlZW5TaXplSW5QaXhlbHMsIEFsbG93QW5pbWF0ZWRJbWFnZXMgYWxsb3dB
bmltYXRlZEltYWdlcykKK1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNyZWF0ZVNoYXJlYWJsZUJp
dG1hcChSZW5kZXJJbWFnZSYgcmVuZGVySW1hZ2UsIENyZWF0ZVNoYXJlYWJsZUJpdG1hcEZyb21J
bWFnZU9wdGlvbnMmJiBvcHRpb25zKQogeworICAgIFJlZiBmcmFtZSA9IHJlbmRlckltYWdlLmZy
YW1lKCk7CisgICAgYXV0byBjb2xvclNwYWNlRm9yQml0bWFwID0gc2NyZWVuQ29sb3JTcGFjZShm
cmFtZS0+bWFpbkZyYW1lKCkudmlldygpKTsKKyAgICBpZiAoIXJlbmRlckltYWdlLm9wYWNpdHko
KSAmJiBvcHRpb25zLnVzZVNuYXBzaG90Rm9yVHJhbnNwYXJlbnRJbWFnZXMgPT0gVXNlU25hcHNo
b3RGb3JUcmFuc3BhcmVudEltYWdlczo6WWVzKSB7CisgICAgICAgIGF1dG8gc25hcHNob3RSZWN0
ID0gcmVuZGVySW1hZ2UuYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKTsKKyAgICAgICAgaWYgKHNu
YXBzaG90UmVjdC5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4geyB9OworCisgICAgICAg
IE9wdGlvblNldDxTbmFwc2hvdEZsYWdzPiBzbmFwc2hvdEZsYWdzIHsgU25hcHNob3RGbGFnczo6
RXhjbHVkZVNlbGVjdGlvbkhpZ2hsaWdodGluZywgU25hcHNob3RGbGFnczo6UGFpbnRFdmVyeXRo
aW5nRXhjbHVkaW5nU2VsZWN0aW9uIH07CisgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBzbmFw
c2hvdEZyYW1lUmVjdChmcmFtZS5nZXQoKSwgc25hcHNob3RSZWN0LCB7IHNuYXBzaG90RmxhZ3Ms
IFBpeGVsRm9ybWF0OjpCR1JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfSk7Cisg
ICAgICAgIGlmICghaW1hZ2VCdWZmZXIpCisgICAgICAgICAgICByZXR1cm4geyB9OworCisgICAg
ICAgIGF1dG8gc25hcHNob3RJbWFnZSA9IEltYWdlQnVmZmVyOjpzaW5rSW50b0ltYWdlKFdURk1v
dmUoaW1hZ2VCdWZmZXIpLCBQcmVzZXJ2ZVJlc29sdXRpb246Olllcyk7CisgICAgICAgIGlmICgh
c25hcHNob3RJbWFnZSkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisKKyAgICAgICAgYXV0byBi
aXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShzbmFwc2hvdFJlY3Quc2l6
ZSgpLCB7IFdURk1vdmUoY29sb3JTcGFjZUZvckJpdG1hcCkgfSk7CisgICAgICAgIGlmICghYml0
bWFwKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKworICAgICAgICBhdXRvIGNvbnRleHQgPSBi
aXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOworICAgICAgICBpZiAoIWNvbnRleHQpCisg
ICAgICAgICAgICByZXR1cm4geyB9OworCisgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZSgqc25h
cHNob3RJbWFnZSwgeyBGbG9hdFBvaW50Ojp6ZXJvKCksIHNuYXBzaG90UmVjdC5zaXplKCkgfSk7
CisgICAgICAgIHJldHVybiBiaXRtYXA7CisgICAgfQorCiAgICAgYXV0byogY2FjaGVkSW1hZ2Ug
PSByZW5kZXJJbWFnZS5jYWNoZWRJbWFnZSgpOwogICAgIGlmICghY2FjaGVkSW1hZ2UgfHwgY2Fj
aGVkSW1hZ2UtPmVycm9yT2NjdXJyZWQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgIHJldHVybiB7IH07CiAKICAgICBhdXRvKiBpbWFnZSA9IGNhY2hlZEltYWdlLT5pbWFnZUZv
clJlbmRlcmVyKCZyZW5kZXJJbWFnZSk7CiAgICAgaWYgKCFpbWFnZSB8fCBpbWFnZS0+d2lkdGgo
KSA8PSAxIHx8IGltYWdlLT5oZWlnaHQoKSA8PSAxKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGlmIChhbGxvd0FuaW1hdGVkSW1hZ2VzID09IEFs
bG93QW5pbWF0ZWRJbWFnZXM6Ok5vICYmIGltYWdlLT5pc0FuaW1hdGVkKCkpCi0gICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIGlmIChvcHRpb25zLmFsbG93QW5pbWF0ZWRJbWFnZXMgPT0gQWxs
b3dBbmltYXRlZEltYWdlczo6Tm8gJiYgaW1hZ2UtPmlzQW5pbWF0ZWQoKSkKKyAgICAgICAgcmV0
dXJuIHsgfTsKIAogICAgIGF1dG8gYml0bWFwU2l6ZSA9IGNhY2hlZEltYWdlLT5pbWFnZVNpemVG
b3JSZW5kZXJlcigmcmVuZGVySW1hZ2UpOwotICAgIGlmIChzY3JlZW5TaXplSW5QaXhlbHMpIHsK
LSAgICAgICAgYXV0byBzY2FsZWRTaXplID0gbGFyZ2VzdFJlY3RXaXRoQXNwZWN0UmF0aW9JbnNp
ZGVSZWN0KGJpdG1hcFNpemUud2lkdGgoKSAvIGJpdG1hcFNpemUuaGVpZ2h0KCksIHsgRmxvYXRQ
b2ludCgpLCAqc2NyZWVuU2l6ZUluUGl4ZWxzIH0pLnNpemUoKTsKKyAgICBpZiAob3B0aW9ucy5z
Y3JlZW5TaXplSW5QaXhlbHMpIHsKKyAgICAgICAgYXV0byBzY2FsZWRTaXplID0gbGFyZ2VzdFJl
Y3RXaXRoQXNwZWN0UmF0aW9JbnNpZGVSZWN0KGJpdG1hcFNpemUud2lkdGgoKSAvIGJpdG1hcFNp
emUuaGVpZ2h0KCksIHsgRmxvYXRQb2ludCgpLCAqb3B0aW9ucy5zY3JlZW5TaXplSW5QaXhlbHMg
fSkuc2l6ZSgpOwogICAgICAgICBiaXRtYXBTaXplID0gc2NhbGVkU2l6ZS53aWR0aCgpIDwgYml0
bWFwU2l6ZS53aWR0aCgpID8gc2NhbGVkU2l6ZSA6IGJpdG1hcFNpemU7CiAgICAgfQogCiAgICAg
Ly8gRklYTUU6IE9ubHkgc2VsZWN0IEV4dGVuZGVkQ29sb3Igb24gaW1hZ2VzIGtub3duIHRvIG5l
ZWQgd2lkZSBnYW11dC4KLSAgICBhdXRvIHNoYXJlZEJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6
Y3JlYXRlU2hhcmVhYmxlKEludFNpemUoYml0bWFwU2l6ZSksIHsgc2NyZWVuQ29sb3JTcGFjZShy
ZW5kZXJJbWFnZS5mcmFtZSgpLm1haW5GcmFtZSgpLnZpZXcoKSkgfSk7CisgICAgYXV0byBzaGFy
ZWRCaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShJbnRTaXplKGJpdG1h
cFNpemUpLCB7IFdURk1vdmUoY29sb3JTcGFjZUZvckJpdG1hcCkgfSk7CiAgICAgaWYgKCFzaGFy
ZWRCaXRtYXApCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4geyB9Owog
CiAgICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBzaGFyZWRCaXRtYXAtPmNyZWF0ZUdyYXBoaWNz
Q29udGV4dCgpOwogICAgIGlmICghZ3JhcGhpY3NDb250ZXh0KQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0lt
YWdlKCppbWFnZSwgRmxvYXRSZWN0KDAsIDAsIGJpdG1hcFNpemUud2lkdGgoKSwgYml0bWFwU2l6
ZS5oZWlnaHQoKSksIHsgcmVuZGVySW1hZ2UuaW1hZ2VPcmllbnRhdGlvbigpIH0pOwogICAgIHJl
dHVybiBzaGFyZWRCaXRtYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmgKaW5k
ZXggOTVhYWExN2RkODdkYjE2Zjc2ZGE0MTNmN2M1ZmFiYjViNjc4M2M3OC4uMWEyNzJkNjcxZWQy
ZjU5MTMyYzdmYjhkN2NmNTgwY2IxZDU5OTkzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1NoYXJlYWJsZUJpdG1hcFV0aWxpdGllcy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TaGFyZWFibGVCaXRtYXBV
dGlsaXRpZXMuaApAQCAtMzYsNyArMzYsMTUgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNz
IFNoYXJlYWJsZUJpdG1hcDsKIAorZW51bSBjbGFzcyBVc2VTbmFwc2hvdEZvclRyYW5zcGFyZW50
SW1hZ2VzIDogYm9vbCB7IE5vLCBZZXMgfTsKIGVudW0gY2xhc3MgQWxsb3dBbmltYXRlZEltYWdl
cyA6IGJvb2wgeyBObywgWWVzIH07Ci1SZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGVTaGFy
ZWFibGVCaXRtYXAoV2ViQ29yZTo6UmVuZGVySW1hZ2UmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OkZsb2F0U2l6ZT4gc2NyZWVuU2l6ZUluUGl4ZWxzID0gc3RkOjpudWxsb3B0LCBBbGxvd0FuaW1h
dGVkSW1hZ2VzID0gQWxsb3dBbmltYXRlZEltYWdlczo6WWVzKTsKKworc3RydWN0IENyZWF0ZVNo
YXJlYWJsZUJpdG1hcEZyb21JbWFnZU9wdGlvbnMgeworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6RmxvYXRTaXplPiBzY3JlZW5TaXplSW5QaXhlbHM7CisgICAgQWxsb3dBbmltYXRlZEltYWdl
cyBhbGxvd0FuaW1hdGVkSW1hZ2VzIHsgQWxsb3dBbmltYXRlZEltYWdlczo6WWVzIH07CisgICAg
VXNlU25hcHNob3RGb3JUcmFuc3BhcmVudEltYWdlcyB1c2VTbmFwc2hvdEZvclRyYW5zcGFyZW50
SW1hZ2VzIHsgVXNlU25hcHNob3RGb3JUcmFuc3BhcmVudEltYWdlczo6Tm8gfTsKK307CisKK1Jl
ZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNyZWF0ZVNoYXJlYWJsZUJpdG1hcChXZWJDb3JlOjpSZW5k
ZXJJbWFnZSYsIENyZWF0ZVNoYXJlYWJsZUJpdG1hcEZyb21JbWFnZU9wdGlvbnMmJiA9IHsgfSk7
CiAKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmlu
ZGV4IDYyY2E4ZmVhNTg4OGQzNDE5ZWIzYzRlNmI5ZmI2N2NiNzg4YmU3NDEuLmRmN2RkYzU1ODY5
ZDE0NzYyNDRkNzU4MmZjMGVlNzBkY2FmY2JhYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC03NDA0LDcgKzc0MDQsNyBAQCB2b2lkIFdlYlBh
Z2U6OnJlcXVlc3RUZXh0UmVjb2duaXRpb24oV2ViQ29yZTo6RWxlbWVudCYgZWxlbWVudCwgQ29t
cGxldGlvbkhhbmRsZQogICAgIH0KIAogICAgIGF1dG8mIHJlbmRlckltYWdlID0gZG93bmNhc3Q8
UmVuZGVySW1hZ2U+KCpyZW5kZXJlcik7Ci0gICAgYXV0byBiaXRtYXAgPSBjcmVhdGVTaGFyZWFi
bGVCaXRtYXAocmVuZGVySW1hZ2UsIHN0ZDo6bnVsbG9wdCwgQWxsb3dBbmltYXRlZEltYWdlczo6
Tm8pOworICAgIGF1dG8gYml0bWFwID0gY3JlYXRlU2hhcmVhYmxlQml0bWFwKHJlbmRlckltYWdl
LCB7IHN0ZDo6bnVsbG9wdCwgQWxsb3dBbmltYXRlZEltYWdlczo6Tm8sIFVzZVNuYXBzaG90Rm9y
VHJhbnNwYXJlbnRJbWFnZXM6OlllcyB9KTsKICAgICBpZiAoIWJpdG1hcCkgewogICAgICAgICBp
ZiAoY29tcGxldGlvbikKICAgICAgICAgICAgIGNvbXBsZXRpb24oeyB9KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggODU3
MDExYjRkMmMyYjFiMjMyNmNkNmVhYTZhZjBkNmRjZTE0NDQ4Yi4uMmY0ZDgxYzFmMWZiOGZmMDUw
OGE0MjgyYTI2ZTA4ZjAxZTcxNDM3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTI4MjMsNyArMjgyMyw3IEBAIHN0YXRp
YyB2b2lkIGltYWdlUG9zaXRpb25JbmZvcm1hdGlvbihXZWJQYWdlJiBwYWdlLCBFbGVtZW50JiBl
bGVtZW50LCBjb25zdCBJbnRlCiAgICAgaW5mby5pc0FuaW1hdGVkSW1hZ2UgPSBpbWFnZS5pc0Fu
aW1hdGVkKCk7CiAKICAgICBpZiAocmVxdWVzdC5pbmNsdWRlU25hcHNob3QgfHwgcmVxdWVzdC5p
bmNsdWRlSW1hZ2VEYXRhKQotICAgICAgICBpbmZvLmltYWdlID0gY3JlYXRlU2hhcmVhYmxlQml0
bWFwKHJlbmRlckltYWdlLCBzY3JlZW5TaXplKCkgKiBwYWdlLmNvcmVQYWdlKCktPmRldmljZVNj
YWxlRmFjdG9yKCkpOworICAgICAgICBpbmZvLmltYWdlID0gY3JlYXRlU2hhcmVhYmxlQml0bWFw
KHJlbmRlckltYWdlLCB7IHNjcmVlblNpemUoKSAqIHBhZ2UuY29yZVBhZ2UoKS0+ZGV2aWNlU2Nh
bGVGYWN0b3IoKSwgQWxsb3dBbmltYXRlZEltYWdlczo6WWVzLCBVc2VTbmFwc2hvdEZvclRyYW5z
cGFyZW50SW1hZ2VzOjpZZXMgfSk7CiAKICAgICBpbmZvLmltYWdlRWxlbWVudENvbnRleHQgPSBw
YWdlLmNvbnRleHRGb3JFbGVtZW50KGVsZW1lbnQpOwogfQpAQCAtMjg4NSw3ICsyODg1LDcgQEAg
c3RhdGljIHZvaWQgZWxlbWVudFBvc2l0aW9uSW5mb3JtYXRpb24oV2ViUGFnZSYgcGFnZSwgRWxl
bWVudCYgZWxlbWVudCwgY29uc3QgSW4KICAgICAgICAgICAgICAgICBpZiAoYXV0byByZW5kZXJl
ckFuZEltYWdlID0gaW1hZ2VSZW5kZXJlckFuZEltYWdlKGVsZW1lbnQpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGF1dG8mIFtyZW5kZXJJbWFnZSwgaW1hZ2VdID0gKnJlbmRlcmVyQW5kSW1hZ2U7
CiAgICAgICAgICAgICAgICAgICAgIGluZm8uaW1hZ2VVUkwgPSBlbGVtZW50LmRvY3VtZW50KCku
Y29tcGxldGVVUkwocmVuZGVySW1hZ2UuY2FjaGVkSW1hZ2UoKS0+dXJsKCkuc3RyaW5nKCkpOwot
ICAgICAgICAgICAgICAgICAgICBpbmZvLmltYWdlID0gY3JlYXRlU2hhcmVhYmxlQml0bWFwKHJl
bmRlckltYWdlLCBzY3JlZW5TaXplKCkgKiBwYWdlLmNvcmVQYWdlKCktPmRldmljZVNjYWxlRmFj
dG9yKCkpOworICAgICAgICAgICAgICAgICAgICBpbmZvLmltYWdlID0gY3JlYXRlU2hhcmVhYmxl
Qml0bWFwKHJlbmRlckltYWdlLCB7IHNjcmVlblNpemUoKSAqIHBhZ2UuY29yZVBhZ2UoKS0+ZGV2
aWNlU2NhbGVGYWN0b3IoKSwgQWxsb3dBbmltYXRlZEltYWdlczo6WWVzLCBVc2VTbmFwc2hvdEZv
clRyYW5zcGFyZW50SW1hZ2VzOjpZZXMgfSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNWE4Y2Q4NTg1NTNhYTQ2ZGJmODQ2OTM3NTJlNTBjZjNl
ZjI2YmNmZi4uODQ1ZjZiYTc4MmJkYzE4YmM5MjViMGVjY2ZjNDQ4ZWM0YjRmNzE2OSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE0IEBACisyMDIxLTA3LTA4ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhA
YXBwbGUuY29tPgorCisgICAgICAgIFtMaXZlIFRleHRdIFNlbGVjdGlvbiBpcyBtaXNhbGlnbmVk
IG9uIHNvbWUgaW1hZ2VzIG9uIHR3aXR0ZXIuY29tCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc3NzUKKyAgICAgICAgcmRhcjovLzc3MTQyMzY0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2lt
YWdlcy90ZXh0LXJlY29nbml0aW9uL2ltYWdlLW92ZXJsYXktaW4tdHJhbnNwYXJlbnQtaW1hZ2Ut
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ltYWdlcy90ZXh0LXJlY29nbml0
aW9uL2ltYWdlLW92ZXJsYXktaW4tdHJhbnNwYXJlbnQtaW1hZ2UuaHRtbDogQWRkZWQuCisKIDIw
MjEtMDctMDYgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAg
ICAgW0xpdmUgVGV4dF0gRXh0cmFuZW91cyBzcGFjZXMgd2hlbiBjb3B5aW5nIG9yIHRyYW5zbGF0
aW5nIENoaW5lc2UgYW5kIEphcGFuZXNlIHRleHQgaW4gV2ViS2l0CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2ltYWdlcy90ZXh0LXJlY29nbml0aW9uL2ltYWdlLW92ZXJsYXktaW4tdHJh
bnNwYXJlbnQtaW1hZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvdGV4
dC1yZWNvZ25pdGlvbi9pbWFnZS1vdmVybGF5LWluLXRyYW5zcGFyZW50LWltYWdlLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44MTNkOTc0OWEyZmM2NGNmMjk2YmVhZmQ3ZDE4NzU2M2E2ZWMxYjdi
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvdGV4dC1yZWNvZ25p
dGlvbi9pbWFnZS1vdmVybGF5LWluLXRyYW5zcGFyZW50LWltYWdlLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDYgQEAKK1BBU1MgYm91bmRpbmdSZWN0LndpZHRoIGlzIDI1MAorUEFTUyBib3VuZGlu
Z1JlY3QuaGVpZ2h0IGlzIDIwMAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3RleHQt
cmVjb2duaXRpb24vaW1hZ2Utb3ZlcmxheS1pbi10cmFuc3BhcmVudC1pbWFnZS5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9pbWFnZXMvdGV4dC1yZWNvZ25pdGlvbi9pbWFnZS1vdmVybGF5LWluLXRy
YW5zcGFyZW50LWltYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGIxZDFlMjhlZDgzZWYxMzdmYzYxYzVh
YmU0YzUzOGVkYTQzOTIwYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaW1h
Z2VzL3RleHQtcmVjb2duaXRpb24vaW1hZ2Utb3ZlcmxheS1pbi10cmFuc3BhcmVudC1pbWFnZS5o
dG1sCkBAIC0wLDAgKzEsNTQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxz
dHlsZT4KK2ltZyB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogMDsKKyAgICBs
ZWZ0OiAwOworICAgIHdpZHRoOiAyNTBweDsKKyAgICBoZWlnaHQ6IDQwMHB4OworfQorCisuYmFj
ayB7CisgICAgb2JqZWN0LWZpdDogY292ZXI7Cit9CisKKy5mcm9udCB7CisgICAgb3BhY2l0eTog
MDsKK30KKzwvc3R5bGU+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8aW1nIGNsYXNzPSJiYWNrIiBzcmM9Ii4u
L3Jlc291cmNlcy9kaWNlLnBuZyI+PC9pbWc+Cis8aW1nIGNsYXNzPSJmcm9udCIgc3JjPSIuLi9y
ZXNvdXJjZXMvZGljZS5wbmciPjwvaW1nPgorPHNjcmlwdD4KK2FkZEV2ZW50TGlzdGVuZXIoImxv
YWQiLCAoKSA9PiB7CisgICAgY29uc3QgaW1hZ2UgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJp
bWcuZnJvbnQiKTsKKyAgICBpbnRlcm5hbHMuaW5zdGFsbEltYWdlT3ZlcmxheShpbWFnZSwgWwor
ICAgICAgICB7CisgICAgICAgICAgICB0b3BMZWZ0IDogbmV3IERPTVBvaW50UmVhZE9ubHkoMCwg
MCksCisgICAgICAgICAgICB0b3BSaWdodCA6IG5ldyBET01Qb2ludFJlYWRPbmx5KDEsIDApLAor
ICAgICAgICAgICAgYm90dG9tUmlnaHQgOiBuZXcgRE9NUG9pbnRSZWFkT25seSgxLCAwLjUpLAor
ICAgICAgICAgICAgYm90dG9tTGVmdCA6IG5ldyBET01Qb2ludFJlYWRPbmx5KDAsIDAuNSksCisg
ICAgICAgICAgICBjaGlsZHJlbjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgdGV4dCA6ICJmb28iLAorICAgICAgICAgICAgICAgICAgICB0b3BMZWZ0IDogbmV3IERP
TVBvaW50UmVhZE9ubHkoMCwgMCksCisgICAgICAgICAgICAgICAgICAgIHRvcFJpZ2h0IDogbmV3
IERPTVBvaW50UmVhZE9ubHkoMSwgMCksCisgICAgICAgICAgICAgICAgICAgIGJvdHRvbVJpZ2h0
IDogbmV3IERPTVBvaW50UmVhZE9ubHkoMSwgMC41KSwKKyAgICAgICAgICAgICAgICAgICAgYm90
dG9tTGVmdCA6IG5ldyBET01Qb2ludFJlYWRPbmx5KDAsIDAuNSksCisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgXSwKKyAgICAgICAgfQorICAgIF0pOworCisgICAgbGV0IHRleHQgPSBp
bnRlcm5hbHMuc2hhZG93Um9vdChpbWFnZSkucXVlcnlTZWxlY3RvcigiLmltYWdlLW92ZXJsYXkt
dGV4dCIpOworICAgIGJvdW5kaW5nUmVjdCA9IHRleHQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7
CisgICAgc2hvdWxkQmUoImJvdW5kaW5nUmVjdC53aWR0aCIsICIyNTAiKTsKKyAgICBzaG91bGRC
ZSgiYm91bmRpbmdSZWN0LmhlaWdodCIsICIyMDAiKTsKK30pOworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>