<?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>231607</bug_id>
          
          <creation_ts>2021-10-12 12:37:08 -0700</creation_ts>
          <short_desc>REGRESSION (iOS 15): Tab crashes when trying to render Projector stories</short_desc>
          <delta_ts>2021-11-03 13:10:32 -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>WebGL</component>
          <version>Safari 15</version>
          <rep_platform>iPhone / iPad</rep_platform>
          <op_sys>Other</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>https://staging.projector.com/story/be1ca8c7-a46a-41fc-9ad6-de8b8f178a8b?scene=6f3e4207&amp;glBufferSize=100663296</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>231180</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sidhu Alluri">sidhu</reporter>
          <assigned_to name="Kimmo Kinnunen">kkinnunen</assigned_to>
          <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kbr</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>kpiddington</cc>
    
    <cc>le.hoang.q</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1803315</commentid>
    <comment_count>0</comment_count>
    <who name="Sidhu Alluri">sidhu</who>
    <bug_when>2021-10-12 12:37:08 -0700</bug_when>
    <thetext>The following link crashes the iOS 15 Safari tab on iPhone X, 12 Mini, and 13. Works fine in all devices with iOS 14 or earlier.
https://staging.projector.com/story/be1ca8c7-a46a-41fc-9ad6-de8b8f178a8b?scene=6f3e4207

After reloading once, the tab displays &quot;A problem repeatedly occurred on https://staging.projector.com/story/be1ca8c7-a46a-41fc-9ad6-de8b8f178a8b?scene=6f3e4207&quot;

No console errors when trying to debug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803375</commentid>
    <comment_count>1</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2021-10-12 14:16:43 -0700</bug_when>
    <thetext>I only have the hardware to test this on macOS but the context creation attributes appear to be:

alpha: false
antialias: false
powerPreference: &quot;high-performance&quot;
premultipliedAlpha: true
preserveDrawingBuffer: false
stencil: false

Not sure why this combination might cause the tab to crash. Kimmo, would it be possible for you to confirm this? It doesn&apos;t look like the xrCompatible context creation attribute is the issue here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803611</commentid>
    <comment_count>2</comment_count>
    <who name="Sidhu Alluri">sidhu</who>
    <bug_when>2021-10-12 18:41:41 -0700</bug_when>
    <thetext>Managed to get it to stop crashing after reducing the gl buffer size to 15MB (down from 96MB, we use a single large buffer). `createBuffer` call succeeds but leads to eventual tab crash after enough draw calls. I&apos;ll try to narrow it further, but wanted to give an update.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803772</commentid>
    <comment_count>3</comment_count>
    <who name="Sidhu Alluri">sidhu</who>
    <bug_when>2021-10-13 08:21:51 -0700</bug_when>
    <thetext>(In reply to Sidhu Alluri from comment #0)
&gt; The following link crashes the iOS 15 Safari tab on iPhone X, 12 Mini, and
&gt; 13. Works fine in all devices with iOS 14 or earlier.
&gt; https://staging.projector.com/story/be1ca8c7-a46a-41fc-9ad6-
&gt; de8b8f178a8b?scene=6f3e4207
&gt; 
&gt; After reloading once, the tab displays &quot;A problem repeatedly occurred on
&gt; https://staging.projector.com/story/be1ca8c7-a46a-41fc-9ad6-
&gt; de8b8f178a8b?scene=6f3e4207&quot;
&gt; 
&gt; No console errors when trying to debug.

I&apos;m deploying a lower sized gl buffer to work around the issue but I added a query param to manually set the buffer size. The issue can still be repro&apos;d via this link https://staging.projector.com/story/be1ca8c7-a46a-41fc-9ad6-de8b8f178a8b?scene=6f3e4207&amp;glBufferSize=100663296</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804082</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-13 17:18:52 -0700</bug_when>
    <thetext>&lt;rdar://problem/84224687&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804799</commentid>
    <comment_count>5</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-10-15 07:26:33 -0700</bug_when>
    <thetext>This appears to be due to WebContent process running over memory limit. It&apos;s unclear if it&apos;s Metal or GPU process difference to iOS 14.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1807661</commentid>
    <comment_count>6</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-10-22 07:05:59 -0700</bug_when>
    <thetext>This is mtl::Buffer instances being leaked due to buffer pool creating them unbounded</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1807829</commentid>
    <comment_count>7</comment_count>
    <who name="Kyle Piddington">kpiddington</who>
    <bug_when>2021-10-22 12:47:09 -0700</bug_when>
    <thetext>Looking into this bug: It seems there’s some trouble at work with the per-frame data. I see the initial 96 MB allocation, but not any repetition of that initial allocation.  Each frame, however, I&apos;m seeing about 38 more MB of allocated data. 

We seem to hold on to the first few frames worth of data, and don&apos;t get around to clearing them, however, which I think is leading to this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1807835</commentid>
    <comment_count>8</comment_count>
    <who name="Kyle Piddington">kpiddington</who>
    <bug_when>2021-10-22 12:54:15 -0700</bug_when>
    <thetext>From analysis: We&apos;re creating a lot more buffer pools than we are buffers. It seems the issue isn&apos;t one buffer pool allocating too much, but too many buffer pools being created in the first place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1807999</commentid>
    <comment_count>9</comment_count>
    <who name="Le Hoang Quyen">le.hoang.q</who>
    <bug_when>2021-10-22 18:12:54 -0700</bug_when>
    <thetext>Sorry, the vertex conversion&apos;s buffer pool mechanism in the Metal back-end was originally written by me. So I did attempt to trace the Metal commands while running this website in order to know what&apos;s going on.

Here what I observed:
- The website created a single large buffer (roughly 100MB) then seemingly used many small portions of it for different draw calls:
  - portion from 0-100 for draw call 1 (only needs 10 vertices, this is an approximate number).
  - portion from 100-200 for draw call 2 (only needs 10 vertices).
  - ...
  - portion from 90000000-100000000 for draw calls n (only needs 10 vertices).

- Due to irregular offsets, many of the portions above needed vertex attribute conversions. However the conversions were inefficient because they converted the whole buffer&apos;s worth of vertices starting from given offset to the end.
  - draw call 1 allocated a conversion buffer for 90000000 vertices&apos; attributes even though it needs only 10 vertices.
  - draw call 2 allocated a conversion buffer for 80000000 vertices&apos; attributes even though it needs only 10 vertices.
  - ...

The problem is that the conversion buffer pool will always allocate a new sub-buffer to store the converted attribute values for a number of vertices starting from given offset to the end regardless of how many vertices the actually draw call needs. Leading to a lot of converted portions unused by any draw calls.

Currently the conversion buffers are keyed by triplet {format, offset, stride}. It doesn&apos;t take into account how many vertices needed hence the issue above happened.
The number of vertices would be included in the key i.e. {format, offset, stride, numVertices}. However, it would still lead to another problem in another use case:
- users draw using a same offset but with different number of vertices many times =&gt; many conversion buffers would be created.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808372</commentid>
    <comment_count>10</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-10-25 06:34:11 -0700</bug_when>
    <thetext>(In reply to Le Hoang Quyen from comment #9)
&gt; Currently the conversion buffers are keyed by triplet {format, offset,
&gt; stride}. It doesn&apos;t take into account how many vertices needed hence the
&gt; issue above happened.
&gt; The number of vertices would be included in the key i.e. {format, offset,
&gt; stride, numVertices}. However, it would still lead to another problem in
&gt; another use case:
&gt; - users draw using a same offset but with different number of vertices many
&gt; times =&gt; many conversion buffers would be created.

Thanks for the explanation! I think the general logic should be better.

However, for this particular bug, it sounds like we need to just change the look up function from `offset == wantOffset` to `offset &lt;= wantOffset` ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808388</commentid>
    <comment_count>11</comment_count>
    <who name="Le Hoang Quyen">le.hoang.q</who>
    <bug_when>2021-10-25 07:30:32 -0700</bug_when>
    <thetext>(In reply to Kimmo Kinnunen from comment #10)
&gt; (In reply to Le Hoang Quyen from comment #9)
&gt; &gt; Currently the conversion buffers are keyed by triplet {format, offset,
&gt; &gt; stride}. It doesn&apos;t take into account how many vertices needed hence the
&gt; &gt; issue above happened.
&gt; &gt; The number of vertices would be included in the key i.e. {format, offset,
&gt; &gt; stride, numVertices}. However, it would still lead to another problem in
&gt; &gt; another use case:
&gt; &gt; - users draw using a same offset but with different number of vertices many
&gt; &gt; times =&gt; many conversion buffers would be created.
&gt; 
&gt; Thanks for the explanation! I think the general logic should be better.
&gt; 
&gt; However, for this particular bug, it sounds like we need to just change the
&gt; look up function from `offset == wantOffset` to `offset &lt;= wantOffset` ?
The above offsets are just approximate numbers. The actual numbers might not be multiples of 100. And each drawing portions might use different alignments from each other.

Yes, the lookup could be changed to something better (perhaps using `offset mod alignment` as key instead of offset). However, `offset &lt;= wantOffset` alone doesn&apos;t work because there are several limits of Metal I noticed:
- The final offset of the vertex attribute is calculated by:
  final offset = bufferOffset + attribOffset.
  - `bufferOffset` = offset set via MTLRenderCommandEncoder.setVertexBuffer
  - `attribOffset` = MTLVertexAttributeDescriptor&apos;s offset field.

- Metal requires:
  - `bufferOffset` to be multiples of the attribute&apos;s data type&apos;s alignment.
  - `attribOffset` must be multiples of 4.
  - Furthermore, `attribOffset` + attribute&apos;s size must be less than or equal to the fetching stride.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809913</commentid>
    <comment_count>12</comment_count>
      <attachid>442768</attachid>
    <who name="Kyle Piddington">kpiddington</who>
    <bug_when>2021-10-28 17:17:28 -0700</bug_when>
    <thetext>Created attachment 442768
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809914</commentid>
    <comment_count>13</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-10-28 17:18:32 -0700</bug_when>
    <thetext>Note that there are important steps to take when updating ANGLE. See https://trac.webkit.org/wiki/UpdatingANGLE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809920</commentid>
    <comment_count>14</comment_count>
      <attachid>442768</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-10-28 17:31:22 -0700</bug_when>
    <thetext>Comment on attachment 442768
Patch

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

&gt; Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/VertexArrayMtl.mm:1079
&gt; +    VertexConversionBufferMtl * vertexConverison = (VertexConversionBufferMtl *)conversion;

Spelling error &quot;conversion&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1810374</commentid>
    <comment_count>15</comment_count>
      <attachid>442895</attachid>
    <who name="Kyle Piddington">kpiddington</who>
    <bug_when>2021-10-29 20:03:06 -0700</bug_when>
    <thetext>Created attachment 442895
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1810925</commentid>
    <comment_count>16</comment_count>
      <attachid>442895</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-11-01 15:37:21 -0700</bug_when>
    <thetext>Comment on attachment 442895
Patch

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

&gt; Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/VertexArrayMtl.mm:1074
&gt; +    VertexConversionBufferMtl * vertexConverison = (VertexConversionBufferMtl *)conversion;

Typo here: vertexConverison</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811586</commentid>
    <comment_count>17</comment_count>
      <attachid>443223</attachid>
    <who name="Kyle Piddington">kpiddington</who>
    <bug_when>2021-11-03 12:31:09 -0700</bug_when>
    <thetext>Created attachment 443223
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811624</commentid>
    <comment_count>18</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-03 13:10:28 -0700</bug_when>
    <thetext>Committed r285220 (243845@main): &lt;https://commits.webkit.org/243845@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 443223.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442768</attachid>
            <date>2021-10-28 17:17:28 -0700</date>
            <delta_ts>2021-10-29 20:03:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231607-20211028171727.patch</filename>
            <type>text/plain</type>
            <size>4703</size>
            <attacher name="Kyle Piddington">kpiddington</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0OTYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cKaW5k
ZXggOWI4ZDIzYTZjNzFhYmNkZGNjZWI2N2M0YmZhMjcyYTIyMGQ5YmJlNy4uZmQyMWY3NDI0YjIx
ZWZlN2Y1MDkyNWUwODRkMDI2MWU4ZmMwNTVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIxIEBACisyMDIxLTEwLTI4ICBLeWxlIFBpZGRpbmd0b24gIDxrcGlkZGlu
Z3RvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAoaU9TIDE1KTogVGFiIGNyYXNo
ZXMgd2hlbiB0cnlpbmcgdG8gcmVuZGVyIFByb2plY3RvciBzdG9yaWVzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE2MDcKKworCVJld29yayB2ZXJ0
ZXggYnVmZmVyIGNhY2hpbmcgdG8gYWxsb3cgdXMgdG8gcmV1c2UgcGFydHMKKwlvZiBjb252ZXJ0
ZWQgYnVmZmVycy4gVGhpcyBkcmFtYXRpY2FsbHkgZHJvcHMgdGhlIG1lbW9yeSB1c2FnZSAKKwlv
ZiB0aGlzIHRhYiBmcm9tIDQuNSBnYiB0byByb3VnaGx5IDEuM2diCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIv
bWV0YWwvQnVmZmVyTXRsLm1tOgorICAgICAgICAocng6OkJ1ZmZlck10bDo6Z2V0VmVydGV4Q29u
dmVyc2lvbkJ1ZmZlcik6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL1Zl
cnRleEFycmF5TXRsLm1tOgorICAgICAgICAocng6OlZlcnRleEFycmF5TXRsOjpjb252ZXJ0VmVy
dGV4QnVmZmVyKToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhBcnJheU10bDo6Y29udmVydFZlcnRleEJ1
ZmZlckNQVSk6CisgICAgICAgIChyeDo6VmVydGV4QXJyYXlNdGw6OmNvbnZlcnRWZXJ0ZXhCdWZm
ZXJHUFUpOgorCiAyMDIxLTEwLTI3ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5j
b20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAoU2FmYXJpIDE1KTogUG9vciBXZWJHTCBwZXJmb3Jt
YW5jZSBvbiBodHRwczovL2Rvd25sb2Fkcy5zY2lycmEuY29tL2xhYnMvcGFydGljbGVzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0
YWwvQnVmZmVyTXRsLm1tIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL21ldGFsL0J1ZmZlck10bC5tbQppbmRleCAwNjM0NTNjYjI2MWJkYjM3YWRjOTI1ZWZl
MTVkMjNjODc2N2YyNWViLi5lMjc1NzkyOTI0OGRmZjc2OWIyYTRlZTk1NDM2NWM1NTg4MDk5MDg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvbWV0YWwvQnVmZmVyTXRsLm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9tZXRhbC9CdWZmZXJNdGwubW0KQEAgLTMzMyw3ICszMzMsOCBAQCBD
b252ZXJzaW9uQnVmZmVyTXRsICpCdWZmZXJNdGw6OmdldFZlcnRleENvbnZlcnNpb25CdWZmZXIo
Q29udGV4dE10bCAqY29udGV4dCwKIHsKICAgICBmb3IgKFZlcnRleENvbnZlcnNpb25CdWZmZXJN
dGwgJmJ1ZmZlciA6IG1WZXJ0ZXhDb252ZXJzaW9uQnVmZmVycykKICAgICB7Ci0gICAgICAgIGlm
IChidWZmZXIuZm9ybWF0SUQgPT0gZm9ybWF0SUQgJiYgYnVmZmVyLnN0cmlkZSA9PSBzdHJpZGUg
JiYgYnVmZmVyLm9mZnNldCA9PSBvZmZzZXQpCisgICAgICAgIGlmIChidWZmZXIuZm9ybWF0SUQg
PT0gZm9ybWF0SUQgJiYgYnVmZmVyLnN0cmlkZSA9PSBzdHJpZGUgJiYKKyAgICAgICAgICAgIGJ1
ZmZlci5vZmZzZXQgPD0gb2Zmc2V0ICYmIGJ1ZmZlci5vZmZzZXQlYnVmZmVyLnN0cmlkZSA9PSBv
ZmZzZXQlc3RyaWRlKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gJmJ1ZmZlcjsKICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL21ldGFsL1ZlcnRleEFycmF5TXRsLm1tIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL1ZlcnRleEFycmF5TXRsLm1tCmluZGV4IDMw
MmVhOGEwZTYyMjNjYTU2MzdkOTNhM2E5MWVhOTk5NTdlYjBmMGEuLmM2OWE5MzY1ZmU0MWQ0Yjk2
YjAyMGUzOWYxYWFmNTJiOTJjZWFjNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9WZXJ0ZXhBcnJheU10bC5tbQorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvVmVydGV4
QXJyYXlNdGwubW0KQEAgLTk2Niw4ICs5NjYsMTAgQEAgYW5nbGU6OlJlc3VsdCBWZXJ0ZXhBcnJh
eU10bDo6Y29udmVydFZlcnRleEJ1ZmZlcihjb25zdCBnbDo6Q29udGV4dCAqZ2xDb250ZXh0LAog
ICAgIC8vIEhhcyB0aGUgY29udGVudCBvZiB0aGUgYnVmZmVyIGhhcyBjaGFuZ2VkIHNpbmNlIGxh
c3QgY29udmVyc2lvbj8KICAgICBpZiAoIWNvbnZlcnNpb24tPmRpcnR5KQogICAgIHsKKyAgICAg
ICAgVmVydGV4Q29udmVyc2lvbkJ1ZmZlck10bCAqIHZlcnRleENvbnZlcnNpb25NdGwgPSAoVmVy
dGV4Q29udmVyc2lvbkJ1ZmZlck10bCAqKWNvbnZlcnNpb247CisgICAgICAgIEFTU0VSVCgoYmlu
ZGluZy5nZXRPZmZzZXQoKSAtIHZlcnRleENvbnZlcnNpb25NdGwtPm9mZnNldCkgJSBzdHJpZGUg
PT0gMCk7CiAgICAgICAgIG1Db252ZXJ0ZWRBcnJheUJ1ZmZlckhvbGRlcnNbYXR0cmliSW5kZXhd
LnNldChjb252ZXJzaW9uLT5jb252ZXJ0ZWRCdWZmZXIpOwotICAgICAgICBtQ3VycmVudEFycmF5
QnVmZmVyT2Zmc2V0c1thdHRyaWJJbmRleF0gPSBjb252ZXJzaW9uLT5jb252ZXJ0ZWRPZmZzZXQ7
CisgICAgICAgIG1DdXJyZW50QXJyYXlCdWZmZXJPZmZzZXRzW2F0dHJpYkluZGV4XSA9IGNvbnZl
cnNpb24tPmNvbnZlcnRlZE9mZnNldCArIHN0cmlkZSAqICgoYmluZGluZy5nZXRPZmZzZXQoKSAt
IHZlcnRleENvbnZlcnNpb25NdGwtPm9mZnNldCkvYmluZGluZy5nZXRTdHJpZGUoKSk7CiAKICAg
ICAgICAgbUN1cnJlbnRBcnJheUJ1ZmZlcnNbYXR0cmliSW5kZXhdICAgICAgID0gJm1Db252ZXJ0
ZWRBcnJheUJ1ZmZlckhvbGRlcnNbYXR0cmliSW5kZXhdOwogICAgICAgICBtQ3VycmVudEFycmF5
QnVmZmVyRm9ybWF0c1thdHRyaWJJbmRleF0gPSAmY29udmVydGVkRm9ybWF0OwpAQCAtMTA0MCw4
ICsxMDQyLDkgQEAgYW5nbGU6OlJlc3VsdCBWZXJ0ZXhBcnJheU10bDo6Y29udmVydFZlcnRleEJ1
ZmZlckNQVShDb250ZXh0TXRsICpjb250ZXh0TXRsLAogCiAgICAgY29uc3QgdWludDhfdCAqc3Jj
Qnl0ZXMgPSBzcmNCdWZmZXItPmdldENsaWVudFNoYWRvd0NvcHlEYXRhKGNvbnRleHRNdGwpOwog
ICAgIEFOR0xFX0NIRUNLX0dMX0FMTE9DKGNvbnRleHRNdGwsIHNyY0J5dGVzKTsKLQotICAgIHNy
Y0J5dGVzICs9IGJpbmRpbmcuZ2V0T2Zmc2V0KCk7CisgICAgLy9Db3B5IHRoZSBtaW5pbXVtIGJl
dHdlZW4gdGhlIGJpbmRpbmcgb2Zmc2V0IGFuZCB0aGUgY29udmVyc2lvbiBvZmZzZXQuCisgICAg
VmVydGV4Q29udmVyc2lvbkJ1ZmZlck10bCAqIHZlcnRleENvbnZlcmlzb24gPSAoVmVydGV4Q29u
dmVyc2lvbkJ1ZmZlck10bCAqKWNvbnZlcnNpb247CisgICAgc3JjQnl0ZXMgKz0gTUlOKGJpbmRp
bmcuZ2V0T2Zmc2V0KCksIHZlcnRleENvbnZlcmlzb24tPm9mZnNldCk7CiAKICAgICBBTkdMRV9U
UlkoU3RyZWFtVmVydGV4RGF0YSgKICAgICAgICAgY29udGV4dE10bCwgJmNvbnZlcnNpb24tPmRh
dGEsIHNyY0J5dGVzLCBudW1WZXJ0aWNlcyAqIHRhcmdldFN0cmlkZSwgMCwgbnVtVmVydGljZXMs
CkBAIC0xMDczLDkgKzEwNzYsOSBAQCBhbmdsZTo6UmVzdWx0IFZlcnRleEFycmF5TXRsOjpjb252
ZXJ0VmVydGV4QnVmZmVyR1BVKGNvbnN0IGdsOjpDb250ZXh0ICpnbENvbnRleAogICAgIEFOR0xF
X0NIRUNLX0dMX01BVEgoY29udGV4dE10bCwgbnVtVmVydGljZXMgPD0gc3RkOjpudW1lcmljX2xp
bWl0czx1aW50MzJfdD46Om1heCgpKTsKIAogICAgIG10bDo6VmVydGV4Rm9ybWF0Q29udmVydFBh
cmFtcyBwYXJhbXM7Ci0KKyAgICBWZXJ0ZXhDb252ZXJzaW9uQnVmZmVyTXRsICogdmVydGV4Q29u
dmVyaXNvbiA9IChWZXJ0ZXhDb252ZXJzaW9uQnVmZmVyTXRsICopY29udmVyc2lvbjsKICAgICBw
YXJhbXMuc3JjQnVmZmVyICAgICAgICAgICAgPSBzcmNCdWZmZXItPmdldEN1cnJlbnRCdWZmZXIo
KTsKLSAgICBwYXJhbXMuc3JjQnVmZmVyU3RhcnRPZmZzZXQgPSBzdGF0aWNfY2FzdDx1aW50MzJf
dD4oYmluZGluZy5nZXRPZmZzZXQoKSk7CisgICAgcGFyYW1zLnNyY0J1ZmZlclN0YXJ0T2Zmc2V0
ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KE1JTih2ZXJ0ZXhDb252ZXJpc29uLT5vZmZzZXQsYmlu
ZGluZy5nZXRPZmZzZXQoKSkpOwogICAgIHBhcmFtcy5zcmNTdHJpZGUgICAgICAgICAgICA9IGJp
bmRpbmcuZ2V0U3RyaWRlKCk7CiAgICAgcGFyYW1zLnNyY0RlZmF1bHRBbHBoYURhdGEgID0gY29u
dmVydGVkRm9ybWF0LmRlZmF1bHRBbHBoYTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442895</attachid>
            <date>2021-10-29 20:03:06 -0700</date>
            <delta_ts>2021-11-03 12:31:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231607-20211029220306.patch</filename>
            <type>text/plain</type>
            <size>8593</size>
            <attacher name="Kyle Piddington">kpiddington</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1MDcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cKaW5k
ZXggOWI4ZDIzYTZjNzFhYmNkZGNjZWI2N2M0YmZhMjcyYTIyMGQ5YmJlNy4uYTIyOGZlOGY5MzE2
Y2M4YjFkOGZiODU2MWEyODEwYmNjYzY1NmVkZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIxIEBACisyMDIxLTEwLTI5ICBLeWxlIFBpZGRpbmd0b24gIDxrcGlkZGlu
Z3RvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAoaU9TIDE1KTogVGFiIGNyYXNo
ZXMgd2hlbiB0cnlpbmcgdG8gcmVuZGVyIFByb2plY3RvciBzdG9yaWVzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE2MDcKKworCVJld29yayB2ZXJ0
ZXggYnVmZmVyIGNhY2hpbmcgdG8gYWxsb3cgdXMgdG8gcmV1c2UgcGFydHMKKwlvZiBjb252ZXJ0
ZWQgYnVmZmVycy4gVGhpcyBkcmFtYXRpY2FsbHkgZHJvcHMgdGhlIG1lbW9yeSB1c2FnZSAKKwlv
ZiB0aGlzIHRhYiBmcm9tIDQuNSBnYiB0byByb3VnaGx5IDEuM2diCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIv
bWV0YWwvQnVmZmVyTXRsLm1tOgorICAgICAgICAocng6OkJ1ZmZlck10bDo6Z2V0VmVydGV4Q29u
dmVyc2lvbkJ1ZmZlcik6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL1Zl
cnRleEFycmF5TXRsLm1tOgorICAgICAgICAocng6OlZlcnRleEFycmF5TXRsOjpjb252ZXJ0VmVy
dGV4QnVmZmVyKToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhBcnJheU10bDo6Y29udmVydFZlcnRleEJ1
ZmZlckNQVSk6CisgICAgICAgIChyeDo6VmVydGV4QXJyYXlNdGw6OmNvbnZlcnRWZXJ0ZXhCdWZm
ZXJHUFUpOgorCiAyMDIxLTEwLTI3ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5j
b20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAoU2FmYXJpIDE1KTogUG9vciBXZWJHTCBwZXJmb3Jt
YW5jZSBvbiBodHRwczovL2Rvd25sb2Fkcy5zY2lycmEuY29tL2xhYnMvcGFydGljbGVzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0
YWwvQnVmZmVyTXRsLm1tIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL21ldGFsL0J1ZmZlck10bC5tbQppbmRleCAwNjM0NTNjYjI2MWJkYjM3YWRjOTI1ZWZl
MTVkMjNjODc2N2YyNWViLi5lMjc1NzkyOTI0OGRmZjc2OWIyYTRlZTk1NDM2NWM1NTg4MDk5MDg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvbWV0YWwvQnVmZmVyTXRsLm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9tZXRhbC9CdWZmZXJNdGwubW0KQEAgLTMzMyw3ICszMzMsOCBAQCBD
b252ZXJzaW9uQnVmZmVyTXRsICpCdWZmZXJNdGw6OmdldFZlcnRleENvbnZlcnNpb25CdWZmZXIo
Q29udGV4dE10bCAqY29udGV4dCwKIHsKICAgICBmb3IgKFZlcnRleENvbnZlcnNpb25CdWZmZXJN
dGwgJmJ1ZmZlciA6IG1WZXJ0ZXhDb252ZXJzaW9uQnVmZmVycykKICAgICB7Ci0gICAgICAgIGlm
IChidWZmZXIuZm9ybWF0SUQgPT0gZm9ybWF0SUQgJiYgYnVmZmVyLnN0cmlkZSA9PSBzdHJpZGUg
JiYgYnVmZmVyLm9mZnNldCA9PSBvZmZzZXQpCisgICAgICAgIGlmIChidWZmZXIuZm9ybWF0SUQg
PT0gZm9ybWF0SUQgJiYgYnVmZmVyLnN0cmlkZSA9PSBzdHJpZGUgJiYKKyAgICAgICAgICAgIGJ1
ZmZlci5vZmZzZXQgPD0gb2Zmc2V0ICYmIGJ1ZmZlci5vZmZzZXQlYnVmZmVyLnN0cmlkZSA9PSBv
ZmZzZXQlc3RyaWRlKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gJmJ1ZmZlcjsKICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL21ldGFsL1ZlcnRleEFycmF5TXRsLm1tIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL1ZlcnRleEFycmF5TXRsLm1tCmluZGV4IDMw
MmVhOGEwZTYyMjNjYTU2MzdkOTNhM2E5MWVhOTk5NTdlYjBmMGEuLjhiMGEzOTc4ODlkNjJkMWU1
MWQ4MzJjMjVkMDI0NWM0Y2E5ZDdmNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9WZXJ0ZXhBcnJheU10bC5tbQorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvVmVydGV4
QXJyYXlNdGwubW0KQEAgLTE0Nyw2ICsxNDcsMzAgQEAgc2l6ZV90IEdldFZlcnRleENvdW50KEJ1
ZmZlck10bCAqc3JjQnVmZmVyLAogICAgIHJldHVybiBudW1WZXJ0aWNlczsKIH0KIAorLy9DYWxj
dWxhdGUgaG93IG1hbnkgdmVydGljZXMgd2UgaW50ZW5kIHRvCisvL2NvbnZlcnQsIGluY2x1ZGlu
ZyBhbnkgYWRkaXRpb25hbCBvbmVzIGluIHRoZSBvcmlnaW5hbCBjb252ZXJzaW9uIGJ1ZmZlcgor
c2l6ZV90IEdldFZlcnRleENvdW50V2l0aENvbnZlcnNpb24oQnVmZmVyTXRsICpzcmNCdWZmZXIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJ0ZXhDb252ZXJzaW9uQnVm
ZmVyTXRsICpjb252ZXJzaW9uQnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6OlZlcnRleEJpbmRpbmcgJmJpbmRpbmcsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBzcmNGb3JtYXRTaXplKQoreworICAgIC8vIEJ5
dGVzIHVzYWJsZSBmb3IgdmVydGV4IGRhdGEuCisgICAgR0xpbnQ2NCBieXRlcyA9CisgICAgICAg
IHNyY0J1ZmZlci0+c2l6ZSgpIC0gTUlOKChHTGludHB0ciljb252ZXJzaW9uQnVmZmVyLT5vZmZz
ZXQsIGJpbmRpbmcuZ2V0T2Zmc2V0KCkpOworICAgIGlmIChieXRlcyA8IHNyY0Zvcm1hdFNpemUp
CisgICAgICAgIHJldHVybiAwOworCisgICAgLy8gQ291bnQgdGhlIGxhc3QgdmVydGV4LiAgSXQg
bWF5IG9jY3VweSBsZXNzIHRoYW4gYSBmdWxsIHN0cmlkZS4KKyAgICBzaXplX3QgbnVtVmVydGlj
ZXMgPSAxOworICAgIGJ5dGVzIC09IHNyY0Zvcm1hdFNpemU7CisKKyAgICAvLyBDb3VudCBob3cg
bWFueSBzdHJpZGVzIGZpdCByZW1haW5pbmcgc3BhY2UuCisgICAgaWYgKGJ5dGVzID4gMCkKKyAg
ICAgICAgbnVtVmVydGljZXMgKz0gc3RhdGljX2Nhc3Q8c2l6ZV90PihieXRlcykgLyBiaW5kaW5n
LmdldFN0cmlkZSgpOworCisgICAgcmV0dXJuIG51bVZlcnRpY2VzOworfQorCiBpbmxpbmUgc2l6
ZV90IEdldEluZGV4Q291bnQoQnVmZmVyTXRsICpzcmNCdWZmZXIsIHNpemVfdCBvZmZzZXQsIGds
OjpEcmF3RWxlbWVudHNUeXBlIGluZGV4VHlwZSkKIHsKICAgICBzaXplX3QgZWxlbWVudFNpemUg
PSBnbDo6R2V0RHJhd0VsZW1lbnRzVHlwZVNpemUoaW5kZXhUeXBlKTsKQEAgLTk2NiwxNSArOTkw
LDIxIEBAIGFuZ2xlOjpSZXN1bHQgVmVydGV4QXJyYXlNdGw6OmNvbnZlcnRWZXJ0ZXhCdWZmZXIo
Y29uc3QgZ2w6OkNvbnRleHQgKmdsQ29udGV4dCwKICAgICAvLyBIYXMgdGhlIGNvbnRlbnQgb2Yg
dGhlIGJ1ZmZlciBoYXMgY2hhbmdlZCBzaW5jZSBsYXN0IGNvbnZlcnNpb24/CiAgICAgaWYgKCFj
b252ZXJzaW9uLT5kaXJ0eSkKICAgICB7CisgICAgICAgIFZlcnRleENvbnZlcnNpb25CdWZmZXJN
dGwgKiB2ZXJ0ZXhDb252ZXJzaW9uTXRsID0gKFZlcnRleENvbnZlcnNpb25CdWZmZXJNdGwgKilj
b252ZXJzaW9uOworICAgICAgICBBU1NFUlQoKGJpbmRpbmcuZ2V0T2Zmc2V0KCkgLSB2ZXJ0ZXhD
b252ZXJzaW9uTXRsLT5vZmZzZXQpICUgc3RyaWRlID09IDApOwogICAgICAgICBtQ29udmVydGVk
QXJyYXlCdWZmZXJIb2xkZXJzW2F0dHJpYkluZGV4XS5zZXQoY29udmVyc2lvbi0+Y29udmVydGVk
QnVmZmVyKTsKLSAgICAgICAgbUN1cnJlbnRBcnJheUJ1ZmZlck9mZnNldHNbYXR0cmliSW5kZXhd
ID0gY29udmVyc2lvbi0+Y29udmVydGVkT2Zmc2V0OworICAgICAgICBtQ3VycmVudEFycmF5QnVm
ZmVyT2Zmc2V0c1thdHRyaWJJbmRleF0gPSBjb252ZXJzaW9uLT5jb252ZXJ0ZWRPZmZzZXQgKyBz
dHJpZGUgKiAoKGJpbmRpbmcuZ2V0T2Zmc2V0KCkgLSB2ZXJ0ZXhDb252ZXJzaW9uTXRsLT5vZmZz
ZXQpL2JpbmRpbmcuZ2V0U3RyaWRlKCkpOwogCiAgICAgICAgIG1DdXJyZW50QXJyYXlCdWZmZXJz
W2F0dHJpYkluZGV4XSAgICAgICA9ICZtQ29udmVydGVkQXJyYXlCdWZmZXJIb2xkZXJzW2F0dHJp
YkluZGV4XTsKICAgICAgICAgbUN1cnJlbnRBcnJheUJ1ZmZlckZvcm1hdHNbYXR0cmliSW5kZXhd
ID0gJmNvbnZlcnRlZEZvcm1hdDsKICAgICAgICAgbUN1cnJlbnRBcnJheUJ1ZmZlclN0cmlkZXNb
YXR0cmliSW5kZXhdID0gc3RyaWRlOwogICAgICAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29u
dGludWU7CiAgICAgfQotCisgICAgLy8gVXBkYXRlIG51bVZlcnRpY2VzIGRlcGVuZGluZyBvbiB3
aGVyZSB3ZSBpbnRlbmQgdG8gY29udmVydCBmcm9tLgorICAgIC8vIEEgbmV3IGJ1ZmZlciBjb21w
YXJlZCB0byBhIHJldXNlZCBvbmUgaGFzIGEgZGlmZmVyZW50CisgICAgLy8gc3RhcnRpbmcgb2Zm
c2V0LgorICAgIG51bVZlcnRpY2VzID0gR2V0VmVydGV4Q291bnRXaXRoQ29udmVyc2lvbihzcmNC
dWZmZXIsIChWZXJ0ZXhDb252ZXJzaW9uQnVmZmVyTXRsICopY29udmVyc2lvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZGluZywgc3JjRm9ybWF0
U2l6ZSk7CiAgICAgY29uc3QgYW5nbGU6OkZvcm1hdCAmY29udmVydGVkQW5nbGVGb3JtYXQgPSBj
b252ZXJ0ZWRGb3JtYXQuYWN0dWFsQW5nbGVGb3JtYXQoKTsKICAgICBib29sIGNhbkNvbnZlcnRU
b0Zsb2F0T25HUFUgPQogICAgICAgICBjb252ZXJ0ZWRBbmdsZUZvcm1hdC5pc0Zsb2F0KCkgJiYg
IWNvbnZlcnRlZEFuZ2xlRm9ybWF0LmlzVmVydGV4VHlwZUhhbGZGbG9hdCgpOwpAQCAtMTAwMywx
NiArMTAzMywxNiBAQCBhbmdsZTo6UmVzdWx0IFZlcnRleEFycmF5TXRsOjpjb252ZXJ0VmVydGV4
QnVmZmVyKGNvbnN0IGdsOjpDb250ZXh0ICpnbENvbnRleHQsCiAgICAgICAgIEFOR0xFX1RSWShj
b252ZXJ0VmVydGV4QnVmZmVyQ1BVKGNvbnRleHRNdGwsIHNyY0J1ZmZlciwgYmluZGluZywgYXR0
cmliSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZl
cnRlZEZvcm1hdCwgc3RyaWRlLCBudW1WZXJ0aWNlcywgY29udmVyc2lvbikpOwogICAgIH0KLQor
ICAgIG1Db252ZXJ0ZWRBcnJheUJ1ZmZlckhvbGRlcnNbYXR0cmliSW5kZXhdLnNldChjb252ZXJz
aW9uLT5jb252ZXJ0ZWRCdWZmZXIpOworICAgIG1DdXJyZW50QXJyYXlCdWZmZXJPZmZzZXRzW2F0
dHJpYkluZGV4XSA9CisgICAgICAgIGNvbnZlcnNpb24tPmNvbnZlcnRlZE9mZnNldCArCisgICAg
ICAgIHN0cmlkZSAqICgoYmluZGluZy5nZXRPZmZzZXQoKSAtICgoVmVydGV4Q29udmVyc2lvbkJ1
ZmZlck10bCAqKWNvbnZlcnNpb24pLT5vZmZzZXQpIC8KKyAgICAgICAgICAgICAgICAgIGJpbmRp
bmcuZ2V0U3RyaWRlKCkpOworICAgIFNpbXBsZVdlYWtCdWZmZXJIb2xkZXJNdGwgY29udmVyc2lv
bkJ1ZmZlckhvbGRlcjsKICAgICBtQ3VycmVudEFycmF5QnVmZmVyc1thdHRyaWJJbmRleF0gICAg
ICAgPSAmbUNvbnZlcnRlZEFycmF5QnVmZmVySG9sZGVyc1thdHRyaWJJbmRleF07CiAgICAgbUN1
cnJlbnRBcnJheUJ1ZmZlckZvcm1hdHNbYXR0cmliSW5kZXhdID0gJmNvbnZlcnRlZEZvcm1hdDsK
ICAgICBtQ3VycmVudEFycmF5QnVmZmVyU3RyaWRlc1thdHRyaWJJbmRleF0gPSBzdHJpZGU7Ci0K
LSAgICAvLyBDYWNoZSB0aGUgbGFzdCBjb252ZXJ0ZWQgcmVzdWx0cyB0byBiZSByZS11c2VkIGxh
dGVyIGlmIHRoZSBidWZmZXIncyBjb250ZW50IHdvbid0IGV2ZXIgYmUKLSAgICAvLyBjaGFuZ2Vk
LgotICAgIGNvbnZlcnNpb24tPmNvbnZlcnRlZEJ1ZmZlciA9IG1Db252ZXJ0ZWRBcnJheUJ1ZmZl
ckhvbGRlcnNbYXR0cmliSW5kZXhdLmdldEN1cnJlbnRCdWZmZXIoKTsKLSAgICBjb252ZXJzaW9u
LT5jb252ZXJ0ZWRPZmZzZXQgPSBtQ3VycmVudEFycmF5QnVmZmVyT2Zmc2V0c1thdHRyaWJJbmRl
eF07Ci0KKyAgICAKICAgICBBU1NFUlQoY29udmVyc2lvbi0+ZGlydHkpOwogICAgIGNvbnZlcnNp
b24tPmRpcnR5ID0gZmFsc2U7CiAKQEAgLTEwNDAsMTQgKzEwNzAsMTUgQEAgYW5nbGU6OlJlc3Vs
dCBWZXJ0ZXhBcnJheU10bDo6Y29udmVydFZlcnRleEJ1ZmZlckNQVShDb250ZXh0TXRsICpjb250
ZXh0TXRsLAogCiAgICAgY29uc3QgdWludDhfdCAqc3JjQnl0ZXMgPSBzcmNCdWZmZXItPmdldENs
aWVudFNoYWRvd0NvcHlEYXRhKGNvbnRleHRNdGwpOwogICAgIEFOR0xFX0NIRUNLX0dMX0FMTE9D
KGNvbnRleHRNdGwsIHNyY0J5dGVzKTsKLQotICAgIHNyY0J5dGVzICs9IGJpbmRpbmcuZ2V0T2Zm
c2V0KCk7Ci0KKyAgICAvL0NvcHkgdGhlIG1pbmltdW0gYmV0d2VlbiB0aGUgYmluZGluZyBvZmZz
ZXQgYW5kIHRoZSBjb252ZXJzaW9uIG9mZnNldC4KKyAgICBWZXJ0ZXhDb252ZXJzaW9uQnVmZmVy
TXRsICogdmVydGV4Q29udmVyaXNvbiA9IChWZXJ0ZXhDb252ZXJzaW9uQnVmZmVyTXRsICopY29u
dmVyc2lvbjsKKyAgICBzcmNCeXRlcyArPSBNSU4oYmluZGluZy5nZXRPZmZzZXQoKSwgdmVydGV4
Q29udmVyaXNvbi0+b2Zmc2V0KTsKKyAgICBTaW1wbGVXZWFrQnVmZmVySG9sZGVyTXRsIGNvbnZl
cnNpb25CdWZmZXJIb2xkZXI7CiAgICAgQU5HTEVfVFJZKFN0cmVhbVZlcnRleERhdGEoCiAgICAg
ICAgIGNvbnRleHRNdGwsICZjb252ZXJzaW9uLT5kYXRhLCBzcmNCeXRlcywgbnVtVmVydGljZXMg
KiB0YXJnZXRTdHJpZGUsIDAsIG51bVZlcnRpY2VzLAogICAgICAgICBiaW5kaW5nLmdldFN0cmlk
ZSgpLCBjb252ZXJ0ZWRGb3JtYXQudmVydGV4TG9hZEZ1bmN0aW9uLAotICAgICAgICAmbUNvbnZl
cnRlZEFycmF5QnVmZmVySG9sZGVyc1thdHRyaWJJbmRleF0sICZtQ3VycmVudEFycmF5QnVmZmVy
T2Zmc2V0c1thdHRyaWJJbmRleF0pKTsKLQorICAgICAgICAmY29udmVyc2lvbkJ1ZmZlckhvbGRl
ciwgJmNvbnZlcnNpb24tPmNvbnZlcnRlZE9mZnNldCkpOworICAgIGNvbnZlcnNpb24tPmNvbnZl
cnRlZEJ1ZmZlciA9IGNvbnZlcnNpb25CdWZmZXJIb2xkZXIuZ2V0Q3VycmVudEJ1ZmZlcigpOwog
ICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKIH0KIApAQCAtMTA3Myw5ICsxMTA0
LDkgQEAgYW5nbGU6OlJlc3VsdCBWZXJ0ZXhBcnJheU10bDo6Y29udmVydFZlcnRleEJ1ZmZlckdQ
VShjb25zdCBnbDo6Q29udGV4dCAqZ2xDb250ZXgKICAgICBBTkdMRV9DSEVDS19HTF9NQVRIKGNv
bnRleHRNdGwsIG51bVZlcnRpY2VzIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+Ojpt
YXgoKSk7CiAKICAgICBtdGw6OlZlcnRleEZvcm1hdENvbnZlcnRQYXJhbXMgcGFyYW1zOwotCisg
ICAgVmVydGV4Q29udmVyc2lvbkJ1ZmZlck10bCAqIHZlcnRleENvbnZlcmlzb24gPSAoVmVydGV4
Q29udmVyc2lvbkJ1ZmZlck10bCAqKWNvbnZlcnNpb247CiAgICAgcGFyYW1zLnNyY0J1ZmZlciAg
ICAgICAgICAgID0gc3JjQnVmZmVyLT5nZXRDdXJyZW50QnVmZmVyKCk7Ci0gICAgcGFyYW1zLnNy
Y0J1ZmZlclN0YXJ0T2Zmc2V0ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGJpbmRpbmcuZ2V0T2Zm
c2V0KCkpOworICAgIHBhcmFtcy5zcmNCdWZmZXJTdGFydE9mZnNldCA9IHN0YXRpY19jYXN0PHVp
bnQzMl90PihNSU4odmVydGV4Q29udmVyaXNvbi0+b2Zmc2V0LGJpbmRpbmcuZ2V0T2Zmc2V0KCkp
KTsKICAgICBwYXJhbXMuc3JjU3RyaWRlICAgICAgICAgICAgPSBiaW5kaW5nLmdldFN0cmlkZSgp
OwogICAgIHBhcmFtcy5zcmNEZWZhdWx0QWxwaGFEYXRhICA9IGNvbnZlcnRlZEZvcm1hdC5kZWZh
dWx0QWxwaGE7CiAKQEAgLTExMjAsOSArMTE1MSw4IEBAIGFuZ2xlOjpSZXN1bHQgVmVydGV4QXJy
YXlNdGw6OmNvbnZlcnRWZXJ0ZXhCdWZmZXJHUFUoY29uc3QgZ2w6OkNvbnRleHQgKmdsQ29udGV4
CiAKICAgICBBTkdMRV9UUlkoY29udmVyc2lvbi0+ZGF0YS5jb21taXQoY29udGV4dE10bCkpOwog
Ci0gICAgbUNvbnZlcnRlZEFycmF5QnVmZmVySG9sZGVyc1thdHRyaWJJbmRleF0uc2V0KG5ld0J1
ZmZlcik7Ci0gICAgbUN1cnJlbnRBcnJheUJ1ZmZlck9mZnNldHNbYXR0cmliSW5kZXhdID0gbmV3
QnVmZmVyT2Zmc2V0OwotCisgICAgY29udmVyc2lvbi0+Y29udmVydGVkQnVmZmVyID0gbmV3QnVm
ZmVyOworICAgIGNvbnZlcnNpb24tPmNvbnZlcnRlZE9mZnNldCA9IG5ld0J1ZmZlck9mZnNldDsK
ICAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CiB9CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443223</attachid>
            <date>2021-11-03 12:31:09 -0700</date>
            <delta_ts>2021-11-03 13:10:30 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-231607-20211103123108.patch</filename>
            <type>text/plain</type>
            <size>8529</size>
            <attacher name="Kyle Piddington">kpiddington</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1MjE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cKaW5k
ZXggODlkNzViNGY1MjcyOTczOTkyZWIxM2FhNWM1MTA0MzM5YmQ4MzFkYy4uNmZiMGI4ZDIzZTJl
Y2Q0OGNmYzAyMmQzOTI4MjZiNGRkOTdmODNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIxIEBACisyMDIxLTExLTAzICBLeWxlIFBpZGRpbmd0b24gIDxrcGlkZGlu
Z3RvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAoaU9TIDE1KTogVGFiIGNyYXNo
ZXMgd2hlbiB0cnlpbmcgdG8gcmVuZGVyIFByb2plY3RvciBzdG9yaWVzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE2MDcKKworCVJld29yayB2ZXJ0
ZXggYnVmZmVyIGNhY2hpbmcgdG8gYWxsb3cgdXMgdG8gcmV1c2UgcGFydHMKKwlvZiBjb252ZXJ0
ZWQgYnVmZmVycy4gVGhpcyBkcmFtYXRpY2FsbHkgZHJvcHMgdGhlIG1lbW9yeSB1c2FnZSAKKwlv
ZiB0aGlzIHRhYiBmcm9tIDQuNSBnYiB0byByb3VnaGx5IDEuM2diCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRGVhbiBKYWNrc29uLgorCisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21l
dGFsL0J1ZmZlck10bC5tbToKKyAgICAgICAgKHJ4OjpCdWZmZXJNdGw6OmdldFZlcnRleENvbnZl
cnNpb25CdWZmZXIpOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9WZXJ0
ZXhBcnJheU10bC5tbToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhBcnJheU10bDo6Y29udmVydFZlcnRl
eEJ1ZmZlcik6CisgICAgICAgIChyeDo6VmVydGV4QXJyYXlNdGw6OmNvbnZlcnRWZXJ0ZXhCdWZm
ZXJDUFUpOgorICAgICAgICAocng6OlZlcnRleEFycmF5TXRsOjpjb252ZXJ0VmVydGV4QnVmZmVy
R1BVKToKKwogMjAyMS0xMS0wMSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIFtBTkdMRV0gRW5hYmxlIC1XZm9ybWF0PTIgd2FybmluZ3MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9CdWZm
ZXJNdGwubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
bWV0YWwvQnVmZmVyTXRsLm1tCmluZGV4IDA2MzQ1M2NiMjYxYmRiMzdhZGM5MjVlZmUxNWQyM2M4
NzY3ZjI1ZWIuLmUyNzU3OTI5MjQ4ZGZmNzY5YjJhNGVlOTU0MzY1YzU1ODgwOTkwODUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRh
bC9CdWZmZXJNdGwubW0KKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL21ldGFsL0J1ZmZlck10bC5tbQpAQCAtMzMzLDcgKzMzMyw4IEBAIENvbnZlcnNp
b25CdWZmZXJNdGwgKkJ1ZmZlck10bDo6Z2V0VmVydGV4Q29udmVyc2lvbkJ1ZmZlcihDb250ZXh0
TXRsICpjb250ZXh0LAogewogICAgIGZvciAoVmVydGV4Q29udmVyc2lvbkJ1ZmZlck10bCAmYnVm
ZmVyIDogbVZlcnRleENvbnZlcnNpb25CdWZmZXJzKQogICAgIHsKLSAgICAgICAgaWYgKGJ1ZmZl
ci5mb3JtYXRJRCA9PSBmb3JtYXRJRCAmJiBidWZmZXIuc3RyaWRlID09IHN0cmlkZSAmJiBidWZm
ZXIub2Zmc2V0ID09IG9mZnNldCkKKyAgICAgICAgaWYgKGJ1ZmZlci5mb3JtYXRJRCA9PSBmb3Jt
YXRJRCAmJiBidWZmZXIuc3RyaWRlID09IHN0cmlkZSAmJgorICAgICAgICAgICAgYnVmZmVyLm9m
ZnNldCA8PSBvZmZzZXQgJiYgYnVmZmVyLm9mZnNldCVidWZmZXIuc3RyaWRlID09IG9mZnNldCVz
dHJpZGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiAmYnVmZmVyOwogICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvbWV0YWwvVmVydGV4QXJyYXlNdGwubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvVmVydGV4QXJyYXlNdGwubW0KaW5kZXggMzAyZWE4YTBl
NjIyM2NhNTYzN2Q5M2EzYTkxZWE5OTk1N2ViMGYwYS4uY2Y3ZGM2ZDFhYmZlMDY5MzVmYTA1ZGVi
ZTZjNzk4MGM4N2UxZDBlYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL1ZlcnRleEFycmF5TXRsLm1tCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9WZXJ0ZXhBcnJheU10
bC5tbQpAQCAtMTQ3LDYgKzE0NywzMCBAQCBzaXplX3QgR2V0VmVydGV4Q291bnQoQnVmZmVyTXRs
ICpzcmNCdWZmZXIsCiAgICAgcmV0dXJuIG51bVZlcnRpY2VzOwogfQogCisvL0NhbGN1bGF0ZSBo
b3cgbWFueSB2ZXJ0aWNlcyB3ZSBpbnRlbmQgdG8KKy8vY29udmVydCwgaW5jbHVkaW5nIGFueSBh
ZGRpdGlvbmFsIG9uZXMgaW4gdGhlIG9yaWdpbmFsIGNvbnZlcnNpb24gYnVmZmVyCitzaXplX3Qg
R2V0VmVydGV4Q291bnRXaXRoQ29udmVyc2lvbihCdWZmZXJNdGwgKnNyY0J1ZmZlciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnRleENvbnZlcnNpb25CdWZmZXJNdGwg
KmNvbnZlcnNpb25CdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBnbDo6VmVydGV4QmluZGluZyAmYmluZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVpbnQzMl90IHNyY0Zvcm1hdFNpemUpCit7CisgICAgLy8gQnl0ZXMgdXNh
YmxlIGZvciB2ZXJ0ZXggZGF0YS4KKyAgICBHTGludDY0IGJ5dGVzID0KKyAgICAgICAgc3JjQnVm
ZmVyLT5zaXplKCkgLSBNSU4oKEdMaW50cHRyKWNvbnZlcnNpb25CdWZmZXItPm9mZnNldCwgYmlu
ZGluZy5nZXRPZmZzZXQoKSk7CisgICAgaWYgKGJ5dGVzIDwgc3JjRm9ybWF0U2l6ZSkKKyAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICAvLyBDb3VudCB0aGUgbGFzdCB2ZXJ0ZXguICBJdCBtYXkgb2Nj
dXB5IGxlc3MgdGhhbiBhIGZ1bGwgc3RyaWRlLgorICAgIHNpemVfdCBudW1WZXJ0aWNlcyA9IDE7
CisgICAgYnl0ZXMgLT0gc3JjRm9ybWF0U2l6ZTsKKworICAgIC8vIENvdW50IGhvdyBtYW55IHN0
cmlkZXMgZml0IHJlbWFpbmluZyBzcGFjZS4KKyAgICBpZiAoYnl0ZXMgPiAwKQorICAgICAgICBu
dW1WZXJ0aWNlcyArPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGJ5dGVzKSAvIGJpbmRpbmcuZ2V0U3Ry
aWRlKCk7CisKKyAgICByZXR1cm4gbnVtVmVydGljZXM7Cit9CisKIGlubGluZSBzaXplX3QgR2V0
SW5kZXhDb3VudChCdWZmZXJNdGwgKnNyY0J1ZmZlciwgc2l6ZV90IG9mZnNldCwgZ2w6OkRyYXdF
bGVtZW50c1R5cGUgaW5kZXhUeXBlKQogewogICAgIHNpemVfdCBlbGVtZW50U2l6ZSA9IGdsOjpH
ZXREcmF3RWxlbWVudHNUeXBlU2l6ZShpbmRleFR5cGUpOwpAQCAtOTY2LDE1ICs5OTAsMjEgQEAg
YW5nbGU6OlJlc3VsdCBWZXJ0ZXhBcnJheU10bDo6Y29udmVydFZlcnRleEJ1ZmZlcihjb25zdCBn
bDo6Q29udGV4dCAqZ2xDb250ZXh0LAogICAgIC8vIEhhcyB0aGUgY29udGVudCBvZiB0aGUgYnVm
ZmVyIGhhcyBjaGFuZ2VkIHNpbmNlIGxhc3QgY29udmVyc2lvbj8KICAgICBpZiAoIWNvbnZlcnNp
b24tPmRpcnR5KQogICAgIHsKKyAgICAgICAgVmVydGV4Q29udmVyc2lvbkJ1ZmZlck10bCAqIHZl
cnRleENvbnZlcnNpb25NdGwgPSAoVmVydGV4Q29udmVyc2lvbkJ1ZmZlck10bCAqKWNvbnZlcnNp
b247CisgICAgICAgIEFTU0VSVCgoYmluZGluZy5nZXRPZmZzZXQoKSAtIHZlcnRleENvbnZlcnNp
b25NdGwtPm9mZnNldCkgJSBzdHJpZGUgPT0gMCk7CiAgICAgICAgIG1Db252ZXJ0ZWRBcnJheUJ1
ZmZlckhvbGRlcnNbYXR0cmliSW5kZXhdLnNldChjb252ZXJzaW9uLT5jb252ZXJ0ZWRCdWZmZXIp
OwotICAgICAgICBtQ3VycmVudEFycmF5QnVmZmVyT2Zmc2V0c1thdHRyaWJJbmRleF0gPSBjb252
ZXJzaW9uLT5jb252ZXJ0ZWRPZmZzZXQ7CisgICAgICAgIG1DdXJyZW50QXJyYXlCdWZmZXJPZmZz
ZXRzW2F0dHJpYkluZGV4XSA9IGNvbnZlcnNpb24tPmNvbnZlcnRlZE9mZnNldCArIHN0cmlkZSAq
ICgoYmluZGluZy5nZXRPZmZzZXQoKSAtIHZlcnRleENvbnZlcnNpb25NdGwtPm9mZnNldCkvYmlu
ZGluZy5nZXRTdHJpZGUoKSk7CiAKICAgICAgICAgbUN1cnJlbnRBcnJheUJ1ZmZlcnNbYXR0cmli
SW5kZXhdICAgICAgID0gJm1Db252ZXJ0ZWRBcnJheUJ1ZmZlckhvbGRlcnNbYXR0cmliSW5kZXhd
OwogICAgICAgICBtQ3VycmVudEFycmF5QnVmZmVyRm9ybWF0c1thdHRyaWJJbmRleF0gPSAmY29u
dmVydGVkRm9ybWF0OwogICAgICAgICBtQ3VycmVudEFycmF5QnVmZmVyU3RyaWRlc1thdHRyaWJJ
bmRleF0gPSBzdHJpZGU7CiAgICAgICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsK
ICAgICB9Ci0KKyAgICAvLyBVcGRhdGUgbnVtVmVydGljZXMgZGVwZW5kaW5nIG9uIHdoZXJlIHdl
IGludGVuZCB0byBjb252ZXJ0IGZyb20uCisgICAgLy8gQSBuZXcgYnVmZmVyIGNvbXBhcmVkIHRv
IGEgcmV1c2VkIG9uZSBoYXMgYSBkaWZmZXJlbnQKKyAgICAvLyBzdGFydGluZyBvZmZzZXQuCisg
ICAgbnVtVmVydGljZXMgPSBHZXRWZXJ0ZXhDb3VudFdpdGhDb252ZXJzaW9uKHNyY0J1ZmZlciwg
KFZlcnRleENvbnZlcnNpb25CdWZmZXJNdGwgKiljb252ZXJzaW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5kaW5nLCBzcmNGb3JtYXRTaXplKTsK
ICAgICBjb25zdCBhbmdsZTo6Rm9ybWF0ICZjb252ZXJ0ZWRBbmdsZUZvcm1hdCA9IGNvbnZlcnRl
ZEZvcm1hdC5hY3R1YWxBbmdsZUZvcm1hdCgpOwogICAgIGJvb2wgY2FuQ29udmVydFRvRmxvYXRP
bkdQVSA9CiAgICAgICAgIGNvbnZlcnRlZEFuZ2xlRm9ybWF0LmlzRmxvYXQoKSAmJiAhY29udmVy
dGVkQW5nbGVGb3JtYXQuaXNWZXJ0ZXhUeXBlSGFsZkZsb2F0KCk7CkBAIC0xMDAzLDE2ICsxMDMz
LDE2IEBAIGFuZ2xlOjpSZXN1bHQgVmVydGV4QXJyYXlNdGw6OmNvbnZlcnRWZXJ0ZXhCdWZmZXIo
Y29uc3QgZ2w6OkNvbnRleHQgKmdsQ29udGV4dCwKICAgICAgICAgQU5HTEVfVFJZKGNvbnZlcnRW
ZXJ0ZXhCdWZmZXJDUFUoY29udGV4dE10bCwgc3JjQnVmZmVyLCBiaW5kaW5nLCBhdHRyaWJJbmRl
eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydGVkRm9y
bWF0LCBzdHJpZGUsIG51bVZlcnRpY2VzLCBjb252ZXJzaW9uKSk7CiAgICAgfQotCisgICAgbUNv
bnZlcnRlZEFycmF5QnVmZmVySG9sZGVyc1thdHRyaWJJbmRleF0uc2V0KGNvbnZlcnNpb24tPmNv
bnZlcnRlZEJ1ZmZlcik7CisgICAgbUN1cnJlbnRBcnJheUJ1ZmZlck9mZnNldHNbYXR0cmliSW5k
ZXhdID0KKyAgICAgICAgY29udmVyc2lvbi0+Y29udmVydGVkT2Zmc2V0ICsKKyAgICAgICAgc3Ry
aWRlICogKChiaW5kaW5nLmdldE9mZnNldCgpIC0gKChWZXJ0ZXhDb252ZXJzaW9uQnVmZmVyTXRs
ICopY29udmVyc2lvbiktPm9mZnNldCkgLworICAgICAgICAgICAgICAgICAgYmluZGluZy5nZXRT
dHJpZGUoKSk7CisgICAgU2ltcGxlV2Vha0J1ZmZlckhvbGRlck10bCBjb252ZXJzaW9uQnVmZmVy
SG9sZGVyOwogICAgIG1DdXJyZW50QXJyYXlCdWZmZXJzW2F0dHJpYkluZGV4XSAgICAgICA9ICZt
Q29udmVydGVkQXJyYXlCdWZmZXJIb2xkZXJzW2F0dHJpYkluZGV4XTsKICAgICBtQ3VycmVudEFy
cmF5QnVmZmVyRm9ybWF0c1thdHRyaWJJbmRleF0gPSAmY29udmVydGVkRm9ybWF0OwogICAgIG1D
dXJyZW50QXJyYXlCdWZmZXJTdHJpZGVzW2F0dHJpYkluZGV4XSA9IHN0cmlkZTsKLQotICAgIC8v
IENhY2hlIHRoZSBsYXN0IGNvbnZlcnRlZCByZXN1bHRzIHRvIGJlIHJlLXVzZWQgbGF0ZXIgaWYg
dGhlIGJ1ZmZlcidzIGNvbnRlbnQgd29uJ3QgZXZlciBiZQotICAgIC8vIGNoYW5nZWQuCi0gICAg
Y29udmVyc2lvbi0+Y29udmVydGVkQnVmZmVyID0gbUNvbnZlcnRlZEFycmF5QnVmZmVySG9sZGVy
c1thdHRyaWJJbmRleF0uZ2V0Q3VycmVudEJ1ZmZlcigpOwotICAgIGNvbnZlcnNpb24tPmNvbnZl
cnRlZE9mZnNldCA9IG1DdXJyZW50QXJyYXlCdWZmZXJPZmZzZXRzW2F0dHJpYkluZGV4XTsKLQor
ICAgIAogICAgIEFTU0VSVChjb252ZXJzaW9uLT5kaXJ0eSk7CiAgICAgY29udmVyc2lvbi0+ZGly
dHkgPSBmYWxzZTsKIApAQCAtMTA0MCwxNCArMTA3MCwxNSBAQCBhbmdsZTo6UmVzdWx0IFZlcnRl
eEFycmF5TXRsOjpjb252ZXJ0VmVydGV4QnVmZmVyQ1BVKENvbnRleHRNdGwgKmNvbnRleHRNdGws
CiAKICAgICBjb25zdCB1aW50OF90ICpzcmNCeXRlcyA9IHNyY0J1ZmZlci0+Z2V0Q2xpZW50U2hh
ZG93Q29weURhdGEoY29udGV4dE10bCk7CiAgICAgQU5HTEVfQ0hFQ0tfR0xfQUxMT0MoY29udGV4
dE10bCwgc3JjQnl0ZXMpOwotCi0gICAgc3JjQnl0ZXMgKz0gYmluZGluZy5nZXRPZmZzZXQoKTsK
LQorICAgIC8vQ29weSB0aGUgbWluaW11bSBiZXR3ZWVuIHRoZSBiaW5kaW5nIG9mZnNldCBhbmQg
dGhlIGNvbnZlcnNpb24gb2Zmc2V0LgorICAgIFZlcnRleENvbnZlcnNpb25CdWZmZXJNdGwgKiB2
ZXJ0ZXhDb252ZXJzaW9uID0gKFZlcnRleENvbnZlcnNpb25CdWZmZXJNdGwgKiljb252ZXJzaW9u
OworICAgIHNyY0J5dGVzICs9IE1JTihiaW5kaW5nLmdldE9mZnNldCgpLCB2ZXJ0ZXhDb252ZXJz
aW9uLT5vZmZzZXQpOworICAgIFNpbXBsZVdlYWtCdWZmZXJIb2xkZXJNdGwgY29udmVyc2lvbkJ1
ZmZlckhvbGRlcjsKICAgICBBTkdMRV9UUlkoU3RyZWFtVmVydGV4RGF0YSgKICAgICAgICAgY29u
dGV4dE10bCwgJmNvbnZlcnNpb24tPmRhdGEsIHNyY0J5dGVzLCBudW1WZXJ0aWNlcyAqIHRhcmdl
dFN0cmlkZSwgMCwgbnVtVmVydGljZXMsCiAgICAgICAgIGJpbmRpbmcuZ2V0U3RyaWRlKCksIGNv
bnZlcnRlZEZvcm1hdC52ZXJ0ZXhMb2FkRnVuY3Rpb24sCi0gICAgICAgICZtQ29udmVydGVkQXJy
YXlCdWZmZXJIb2xkZXJzW2F0dHJpYkluZGV4XSwgJm1DdXJyZW50QXJyYXlCdWZmZXJPZmZzZXRz
W2F0dHJpYkluZGV4XSkpOwotCisgICAgICAgICZjb252ZXJzaW9uQnVmZmVySG9sZGVyLCAmY29u
dmVyc2lvbi0+Y29udmVydGVkT2Zmc2V0KSk7CisgICAgY29udmVyc2lvbi0+Y29udmVydGVkQnVm
ZmVyID0gY29udmVyc2lvbkJ1ZmZlckhvbGRlci5nZXRDdXJyZW50QnVmZmVyKCk7CiAgICAgcmV0
dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwogfQogCkBAIC0xMDczLDkgKzExMDQsOSBAQCBh
bmdsZTo6UmVzdWx0IFZlcnRleEFycmF5TXRsOjpjb252ZXJ0VmVydGV4QnVmZmVyR1BVKGNvbnN0
IGdsOjpDb250ZXh0ICpnbENvbnRleAogICAgIEFOR0xFX0NIRUNLX0dMX01BVEgoY29udGV4dE10
bCwgbnVtVmVydGljZXMgPD0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpKTsK
IAogICAgIG10bDo6VmVydGV4Rm9ybWF0Q29udmVydFBhcmFtcyBwYXJhbXM7Ci0KKyAgICBWZXJ0
ZXhDb252ZXJzaW9uQnVmZmVyTXRsICogdmVydGV4Q29udmVyc2lvbiA9IChWZXJ0ZXhDb252ZXJz
aW9uQnVmZmVyTXRsICopY29udmVyc2lvbjsKICAgICBwYXJhbXMuc3JjQnVmZmVyICAgICAgICAg
ICAgPSBzcmNCdWZmZXItPmdldEN1cnJlbnRCdWZmZXIoKTsKLSAgICBwYXJhbXMuc3JjQnVmZmVy
U3RhcnRPZmZzZXQgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYmluZGluZy5nZXRPZmZzZXQoKSk7
CisgICAgcGFyYW1zLnNyY0J1ZmZlclN0YXJ0T2Zmc2V0ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KE1JTih2ZXJ0ZXhDb252ZXJzaW9uLT5vZmZzZXQsYmluZGluZy5nZXRPZmZzZXQoKSkpOwogICAg
IHBhcmFtcy5zcmNTdHJpZGUgICAgICAgICAgICA9IGJpbmRpbmcuZ2V0U3RyaWRlKCk7CiAgICAg
cGFyYW1zLnNyY0RlZmF1bHRBbHBoYURhdGEgID0gY29udmVydGVkRm9ybWF0LmRlZmF1bHRBbHBo
YTsKIApAQCAtMTEyMCw5ICsxMTUxLDggQEAgYW5nbGU6OlJlc3VsdCBWZXJ0ZXhBcnJheU10bDo6
Y29udmVydFZlcnRleEJ1ZmZlckdQVShjb25zdCBnbDo6Q29udGV4dCAqZ2xDb250ZXgKIAogICAg
IEFOR0xFX1RSWShjb252ZXJzaW9uLT5kYXRhLmNvbW1pdChjb250ZXh0TXRsKSk7CiAKLSAgICBt
Q29udmVydGVkQXJyYXlCdWZmZXJIb2xkZXJzW2F0dHJpYkluZGV4XS5zZXQobmV3QnVmZmVyKTsK
LSAgICBtQ3VycmVudEFycmF5QnVmZmVyT2Zmc2V0c1thdHRyaWJJbmRleF0gPSBuZXdCdWZmZXJP
ZmZzZXQ7Ci0KKyAgICBjb252ZXJzaW9uLT5jb252ZXJ0ZWRCdWZmZXIgPSBuZXdCdWZmZXI7Cisg
ICAgY29udmVyc2lvbi0+Y29udmVydGVkT2Zmc2V0ID0gbmV3QnVmZmVyT2Zmc2V0OwogICAgIHJl
dHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKIH0KIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>