{"id":5578,"date":"2026-03-25T22:09:09","date_gmt":"2026-03-25T16:39:09","guid":{"rendered":"https:\/\/blog.spike.sh\/?p=5578"},"modified":"2026-04-03T21:02:05","modified_gmt":"2026-04-03T15:32:05","slug":"on-call-schedules-not-rotating-on-gap-based-schedules","status":"publish","type":"post","link":"https:\/\/blog.spike.sh\/on-call-schedules-not-rotating-on-gap-based-schedules\/","title":{"rendered":"On-call schedules not rotating on gap-based schedules"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">On March 25, 2026, a user reported that their on-call schedule was not rotating correctly. The person who had just finished their shift remained shown as on-call, even though the next shift hadn&#8217;t started yet and nobody was supposed to be on-call during that gap. We identified the root cause, deployed a fix, and on-call schedules now rotate correctly for all schedule types.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Summary<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Some teams configure on-call schedules with intentional gaps \u2014 for example, a schedule where someone is on-call only at night, with no coverage during the day. When one shift ended and the next shift hadn&#8217;t started yet, the outgoing person should have been marked off-call. Instead, they remained active.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The result: the previous on-call person kept receiving alerts during a period they weren&#8217;t supposed to be on-call, and the schedule appeared stuck.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Impact<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Customers with gap-based schedules were affected. The previous on-call person continued receiving alerts during periods when no one was supposed to be on-call, and the schedule appeared to not be rotating.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<style>\n.pm-timeline-wrap { max-width: 720px; margin: 0 auto; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; }\n.pm-tl-heading { font-size: 15px; font-weight: 600; color: #111; margin: 0 0 0.75rem; padding-bottom: 0.5rem; border-bottom: 1px solid #e5e5e5; }\n.pm-timeline { list-style: none; padding: 0; margin: 0; position: relative; }\n.pm-timeline::before { content: ''; position: absolute; left: 72px; top: 6px; bottom: 6px; width: 1px; background: #e5e5e5; }\n.pm-timeline li { display: flex; gap: 1.5rem; margin-bottom: 1.25rem; position: relative; }\n.pm-tl-time { font-size: 12px; font-weight: 600; color: #888; min-width: 60px; text-align: right; padding-top: 2px; font-variant-numeric: tabular-nums; }\n.pm-tl-dot { width: 8px; height: 8px; border-radius: 50%; background: #ccc; margin-top: 5px; flex-shrink: 0; position: relative; z-index: 1; }\n.pm-tl-dot.fix { background: #1D9E75; }\n.pm-tl-content { font-size: 14px; color: #555; line-height: 1.6; }\n.pm-tl-content strong { color: #111; font-weight: 600; }\n<\/style>\n\n<div class=\"pm-timeline-wrap\">\n  <p class=\"pm-tl-heading\">Timeline <span style=\"font-size:12px; font-weight:400; color:#888;\">UTC, March 25, 2026<\/span><\/p>\n  <ul class=\"pm-timeline\">\n    <li>\n      <span class=\"pm-tl-time\">12:25 PM<\/span>\n      <span class=\"pm-tl-dot\"><\/span>\n      <span class=\"pm-tl-content\">A user reports via live chat that their on-call schedule appears stuck, the same person is shown as on-call across a gap where no one should be on-call.<\/span>\n    <\/li>\n    <li>\n      <span class=\"pm-tl-time\">1:50 PM<\/span>\n      <span class=\"pm-tl-dot\"><\/span>\n      <span class=\"pm-tl-content\">Our team begins investigation into the on-call scheduling engine.<\/span>\n    <\/li>\n    <li>\n      <span class=\"pm-tl-time\">~2:15 PM<\/span>\n      <span class=\"pm-tl-dot\"><\/span>\n      <span class=\"pm-tl-content\"><b>Root cause identified:<\/b> a code change pushed two weeks prior introduced a condition that skipped ending the current shift if the same person was to be on-call next.<\/span>\n    <\/li>\n    <li>\n      <span class=\"pm-tl-time\">2:31 PM<\/span>\n      <span class=\"pm-tl-dot fix\"><\/span>\n      <span class=\"pm-tl-content\"><strong>Fix deployed.<\/strong> On-call schedules now rotate correctly, including for gap-based configurations.<\/span>\n    <\/li>\n  <\/ul>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Root cause<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Two weeks ago, we shipped a change to avoid sending redundant shift-end notifications when the same person&#8217;s shift was simply continuing. The intent was: if Person A&#8217;s shift ends and A is immediately starting the next shift, don&#8217;t notify them that they&#8217;ve gone off-call and back on-call.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The implementation checked whether the user was changing before ending the current shift. This worked correctly when transitioning between two different people but it had a blind spot: when a shift ends and\u00a0<strong>no new shift is starting<\/strong>\u00a0(i.e., a gap in the schedule), there&#8217;s no &#8220;next user&#8221; to compare against. The condition was never satisfied, so the shift was never ended.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n<div class=\"wp-block-code\">\n\t<div class=\"cm-editor\">\n\t\t<div class=\"cm-scroller\">\n\t\t\t\n<pre>\n<code class=\"language-javascript\"><div class=\"cm-line\"><span class=\"tok-keyword\">if<\/span> <span class=\"tok-punctuation\">(<\/span><span class=\"tok-variableName\">currentShiftToBeEnded<\/span><span class=\"tok-punctuation\">)<\/span> <span class=\"tok-punctuation\">{<\/span><\/div><div class=\"cm-line\">  <span class=\"tok-variableName\">userIsChanging<\/span> <span class=\"tok-operator\">=<\/span> <span class=\"tok-variableName\">currentUser<\/span> <span class=\"tok-operator\">!=<\/span> <span class=\"tok-variableName\">nextUser<\/span><\/div><div class=\"cm-line\">  <span class=\"tok-keyword\">if<\/span> <span class=\"tok-punctuation\">(<\/span><span class=\"tok-variableName\">userIsChanging<\/span><span class=\"tok-punctuation\">)<\/span> <span class=\"tok-punctuation\">{<\/span> <span class=\"tok-comment\">\/\/ &lt;-- root cause<\/span><\/div><div class=\"cm-line\">    <span class=\"tok-variableName\">endShift<\/span><span class=\"tok-punctuation\">(<\/span><span class=\"tok-variableName\">currentShiftToBeEnded<\/span><span class=\"tok-punctuation\">)<\/span><\/div><div class=\"cm-line\">  <span class=\"tok-punctuation\">}<\/span><\/div><div class=\"cm-line\"><span class=\"tok-punctuation\">}<\/span><\/div><\/code><\/pre>\n\t\t<\/div>\n\t<\/div>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">The fix: always end the current shift when it&#8217;s due to end, regardless of who (if anyone) is coming on next. Shift-end and shift-start are now treated as independent events.<\/p>\n\n\n<div class=\"wp-block-code\">\n\t<div class=\"cm-editor\">\n\t\t<div class=\"cm-scroller\">\n\t\t\t\n<pre>\n<code class=\"language-javascript\"><div class=\"cm-line\"><span class=\"tok-keyword\">if<\/span> <span class=\"tok-punctuation\">(<\/span><span class=\"tok-variableName\">currentShiftToBeEnded<\/span><span class=\"tok-punctuation\">)<\/span> <span class=\"tok-punctuation\">{<\/span><\/div><div class=\"cm-line\">    <span class=\"tok-variableName\">endShift<\/span><span class=\"tok-punctuation\">(<\/span><span class=\"tok-variableName\">currentShiftToBeEnded<\/span><span class=\"tok-punctuation\">)<\/span><\/div><div class=\"cm-line\"><span class=\"tok-punctuation\">}<\/span><\/div><\/code><\/pre>\n\t\t<\/div>\n\t<\/div>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Lessons learned<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Gap schedules weren&#8217;t covered enough in our test cases.<\/strong>\u00a0The change was tested against standard rotation scenariosbut not against schedules with intentional gaps i.e. A \u2192 <em>Gap<\/em> \u2192 A. We&#8217;re adding explicit test coverage for gap-based, night-only, and partial-day schedule types.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">On-call rotation test cases<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A \u2192 A <\/li>\n\n\n\n<li>A \u2192 B<\/li>\n\n\n\n<li>A \u2192 <em>gap<\/em> \u2192 B<\/li>\n\n\n\n<li>A \u2192 <em>gap<\/em> \u2192 A<\/li>\n\n\n\n<li>A \u2192 <em>end<\/em> later<\/li>\n\n\n\n<li><em>scheduled start<\/em> \u2192 <em>A<\/em><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Shift lifecycle events should be independent.<\/strong>\u00a0Ending a shift and starting a new one are two separate concerns. Coupling them \u2014 even with good intent \u2014 creates fragile logic. The on-call engine should treat each lifecycle event atomically.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">On-call schedules with gaps between shifts now rotate correctly. If you&#8217;re using a schedule where nobody is on-call during certain hours, your rotations will work as configured. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Thanks for reading. We continue on our mission to build a very flexible on-call for everyone \ud83d\ude42 <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>On March 25, 2026, a user reported that their on-call schedule was not rotating correctly. The person who had just finished their shift remained shown as on-call, even though the next shift hadn&#8217;t started yet and nobody was supposed to be on-call during that gap. We identified the root cause, deployed a fix, and on-call [&hellip;]<\/p>\n","protected":false},"author":263547071,"featured_media":5723,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_crdt_document":"{\"document\":\"AACpDIH5ppIexdy03hUAhKvyux2F3LTeFYSr8rsdhdy03hWEq\/K7HYXctN4VhKvyux2F3LTeFYSr8rsdhdy03hWEq\/K7HYXctN4VhKvyux248cqwGoSr8rsdhdy03hWEq\/K7HYXctN4VhKvyux2F3LTeFYHT0McahKvyux2B09DHGsSr8rsdAIXctN4VhKvyux248cqwGoHT0McahKvyux2B09DHGsSr8rsdAYHT0McahKvyux2B09DHGsSr8rsdAIXctN4VhKvyux2B09DHGoSr8rsdgdPQxxrEq\/K7HQCF3LTeFYSr8rsdhdy03hWEq\/K7HYXctN4VgdPQxxrEq\/K7HRCF3LTeFYHT0McaxKvyux0Axdy03hUBxKvyux0Axdy03hUAgdPQxxqB+aaSHoHT0Mcagfmmkh6B09DHGoH5ppIegdPQxxqB+aaSHoSr8rsdgfmmkh6B09DHGoH5ppIegdPQxxqB+aaSHoHT0Mcagfmmkh6B09DHGoH5ppIegdPQxxqB+aaSHoHT0Mcagfmmkh7Eq\/K7HQCm\/O6vHISr8rsdxdy03hU+wdPQxxoDpaCL9xWB09DHGqWgi\/cVgdPQxxqloIv3FYHT0McapaCL9xWB09DHGqWgi\/cVgdPQxxqloIv3FYHT0McapaCL9xXEq\/K7HQfB09DHGgLm\/O6vHADloIv3FQDm\/O6vHALB09DHGg3m\/O6vHBaB09DHGoSr8rsdpaCL9xXEq\/K7HWTB09DHGgCEq\/K7HYHT0McaxKvyux0A5aCL9xUGwdPQxxoDhKvyux3B09DHGgKEq\/K7HYHT0McahKvyux2B09DHGsSr8rsdAYHT0McahKvyux2B09DHGsSr8rsdAMHT0McaAISr8rsdgdPQxxrEq\/K7HQDB09DHGgHEq\/K7HQCB09DHGsSr8rsdBsHT0McaCoSr8rsdgdPQxxrEq\/K7HQzB09DHGgDEq\/K7HQ2B09DHGoSr8rsdwdPQxxoAxKvyux0AwdPQxxoAhKvyux2B09DHGoSr8rsdgdPQxxqEq\/K7HYHT0McahKvyux2B09DHGoSr8rsdgdPQxxqEq\/K7HcHT0McaA4Sr8rsdgdPQxxqEq\/K7HYHT0McahKvyux3B09DHGgDEq\/K7HQ2B09DHGsSr8rsdV4HT0McaxKvyux07pvzurxzEq\/K7HQem\/O6vHMSr8rsdB4HT0McaxKvyux0HgdPQxxrEq\/K7HQeB09DHGsSr8rsdB8HT0McaAMSr8rsdEeb87q8cBsHT0McaDISr8rsdgdPQxxqEq\/K7HYHT0McahKvyux2B09DHGoSr8rsdwdPQxxoAxKvyux0QgdPQxxrm\/O6vHADEq\/K7HQCm\/O6vHISr8rsd5vzurxzjB4HT0Mca5vzurxwEwdPQxxoF5vzurxwXwdPQxxoF5vzurxwCgdPQxxqm\/O6vHMHT0McaB6b87q8cwdPQxxoKpvzurxzB09DHGg2m\/O6vHMHT0McaBqb87q8cwdPQxxqLA+b87q8cAIHT0McapvzurxyB09DHGqb87q8cgdPQxxrm\/O6vHAOB09DHGqb87q8cgdPQxxqm\/O6vHIHT0Mca5vzurxwBgdPQxxqm\/O6vHIHT0Mca5vzurxwAwdPQxxpf5vzurxwBwdPQxxoBuPHKsBrm\/O6vHArB09DHGgGm\/O6vHMHT0McaKKWgi\/cVwdPQxxoBpaCL9xXB09DHGgDloIv3FQGB09DHGqWgi\/cVgdPQxxrloIv3FQGB09DHGuWgi\/cVAIHT0Mca5aCL9xUCwdPQxxoMpaCL9xWB09DHGqWgi\/cVgdPQxxqloIv3FcHT0McaCaWgi\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\/oDugP6A7oD+gO6A\/oDugP6A7oD+gO6A\/oDugP6A7oD+gO6A\/oDugP6A7oD+gO6A\/oDugP6A7oD+gO6A\/oDugP6A7oD+gO6A\/oDugP6A7oD+gO6A\/oDugP+BQCYAqQByAGkAeQBpAHkAaQB5AGkAeQBpAHkAaQB5AGkAeQBpAHkAaQB5AGkAeQBpAHkAaQB5AGkAdgEkhgBA7ywAwEBAwABAR4BAMBhpgv+7QIQFhwQtgmABPwqkgqSXCwUBIoCBioBAb4NtAEKgAWwAgCcDSwUBIoCBiquAbQBCrQDsALahwGCAQQsIAgYJBKUAQUADA4QFhw8AgQCBAIEAgQCBAIEAgQCBAIEAgQCBAIEAgQCBAIEAgQCBAIEAgQCBAKQBqgDEpQBiAECBAIEAgQCBAIEAgQCBAIEAgQCBAIEAgQCBALaMgMCCgKKMJC2AuiaAprCAuSMA77hA+6IA4oOrCOcGbwEuAq6DIQJxA4oAKgVxAGoA8QEqALEAagFxACoACgAqAAoAKgAKACoACgAqAAoAKgAKACoACgAqAAoAKgBxACoBCgAqAHECqgCIQChP8EIoQjBASgBoQHECKgAxAyhAMEAoQDBAKEAwQChAMEAoQDBAKEAwQChAMEAoQDBAKEAwQChAMEAoQDBAKEAwQChAMEAoQDBAKEAwQChAMEAoQDBAKEAxAChAMQAoQDEAKEAxAChAMQAoQDEAKEAxAChAMQAoQDEAKEAxAChAMQAoQDEAKEAxAChAMQAoQDEAKEAxAChAMQAqADEB8EJxADBAMQHwQLEBMEFxwAhACgAIQAnACEBJwAAAKEBIQEBAAAAgQAAAIEAAACBAAAAwQHEDAAAxwAhACgBJwEoACcABACBAKECAAChAMEAAAChAKgCRwAhACgBJwIEAMcAIQAoAScCBADHACEAKAEnAgQAhADEAIQAxwAhACgBJwIEAIQAxACEAEQAhADEAIQAxwAhACgBJwIEAIEAhACBAcEAgQGEAMEAxwAhACgBJwIBAIQAgQCEAEEAwQDECcEAxALBAMQBQQDEBMEAxADBAYQARAHEA6gAoQioAKEIqAChCKgAoQioAKEIxwAhACgBJwEoACcABACBAIQAgQHBAIEAhACBAIQAgQDEDoQAgQCEAIEAhAGBAIQAxAWoACgAqAChAqgAIQInAigGJwAoCiEBKAAhACgAJwAEAAcAIQAoACEAJwAhAScAAACBAAAAgQAAAMEAAADBAAAAwQAAAAQAhBSBAIQBgQCEAYEAhACBAIQAgQCEAIEAhACBAIQAgQCEAIEChACBAIQBgQaEAIEAhACBAIQAgQCEAIEAhACBAIQAgQCEAIEAhACBAIQAgQCEAIEAhAGBAIQCgQCEAYEAhA+BAIQVgQCEQIEAhBeBAIQRgQCEBoEAhAGBAIQDgQCEAIEAhAuhAagAoQAhAcEAAADBAAAAwQAAAMEAAADBAAAAwQAAAKEAAAChAsHaAaEKxAfBAsQAwQPEFagApwCoAKEAAQChAEQAxwAoACcCKAAhAQQAxwAoAScBKAAnACEABADHACEAKAEnAQQAKAAnAMcAKAAnAiEAKAAhAAQAxwAhACgBJwEoACcAAQCEAMEAAADBAAAAwQAAAMcAIQAoACEAJwAhAScAhACBAIQAgQCEAIEAhAGBAIQCgQCEAIEAhACBAIQAgQCEAIEAhAKBAIQAgQCEAIEAhACBAIQAgQCEAIEAhAOBAIQAgQCEAIEAhAGBAIQAgQCEAIEAhACBAIQAgQCEAoEAhACBAIQAgQCEAIEAhAGBAIQAgQCEAYEAhACBAIQAgQCEAIEBhAIhAIEAAAChAKgAoQDHACEAKAAhACcBIQAnAMQJoQLHACEAKAEnASgAJwDEAqECAQChAKgAIQCEAMcAIQAoAScBKAAnAKEABACBAIQAxwAhACgBJwEEAIEAhACBAIQAgQCEACgAJwDHACEAKAEnASgAJwDBAAAAxwAhACgAIQAnASEAJwABAKEAqAAhAigFoQCBD6EAqAGhAMEAoQDBAaEAwQGhAMEBoQDBAaEAwQChAMcAIQAoAScBKAAnAKEAwQGhAMEBoQDBAaEAwQGhAMEBoQDBAaEAwQGhAMEBoQDBAaEAwQGhAMEBoQDBAaEAwQGhAMEBoQDBAaEAwQGhAMEBoQDBAaEAwQGhAMEBoQDBAaEAwQGhAMEBoQDBAaEABADHACEAKAAhACcBIQAnAAEAoQCoACECKAWhAIEFoQDHACEAKAEnASgAJwCoAaECwQGhAMEBoQDBAaEAwQGhAMEBoQDBAaEAwQGhAMEBoQDBAaEAwQGhAMEBoQDBAaEAwQGhAMEBoQDBAAAAxwAhACgAIQAnASEAJwABAKEAqAAhAIQAxwAhACgBJwEoACcAoQAEAIEAhACBAIQAgQOEAIEAhAHHACEAKAEnAQQAgQCEACgAJwDHACEAKAAhACcBIQAnAAEAoQCoACEAhADHACEAKAEnASgAJwAEAIEAxwAhACgBJwEoACcAxADBAMQAwQLEAMEAxAHBAMQAhAGBAIQAgQCEAIEAhAGBAIQAgQCEAIEAhACBAIQAgQCEAIEAhACBAIQAgQCEAIEAhACBAIQAgQCEAIEAhAGBAIQAgQCEAIEAhACBAIQAgQCEAIEAhACBAIQAgQCEAIEAhACBAIQAgQCEAIEAhAGBAIQAgQCEAIEAhAKBAIQAgQSEB4EAhACBAIQAgQCEAIEAhAGBAIQCoQJEAMQAoQIhAKEAIQChACEAoQAhAKEAIQChACEAoQAhAKEAIQChACEAoQAhAKEAIQChACEAoQAhAKEAIQDBBKEAIQChACgAwQGhACEAoQAhAKEAIQChACEAoQAhAKEAIQChACEBoQiBAKEAgQChAIEAoQDBAKEAwQChAsQbqADEPqgAxBuhAMEUIQChAyEIoQUhCKEGIQihDSEIoQUhCKHyf8J5c3RhdGV2ZXJzaW9uJm5ic3A7Jm5ic3A7CgoKCgoKCiZuYnNwO29yaWdpbmFsQ29udGVudG9yaWdpbmFsQ29udGVudG9yaWdpbmFsQ29udGVudG9yaWdpbmFsQ29udGVudG9yaWdpbmFsQ29udGVudG9yaWdpbmFsQ29udGVudG9yaWdpbmFsQ29udGVudG9yaWdpbmFsQ29udGVudCZuYnNwO29yaWdpbmFsQ29udGVudMKgwqA8YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+wqDCoHN0YXRldmVyc2lvbl9pbXBvcnRfbWFya2Rvd25fcHJvX2xvYWRfZG9jdW1lbnRfc2VsZWN0b3JfaW1wb3J0X21hcmtkb3duX3Byb19zdWJtaXRfdGV4dF90ZXh0YXJlYSBjbGFzcz0id3AtYmxvY2staGVhZGluZyIgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIsKgwqAgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciwqDCoCBjbGFzcz0id3AtYmxvY2staGVhZGluZyJsaXZlIGNoYSxPdXI8Yj48L2I+aWYgdHNhbXBlcm9ubyBiZSBvbi1jbGwgZXh0ICZsdDstLSByb290IGNhdXNlLy8gIGNvdmVyZWQgIGVub3VnaCxbIklBPT0iIkx5OGdQQzB0SUhKdmIzUWdZMkYxYzJVPSIsInRvay1jb21tZW50Il1dLFsgLy8gJmx0Oy0tIHJvb3QgY2F1c2Vlbm91Z2ggIGludGVudGlvbmFsIGdhcHMgaS5lLiBBIOKGkiA8ZW0+RzwvZW0+YXAg4oaSIGllLkEg4oaSIDxlbT5HYXA8L2VtPiDihpIuICBBY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50ZHJvcENhcGlubmVyQmxvY2tzb3JkZXJlZHZhbHVlcyBBbGlzdCAtLT4KPHVsIGNsYXNzPSJ3LWJsb2NrLWxpc3QiPjwhLS0gd3A6bGlzdC1pdGVtIC0tPgo8bGk+QSDihpIgQSA8L2xpPgo8IS0tIC93cDpsaXN0LWl0ZW0gLS0+Cgo8IS0tIHdwOmxpc3QtaXRlbSAtLT4KPGxpPkEg4oaSIEI8L2xpPgo8IS0tIC93cDpsaXN0LWl0ZW0gLS0+Cgo8IS0tIHdwOmxpc3QtaXRlbSAtLT4KPGxpPkEg4oaSIDxlbT5ncDwvZW0+IOKGkiBCPC9saT4KPCEtLSAvd3A6bGlzdC1pdGVtIC0tPgoKPCEtLSB3cDpsaXN0LWl0ZW0gLS0+CjxsaT5BIOKGkiA8ZW0+Z2FwPC9lbT4g4oaSIEE8L2xpPgo8IS0tIC93cDpsaXN0LWl0ZW0gLS0+PC91bD4KPCEtLSAvd3A6bGlzdCAtLT4KCjwhLS0gd3A6cGFjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRkcm9wQ2FwaW5uZXJCbG9ja3NPbi1jYWxsIHJvdGF0aW9uIHRlc3QgY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50aW5uZXJCbG9ja3NBIOKGkiBBIGNsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudGlubmVyQmxvY2tzQSDihpIgQmNsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudGlubmVyQmxvY2tzQSDihpIgPGVtPmc8L2VtPmFwIOKGkiBCY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50aW5uZXJCbG9ja3M8ZW0+ZzxhcC9lbT5BIOKGkiAg4oaSIEFjYXNlc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudGlubmVyQmxvY2tzQSDihpIgPGVtPjwvZW0+Y2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50aW5uZXJCbG9ja3Mg4oaSIDxlbT48L2VtPkFwYXJhZ3JhcGggLS0+CjxwPk9uLWNhbCByb3RhdG9uIHRlY2FzZXM8L3A+CjwhIC93cDpwYXJhZ3JhcGggLS0KIS0tIHdwOmxpc3QgLS0+CjwKCiEtLSB3cDpsaXN0LWl0ZW0gLS0+CjxsaT5BIOKGkiA8ZW0+PGVtPjwvbGk+CjwhLS0gL3dwOmxpc3QtaXRlbSAtLT4KCjwhLS0gd3A6bGlzdC1pdGVtIC0tPgo8bGk+IOKGkiA8ZW0+QTwvZW0+PC9saT4KPCEtLSAvd3A6bGlzdC1pdGVtIC0tPjwvPC9lbT5lbmRzdGFydCBsYXRlcnNjaGVkdWxlZCA8ZW0+ZW5kIGxhdGVyPGVtPnNjaGVkdWxlZHN0YXJ0PC9lbT4gY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50ZHJvcENhcGlubmVyQmxvY2tzVGhhbmtzIGZvciByZWFkaW5nLiBXZSAyMjIyMjIyMjIyVGhhbmtzIGZvciByZWFkaW5nLiBXZSBhcmUgCgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+PC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Y29udGludWUgb24gb3VyIG1pc3Npb24gdG8gYnVpbGQgYSB2ZXJ5IGZsZXhpYmxlIG9uLWNhbGwgOikgIGZvciBldmVyeW9uZWNvbnRpbnVlIG9uIG91ciBtaXNzaW9uIHRvIGJ1aWxkICB2ZXkgZmx4aWJsZW9uLWNhbGwgZm9yIGV2ZXJ5b25lIDopIGRvY3VtZW50c2x1Z3N0YXRldmVyc2lvbmRvY3VtZW50ZGF0ZWRvY3VtZW50c3RhdHVzZG9jdW1lbnR0aXRsZWRvY3VtZW50Y29udGVudGRvY3VtZW50ZXhjZXJwdGRvY3VtZW50YXV0aG9yZG9jdW1lbnRmZWF0dXJlZF9tZWRpYWRvY3VtZW50Y29tbWVudF9zdGF0dXNkb2N1bWVudHBpbmdfc3RhdHVzZG9jdW1lbnRzdGlja3lkb2N1bWVudHRlbXBsYXRlZG9jdW1lbnRmb3JtYXRkb2N1bWVudG1ldGFfbG10X2Rpc2FibGV1cGRhdGVfbG10X2Rpc2FibGVqZXRwYWNrX3Bvc3Rfd2FzX2V2ZXJfcHVibGlzaGVkX2pldHBhY2tfbmV3c2xldHRlcl9hY2Nlc3NfamV0cGFja19kb250X2VtYWlsX3Bvc3RfdG9fc3Vic19qZXRwYWNrX25ld3NsZXR0ZXJfdGllcl9pZF9qZXRwYWNrX21lbWJlcnNoaXBzX2NvbnRhaW5zX3BheXdhbGxlZF9jb250ZW50X2pldHBhY2tfbWVtYmVyc2hpcHNfY29udGFpbnNfcGFpZF9jb250ZW50Zm9vdG5vdGVzamV0cGFja19wdWJsaWNpemVfbWVzc2FnZWpldHBhY2tfcHVibGljaXplX2ZlYXR1cmVfZW5hYmxlZGpldHBhY2tfc29jaWFsX3Bvc3RfYWxyZWFkeV9zaGFyZWRqZXRwYWNrX3NvY2lhbF9vcHRpb25zX3dwYXNfY3VzdG9taXplX3Blcl9uZXR3b3JrZG9jdW1lbnRjYXRlZ29yaWVzZG9jdW1lbnR0YWdzZG9jdW1lbnRibG9ja3NPbi1jYWxsIHNjaGVkdWxlcyBub3Qgcm90YXRpbmcgb24gZ2FwLWJhc2VkIHNjaGVkdWxlc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudGRyb3BDYXBpbm5lckJsb2NrczwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5PbiBNYXJjaCAyNSwgMjAyNiwgYSB1c2VyIHJlcG9ydGVkIHRoYXQgdGhlaXIgb24tY2FsbCBzY2hlZHVsZSB3YXMgbm90IHJvdGF0aW5nIGNvcnJlY3RseS4gVGhlIHBlcnNvbiB3aG8gaGFkIGp1c3QgZmluaXNoZWQgdGhlaXIgc2hpZnQgcmVtYWluZWQgc2hvd24gYXMgb24tY2FsbCwgZXZlbiB0aG91Z2ggdGhlIG5leHQgc2hpZnQgaGFkbid0IHN0YXJ0ZWQgeWV0IGFuZCBub2JvZHkgd2FzIHN1cHBvc2VkIHRvIGJlIG9uLWNhbGwgZHVyaW5nIHRoYXQgZ2FwLiBXZSBpZGVudGlmaWVkIHRoZSByb290IGNhdXNlLCBkZXBsb3llZCBhIGZpeCwgYW5kIG9uLWNhbGwgc2NoZWR1bGVzIG5vdyByb3RhdGUgY29ycmVjdGx5IGZvciBhbGwgc2NoZWR1bGUgdHlwZXMuPC9wPgogL3JhcC0+CgogZGkgLT4KPGg+U3VtbWFyeTwvaD4KICAgcGFwLT5Tb21lIHRlYW1zIGNvbmZpZ3VyZSBvbi1jYWxsIHNjaGVkdWxlcyB3aXRoIGludGVudGlvbmFsIGdhcHMg4oCUIGZvciBleGFtcGxlLCBhIHNjaGVkdWxlIHdoZXJlIHNvbWVvbmUgaXMgb24tY2FsbCBvbmx5IGF0IG5pZ2h0LCB3aXRoIG5vIGNvdmVyYWdlIGR1cmluZyB0aGUgZGF5LiBXaGVuIG9uZSBzaGlmdCBlbmRlZCBhbmQgdGhlIG5leHQgc2hpZnQgaGFkbid0IHN0YXJ0ZWQgeWV0LCB0aGUgb3V0Z29pbmcgcGVyc29uIHNob3VsZCBoYXZlIGJlZW4gbWFya2VkIG9mZi1jYWxsLiBJbnN0ZWFkLCB0aGV5IHJlbWFpbmVkIGFjdGl2ZS48L3A+CjwtLSB3cHBhcmFncmFwaCAtLT4KCjwtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPmhlIHJlc3VsdDogdGhlIHByZXZpb3VzIG9uLWNhbGwgcGVyc29uIGtlcHQgcmVjZWl2aW5nIGFsZXJ0cyBkdXJpbmcgYSBwZXJpZCB0aGV5IHdlcmVuJ3Qgc3VwcG9zZWQgdG8gYmUgb24tY2FsbCBhbmQgdGhlIHNjaGVkdWxlIGFlYXJlZCBzdHVjLjwvcD4KPC0tIC9wcGFyYWdyYXBoIC0tPnN0YXRlc2F2ZWRBdHN0YXRlc2F2ZWRCeTwhLS13cDpwYWdyYWggLTwhLS13cDpoZWFuZy08IS0tL3dwOmhlYWRpbmctLT4KCjwhLS13OnByYWdyYWggLQo8cD4hLzohVG8scHBrIXc6T24gTWFyY2ggMjUsIDIwMjYsIGEgdXNlciByZXBvcnRlZCB0aGF0IHRoZWlyIG9uLWNhbGwgc2NoZWR1bGUgd2FzIG5vdCByb3RhdGluZyBjb3JyZWN0bHkuIFRoZSBwZXJzb24gd2hvIGhhZCBqdXN0IGZpbmlzaGVkIHRoZWlyIHNoaWZ0IHJlbWFpbmVkIHNob3duIGFzIG9uLWNhbGwsIGV2ZW4gdGhvdWdoIHRoZSBuZXh0IHNoaWZ0IGhhZG4ndCBzdGFydGVkIHlldCBhbmQgbm9ib2R5IHdhcyBzdXBwb3NlZCB0byBiZSBvbi1jYWxsIGR1cmluZyB0aGF0IGdhcC4gV2UgaWRlbnRpZmllZCB0aGUgcm9vdCBjYXVzZSwgZGVwbG95ZWQgYSBmaXgsIGFuZCBvbi1jYWxsIHNjaGVkdWxlcyBub3cgcm90YXRlIGNvcnJlY3RseSBmb3IgYWxsIHNjaGVkdWxlIHR5cGVzLmlzVmFsaWRhdHRyaWJ1dGVzY29udGVudGlubmVyQmxvY2tzbmFtZWNsaWVudElkbGV2ZWxTdW1tYXJ5aXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudGRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkU29tZSB0ZWFtcyBjb25maWd1cmUgb24tY2FsbCBzY2hlZHVsZXMgd2l0aCBpbnRlbnRpb25hbCBnYXBzIOKAlCBmb3IgZXhhbXBsZSwgYSBzY2hlZHVsZSB3aGVyZSBzb21lb25lIGlzIG9uLWNhbGwgb25seSBhdCBuaWdodCwgd2l0aCBubyBjb3ZlcmFnZSBkdXJpbmcgdGhlIGRheS4gV2hlbiBvbmUgc2hpZnQgZW5kZWQgYW5kIHRoZSBuZXh0IHNoaWZ0IGhhZG4ndCBzdGFydGVkIHlldCwgdGhlIG91dGdvaW5nIHBlcnNvbiBzaG91bGQgaGF2ZSBiZWVuIG1hcmtlZCBvZmYtY2FsbC4gSW5zdGVhZCwgdGhleSByZW1haW5lZCBhY3RpdmUuY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50VGhlIHJlc3VsdDogdGhlIHByZXZpb3VzIG9uLWNhbGwgcGVyc29uIGtlcHQgcmVjZWl2aW5nIGFsZXJ0cyBkdXJpbmcgYSBwZXJpb2QgdGhleSB3ZXJlbid0IHN1cHBvc2VkIHRvIGJlIG9uLWNhbGwsIGFuZCB0aGUgc2NoZWR1bGUgYXBwZWFyZWQgc3R1Y2suZHJvcENhcGlubmVyQmxvY2tzaXNWYWxpZGF0dHJpYnV0ZXNjb250ZW50aW5uZXJCbG9ja3NjbGllbnRJZG5hbWVsZXZlbEltcGFjdGNsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudGRyb3BDYXBpbm5lckJsb2Nrc3VzdG9tZXJzIHdpdGggZ2FwLWJhc2VkIHNjaGVkdWxlcyB3ZXJlIGFmZmVjdGVkLiBUaGUgcHJldmlvdXMgb24tY2FsbCBwZXJzb24gY29udGludWVkIHJlY2VpdmluZyBhbGVydHMgZHVyaW5nIHBlcmlvZHMgd2hlbiBubyBvbmUgd2FzIHN1cHBvc2VkIHRvIGJlIG9uLWNhbGwsIGFuZCB0aGUgc2NoZWR1bGUgYXBwZWFyZWQgdG8gbm90IGJlIHJvdGF0aW5nLmNsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudGRyb3BDYXBpbm5lckJsb2NrcwoKPCEtLSB3cDpoZWFkaW5nIC0tPgo8aD5JbXBhY3Q8L2g+CjwhLS0gL3dwOmhlYWRpbmcgLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+dXN0b21lcnMgd2l0aCBnYXAtYmFzZWQgc2NoZWR1bGVzIHdlcmUgYWZmZWN0ZWQuIFRoZSBwcmV2aW91cyBvbi1jYWxsIHBlcnNvbiBjb250aW51ZWQgcmVjZWl2aW5nIGFsZXJ0cyBkdXJpbmcgcGVyaW9kcyB3aGVuIG5vIG9uZSB3YXMgc3VwcG9zZWQgdG8gYmUgb24tY2FsbCwgYW5kIHRoZSBzY2hlZHVsZSBhcHBlYXJlZCB0byBub3QgYmUgcm90YXRpbmcuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOmh0bWwgLS0+CjxzdHlsZT4KLnBtLXRpbWVsaW5lLXdyYXAgeyBtYXgtd2lkdGg6IDcyMHB4OyBtYXJnaW46IDAgYXV0bzsgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgc2Fucy1zZXJpZjsgfQoucG0tdGxlIHsgZm9udC1zaXplOiA7IGZvbnQtd2VpZ2h0OiA2MDA7IGNvbG9yOiAjMTExOyBtYXJnaW46IDAgMCAwLjc1cmVtOyBwYWRkaW5nLWJvdHRvbTogMC41cmVtOyBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2U1ZTVlNTsgfQoucG0tdGltZWxpbmUgeyBsaXN0LXN0eWxlOiBub25lOyBwYWRkaW5nOiAwOyBtYXJnaW46IDA7IHBvc2l0aW9uOiByZWxhdGl2ZTsgfQoucG0tdGltZWxpbmU6OmJlZm9yZSB7IGNvbnRlbnQ6ICcnOyBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDcycHg7IHRvcDogNnB4OyBib3R0b206IDZweDsgd2lkdGg6IDFweDsgYmFja2dyb3VuZDogI2U1ZTVlNTsgfQoucG0tdGltZWxpbmUgbGkgeyBkaXNwbGF5OiBmbGV4OyBnYXA6IDEuNXJlbTsgbWFyZ2luLWJvdHRvbTogMS4yNXJlbTsgcG9zaXRpb246IHJlbGF0aXZlOyB9Ci5wbS10bC10aW1lIHsgZm9udC1zaXplOiA7IGZvbnQtd2VpZ2h0OiA2MDA7IGNvbG9yOiAjODg4OyBtaW4td2lkdGg6IDYwcHg7IHRleHQtYWxpZ246IHJpZ2h0OyBwYWRkaW5nLXRvcDogMnB4OyBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zOyB9Ci5wbS10bC1kb3QgeyB3aWR0aDogOHB4OyBoZWlnaHQ6IDhweDsgYm9yZGVyLXJhZGl1czogNTAlOyBiYWNrZ3JvdW5kOiAjY2NjOyBtYXJnaW4tdG9wOiA1cHg7IGZsZXgtc2hyaW5rOiAwOyBwb3NpdGlvbjogcmVsYXRpdmU7IHotaW5kZXg6IDE7IH0KLnBtLXRsLWRvdC5maXggeyBiYWNrZ3JvdW5kOiAjMUQ5RTc1OyB9Ci5wbS10bC1jb250ZW50IHsgZm9udC1zaXplOiA7IGNvbG9yOiAjNTU1OyBsaW5lLWhlaWdodDogMS42OyB9Ci5wbS10bC1jb250ZW50IHN0cm9uZyB7IGNvbG9yOiAjMTExOyBmb250LXdlaWdodDogNjAwOyB9Cjwvc3R5bGU+Cgo8ZGl2IGNsYXNzPSJwbS10aW1lbGluZS13cmFwIj4KICA8IGNsYXNzPSJwbS10bGUiPlRpbWVsaW5lIDxzcGFuIHN0eWxlPSJmb250LXdlaWdodDo0MDA7IGNvbG9yOiM4ODg7Ij5VVEMsIE1hcmNoIDI1LCAyMDI2PC9zcGFuPjwvPgogIDx1bCBjbGFzcz0icG0tdGltZWxpbmUiPgogICAgPGxpPgogICAgICA8c3BhbiBjbGFzcz0icG0tdGwtdGltZSI+MTI6MjUgUE08L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJwbS10bC1kb3QiPjwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9InBtLXRsLWNvbnRlbnQiPkEgdXNlciByZXBvcnRzIHZpYSB0IHRoYXQgdGhlaXIgb24tY2FsbCBzY2hlZHVsZSBhcHBlYXJzIHN0dWNrIHRoZSBzYW1lIHBlcnNvbiBpcyBzaG93biBhcyBvbi1jYWxsIGFjcm9zcyBhIGdhcCB3aGVyZSBubyBvbmUgc2hvdWxkIGJlIG9uLWNhbGwuPC9zcGFuPgogICAgPC9saT4KICAgIDxsaT4KICAgICAgPHNwYW4gY2xhc3M9InBtLXRsLXRpbWUiPjE6NTAgUE08L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJwbS10bC1kb3QiPjwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9InBtLXRsLWNvbnRlbnQiPiB0ZWFtIGJlZ2lucyBpbnZlc3RpZ2F0aW9uIGludG8gdGhlIG9uLWNhbGwgc2NoZWR1bGluZyBlbmdpbmUuPC9zcGFuPgogICAgPC9saT4KICAgIDxsaT4KICAgICAgPHNwYW4gY2xhc3M9InBtLXRsLXRpbWUiPn4yOjE1IFBNPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0icG0tdGwtZG90Ij48L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJwbS10bC1jb250ZW50Ij5Sb290IGNhdXNlIGlkZW50aWZpZWQ6IGEgY29kZSBjaGFuZ2UgcHVzaGVkIHR3byB3ZWVrcyBwcmlvciBpbnRyb2R1Y2VkIGEgY29uZGl0aW9uIHRoYXQgc2tpcHBlZCBlbmRpbmcgdGhlIGN1cnJlbnQgc2hpZnQgaGUgZSBzIHdhcyB0YW4uPC9zcGFuPgogICAgPC9saT4KICAgIDxsaT4KICAgICAgPHNwYW4gY2xhc3M9InBtLXRsLXRpbWUiPjI6MzEgUE08L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJwbS10bC1kb3QgZml4Ij48L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJwbS10bC1jb250ZW50Ij48c3Ryb25nPkZpeCBkZXBsb3llZC48L3N0cm9uZz4gT24tY2FsbCBzY2hlZHVsZXMgbm93IHJvdGF0ZSBjb3JyZWN0bHksIGluY2x1ZGluZyBmb3IgZ2FwLWJhc2VkIGNvbmZpZ3VyYXRpb25zLjwvc3Bhbj4KICAgIDwvbGk+CiAgPC91bD4KPC9kaXY+CjwhLS0gL3dwOmh0bWwgLS0+Cgo8IS0tIHdwOnJhZ3JhcGggLS0+CjxwPjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPnN0YXRldmVyc2lvbmNsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudGRyb3BDYXBpbm5lckJsb2Nrcy1oYWRpbmcxNXB4MTJweDE0cHhwLWhhZGluZ3NpemU6MTJweDsgZm9udC1wY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50ZHJvcENhcGlubmVyQmxvY2tzcGFyYWdyYXAgLS0+CjxwPjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpobGV2ZWxSb290IGNhdXNlY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50ZHJvcENhcGlubmVyQmxvY2tzVHdvIHdlZWtzIGFnbywgd2Ugc2hpcHBlZCBhIGNoYW5nZSB0byBhdm9pZCBzZW5kaW5nIHJlZHVuZGFudCBzaGlmdC1lbmQgbm90aWZpY2F0aW9ucyB3aGVuIHRoZSBzYW1lIHBlcnNvbidzIHNoaWZ0IHdhcyBzaW1wbHkgY29udGludWluZy4gVGhlIGludGVudCB3YXM6IGlmIFBlcnNvbiBBJ3Mgc2hpZnQgZW5kcyBhbmQgQSBpcyBpbW1lZGlhdGVseSBzdGFydGluZyB0aGUgbmV4dCBzaGlmdCwgZG9uJ3Qgbm90aWZ5IHRoZW0gdGhhdCB0aGV5J3ZlIGdvbmUgb2ZmLWNhbGwgYW5kIGJhY2sgb24tY2FsbC5jbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRUaGUgaW1wbGVtZW50YXRpb24gY2hlY2tlZCB3aGV0aGVyIHRoZSB1c2VyIHdhcyBjaGFuZ2luZyBiZWZvcmUgZW5kaW5nIHRoZSBjdXJyZW50IHNoaWZ0LiBUaGlzIHdvcmtlZCBjb3JyZWN0bHkgd2hlbiB0cmFuc2l0aW9uaW5nIGJldHdlZW4gdHdvIGRpZmZlcmVudCBwZW9wbGUgYnV0IGl0IGhhZCBhIGJsaW5kIHNwb3Q6IHdoZW4gYSBzaGlmdCBlbmRzIGFuZDxzdHJvbmc+bm8gbmV3IHNoaWZ0IGlzIHN0YXJ0aW5nPC9zdHJvbmc+KGkuZS4sIGEgZ2FwIGluIHRoZSBzY2hlZHVsZSksIHRoZXJlJ3Mgbm8gIm5leHQgdXNlciIgdG8gY29tcGFyZSBhZ2FpbnN0LiBUaGUgY29uZGl0aW9uIHdhcyBuZXZlciBzYXRpc2ZpZWQsIHNvIHRoZSBzaGlmdCB3YXMgbmV2ZXIgZW5kZWQuZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50ZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50ZHJvcENhcGlubmVyQmxvY2tzdG9rZW5pemVkTGluZXNsYW5ndWFnZWxhbmd1YWdlQ29uZmlkZW5jZXRyaWdnZXJDb2RlVXBkYXRlc2hvd0NvcHlCdXR0b25zaG93TGFuZ3VhZ2VOYW1lc2hvd0xpbmVOdW1iZXJzbGluZU51bWJlcnNTdGFydEF0ZmlsZW5hbWVjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRkcm9wQ2FwaW5uZXJCbG9ja3NUaGUgZml4OiBhbHdheXMgZW5kIHRoZSBjdXJyZW50IHNoaWZ0IHdoZW4gaXQncyBkdWUgdG8gZW5kLCByZWdhcmRsZXNzIG9mIHdobyAoaWYgYW55b25lKSBpcyBjb21pbmcgb24gbmV4dC4gU2hpZnQtZW5kIGFuZCBzaGlmdC1zdGFydCBhcmUgbm93IHRyZWF0ZWQgYXMgaW5kZXBlbmRlbnQgZXZlbnRzLmNsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudGRyb3BDYXBpbm5lckJsb2Nrc3Rva2VuaXplZExpbmVzbGFuZ3VhZ2VsYW5ndWFnZUNvbmZpZGVuY2V0cmlnZ2VyQ29kZVVwZGF0ZXNob3dDb3B5QnV0dG9uc2hvd0xhbmd1YWdlTmFtZXNob3dMaW5lTnVtYmVyc2xpbmVOdW1iZXJzU3RhcnRBdGZpbGVuYW1lY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50ZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50ZHJvcENhcGlubmVyQmxvY2tzbGV2ZWxMZXNzb25zIGxlYXJuZWRjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRkcm9wQ2FwaW5uZXJCbG9ja3M8c3Ryb25nPkdhcCBzY2hlZHVsZXMgd2VyZW4ndGluIG91ciB0ZXN0IGNhc2VzLjwvc3Ryb25nPlRoZSBjaGFuZ2Ugd2FzIHRlc3RlZCBhZ2FpbnN0IHN0YW5kYXJkIHJvdGF0aW9uIHNjZW5hcmlvc2J1dCBub3QgYWdhaW5zdCBzY2hlZHVsZXMgd2l0aC4gV2UncmUgYWRkaW5nIGV4cGxpY2l0IHRlc3QgY292ZXJhZ2UgZm9yIGdhcC1iYXNlZCwgbmlnaHQtb25seSwgYW5kIHBhcnRpYWwtZGF5IHNjaGVkdWxlIHR5cGVzLmNsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudDxzdHJvbmc+U2hpZnQgbGlmZWN5Y2xlIGV2ZW50cyBzaG91bGQgYmUgaW5kZXBlbmRlbnQuPC9zdHJvbmc+RW5kaW5nIGEgc2hpZnQgYW5kIHN0YXJ0aW5nIGEgbmV3IG9uZSBhcmUgdHdvIHNlcGFyYXRlIGNvbmNlcm5zLiBDb3VwbGluZyB0aGVtIOKAlCBldmVuIHdpdGggZ29vZCBpbnRlbnQg4oCUIGNyZWF0ZXMgZnJhZ2lsZSBsb2dpYy4gVGhlIG9uLWNhbGwgZW5naW5lIHNob3VsZCB0cmVhdCBlYWNoIGxpZmVjeWNsZSBldmVudCBhdG9taWNhbGx5LmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudGRyb3BDYXBpbm5lckJsb2Nrc2xldmVsQ29uY2x1c2lvbmNsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudGRyb3BDYXBpbm5lckJsb2Nrc09uLWNhbGwgc2NoZWR1bGVzIHdpdGggZ2FwcyBiZXR3ZWVuIHNoaWZ0cyBub3cgcm90YXRlIGNvcnJlY3RseS4gSWYgeW91J3JlIHVzaW5nIGEgc2NoZWR1bGUgd2hlcmUgbm9ib2R5IGlzIG9uLWNhbGwgZHVyaW5nIGNlcnRhaW4gaG91cnMsIHlvdXIgcm90YXRpb25zIHdpbGwgd29yayBhcyBjb25maWd1cmVkLiBjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRkcm9wQ2FwaW5uZXJCbG9ja3NoZWFkaW5nIC0tPgo8aD5Sb290IGNhdXNlPC9oPgo8IS0tIC93cDpoZWFkaW5nIC0tPgoKPCEtLSB3cDpwYVR3byB3ZWVrcyBhZ28sIHdlIHNoaXBwZWQgYSBjaGFuZ2UgdG8gYXZvaWQgc2VuZGluZyByZWR1bmRhbnQgc2hpZnQtZW5kIG5vdGlmaWNhdGlvbnMgd2hlbiB0aGUgc2FtZSBwZXJzb24ncyBzaGlmdCB3YXMgc2ltcGx5IGNvbnRpbnVpbmcuIFRoZSBpbnRlbnQgd2FzOiBpZiBQZXJzb24gQSdzIHNoaWZ0IGVuZHMgYW5kIEEgaXMgaW1tZWRpYXRlbHkgc3RhcnRpbmcgdGhlIG5leHQgc2hpZnQsIGRvbid0IG5vdGlmeSB0aGVtIHRoYXQgdGhleSd2ZSBnb25lIG9mZi1jYWxsIGFuZCBiYWNrIG9uLWNhbGwuCgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+VGhlIGltcGxlbWVudGF0aW9uIGNoZWNrZWQgd2hldGhlciB0aGUgdXNlciB3YXMgY2hhbmdpbmcgYmVmb3JlIGVuZGluZyB0aGUgY3VycmVudCBzaGlmdC4gVGhpcyB3b3JrZWQgY29ycmVjdGx5IHdoZW4gdHJhbnNpdGlvbmluZyBiZXR3ZWVuIHR3byBkaWZmZXJlbnQgcGVvcGxlIGJ1dCBpdCBoYWQgYSBibGluZCBzcG90OiB3aGVuIGEgc2hpZnQgZW5kcyBhbmQ8c3Ryb25nPm5vIG5ldyBzaGlmdCBpcyBzdGFydGluZzwvc3Ryb25nPihpLmUuLCBhIGdhcCBpbiB0aGUgc2NoZWR1bGUpLCB0aGVyZSdzIG5vICJuZXh0IHVzZXIiIHRvIGNvbXBhcmUgYWdhaW5zdC4gVGhlIGNvbmRpdGlvbiB3YXMgbmV2ZXIgc2F0aXNmaWVkLCBzbyB0aGUgc2hpZnQgd2FzIG5ldmVyIGVuZGVkLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpjb2RlIHsidG9rZW5pemVkTGluZXMiOltbXV0sImxhbmd1YWdlIjoiSmF2YVNjcmlwdCIsImxhbmd1YWdlQ29uZmlkZW5jZSI6ImNlcnRhaW4ifSAtLT4KPHByZSBjbGFzcz0id3AtYmxvY2stY29kZSI+PGNvZGU+PC9jb2RlPjwvcHJlPgo8IS0tIC93cDpjb2RlIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPlRoZSBmaXg6IGFsd2F5cyBlbmQgdGhlIGN1cnJlbnQgc2hpZnQgd2hlbiBpdCdzIGR1ZSB0byBlbmQsIHJlZ2FyZGxlc3Mgb2Ygd2hvIChpZiBhbnlvbmUpIGlzIGNvbWluZyBvbiBuZXh0LiBTaGlmdC1lbmQgYW5kIHNoaWZ0LXN0YXJ0IGFyZSBub3cgdHJlYXRlZCBhcyBpbmRlcGVuZGVudCBldmVudHMuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOmNvZGUgeyJ0b2tlbml6ZWRMaW5lcyI6W1tdXSwibGFuZ3VhZ2UiOiJKYXZhU2NyaXB0IiwibGFuZ3VhZ2VDb25maWRlbmNlIjoiY2VydGFpbiJ9IC0tPgo8cHJlIGNsYXNzPSJ3cC1ibG9jay1jb2RlIj48Y29kZT48L2NvZGU+PC9wcmU+CjwhLS0gL3dwOmNvZGUgLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+PC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOmhlYWRpbmcgLS0+CjxoPkxlc3NvbnMgbGVhcm5lZDwvaD4KPCEtLSAvd3A6aGVhZGluZyAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD48c3Ryb25nPkdhcCBzY2hlZHVsZXMgd2VyZW4ndCBjb3ZlcmVkIGluIG91ciB0ZXN0IGNhc2VzLjwvc3Ryb25nPlRoZSBjaGFuZ2Ugd2FzIHRlc3RlZCBhZ2FpbnN0IHN0YW5kYXJkIHJvdGF0aW9uIHNjZW5hcmlvc2J1dCBub3QgYWdhaW5zdCBzY2hlZHVsZXMgd2l0aCBpbnRlbnRpb25hbCBnYXBzLiBXZSdyZSBhZGRpbmcgZXhwbGljaXQgdGVzdCBjb3ZlcmFnZSBmb3IgZ2FwLWJhc2VkLCBuaWdodC1vbmx5LCBhbmQgcGFydGlhbC1kYXkgc2NoZWR1bGUgdHlwZXMuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+PHN0cm9uZz5TaGlmdCBsaWZlY3ljbGUgZXZlbnRzIHNob3VsZCBiZSBpbmRlcGVuZGVudC48L3N0cm9uZz5FbmRpbmcgYSBzaGlmdCBhbmQgc3RhcnRpbmcgYSBuZXcgb25lIGFyZSB0d28gc2VwYXJhdGUgY29uY2VybnMuIENvdXBsaW5nIHRoZW0g4oCUIGV2ZW4gd2l0aCBnb29kIGludGVudCDigJQgY3JlYXRlcyBmcmFnaWxlIGxvZ2ljLiBUaGUgb24tY2FsbCBlbmdpbmUgc2hvdWxkIHRyZWF0IGVhY2ggbGlmZWN5Y2xlIGV2ZW50IGF0b21pY2FsbHkuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOmhlYWRpbmcgLS0+CjxoPkNvbmNsdXNpb248L2g+CjwhLS0gL3dwOmhlYWRpbmcgLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+T24tY2FsbCBzY2hlZHVsZXMgd2l0aCBnYXBzIGJldHdlZW4gc2hpZnRzIG5vdyByb3RhdGUgY29ycmVjdGx5LiBJZiB5b3UncmUgdXNpbmcgYSBzY2hlZHVsZSB3aGVyZSBub2JvZHkgaXMgb24tY2FsbCBkdXJpbmcgY2VydGFpbiBob3VycywgeW91ciByb3RhdGlvbnMgd2lsbCB3b3JrIGFzIGNvbmZpZ3VyZWQuIDwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPkNDc3RhdGV2ZXJzaW9ub3JpZ2luYWxDb250ZW50b3JpZ2luYWxDb250ZW50b3JpZ2luYWxDb250ZW50b3JpZ2luYWxDb250ZW50b3JpZ2luYWxDb250ZW50b3JpZ2luYWxDb250ZW50b3JpZ2luYWxDb250ZW50b3JpZ2luYWxDb250ZW50b3JpZ2luYWxDb250ZW50b3JpZ2luYWxDb250ZW50b3JpZ2luYWxDb250ZW50b3JpZ2luYWxDb250ZW50b3JpZ2luYWxDb250ZW50b3JpZ2luYWxDb250ZW50b3JpZ2luYWxDb250ZW50b3JpZ2luYWxDb250ZW50b3JpZ2luYWxDb250ZW50b3JpZ2luYWxDb250ZW50b3JpZ2luYWxDb250ZW50b3JpZ2luYWxDb250ZW50b3JpZ2luYWxDb250ZW50b3JpZ2luYWxDb250ZW50c3RhdGV2ZXJzaW9uWyJhV1k9IiwidG9rLWtleXdvcmQiLFsiSUE9PSJbS0E9PSIsInRvay1wdW5jdHVhdGlvbiJdLFsiWTNWeWNtVnVkRk5vYVdaMFZHOUNaVVZ1WkdWayIsInRvay12YXJpYWJlTm1lIl0sWyJLUT09IiwidG9rLXB1Y3R1YXRpb24iXSxbIklBPT0iXSxbImV3PT0iLCJ0b2stcHVuY3R1YXRpb24iXV0sW1siSUNBPSJdLFsiZFhObGNrbHpRMmhoYm1kcGJtYz0iLCJ0b2stdmFyaWFibGVOYW1lIl0sWyJJQT09Il0sWyJQUT09IiwidG9rLW9wZXJhdG9yIl0sWyJJQT09Il0sWyJZM1Z5Y21WdWRGVnpaWEk9IiwidG9rLXZhcmlhYmxlTmFtZSJdLFsiSUE9PSJdLFsiSVQwPSIsInRvay1vcGVyYXRvciJdLFsiSUE9PSJdLFsiYm1WNGRGVnpaWEk9IiwidG9rLXZhcmlhYmxlTmFtZSJdXSxbWyJJQ0E9Il0sWyJhV1k9IiwidG9rLWtleXdvcmQiXSxbIklBPT0iXSxbIktBPT0iLCJ0b2stcHVuY3R1YXRpb24iXSxbImRYTmxja2x6UTJoaGJtZHBibWM9IiwidG9rLXZhcmlhYmxlTmFtZSJdLFsiS1E9PSIsInRvay1wdW5jdHVhdGlvbiJdLFsiSUE9PSJdLFsiZXc9PSIsInRvay1wdW5jdHVhdGlvbiJdXSxbWyJJQ0FJQT09Il0sWyJaVzVrVTJocFpuUT0iLCJ0b2stdmFyaWFibGVOYW1lIl0sWyJLQT09IiwidG9rLXBuY3R1dGlvbiJdLFsiWTNWeWNtVnVkRk5vYVdaMFZHOUNaVVZ1WkdWayIsInRvay12YXJpYWJsZU5hbWUiXSxbIktRPT0iLCJ0b2stcHVuY3R1YXRpb24iXV0sW1siSUNBPSJdLFsiZlE9PSIsInRvay1wdW5jdHVhdGlvbiJdXSxbWyJmUT09IiwidG9rLXB1bmN0dWF0aW9uIl1dXSwibGFudWFnaWYgKGN1cnJlbnRTaGlmdFRvQmVFbmRlZCkgewogIHVzZXJJc0NoYW5naW5nID0gY3VycmVudFVzZXIgIT0gbmV4dFVzZXIKICBpZiAodXNlcklzQ2hhbmdpbmcpIHsKICAgIGVuZFNoaWZ0KGN1cnJlbnRTaGlmdFRvQmVFbmRlZCkKICB9Cn1bImFXWT0iLCJ0b2sta2V5d29yZCIsWyJJQT09IltLQT09IiwidG9rLXB1bmN0dWF0aW9uIl0sWyJZM1Z5Y21WdWRGTm9hV1owVkc5Q1pVVnVaR1ZrIiwidG9rLXZhcmlhYmVObWUiXSxbIktRPT0iLCJ0b2stcHVjdHVhdGlvbiJdLFsiSUE9PSJdLFsiZXc9PSIsInRvay1wdW5jdHVhdGlvbiJdXSxbWyJJQ0FJQT09Il0sWyJaVzVrVTJocFpuUT0iLCJ0b2stdmFyaWFibGVOYW1lIl0sWyJLQT09IiwidG9rLXBuY3R1dGlvbiJdLFsiWTNWeWNtVnVkRk5vYVdaMFZHOUNaVVZ1WkdWayIsInRvay12YXJpYWJsZU5hbWUiXSxbIktRPT0iLCJ0b2stcHVuY3R1YXRpb24iXV0sW1siZlE9PSIsInRvay1wdW5jdHVhdGlvbiJdXV0sImxhbnVhZ2lmIChjdXJyZW50U2hpZnRUb0JlRW5kZWQpIHsKICAgIGVuZFNoaWZ0KGN1cnJlbnRTaGlmdFRvQmVFbmRlZCkKfWlmICgpeyA9IGN1cnJlbnRVc2VyICE9IG5leHRVc2VyaWYgKCkge2VuZFNoaWZ0KCl9fSAgICAgICAgICAgY2N1dXJycnJlZW5udHRTU2hoaWlmZnR0VFRvb0JCZWVFRW5uZGRlZWRkaWYgKGN1cnJlbnRTaGlmdFRvQmVFbmRlZCkgeyAgICBlbmRTaGlmdChjdXJyZW50U2hpZnRUb0JlRW5kZWQpfXV1c3NlZXJySUlzc0NDaGhhYW5uZ2dpaW5uZ2dzdGF0ZXZlcnNpb25wbGFjZWhvbGRlcmJhY2tncm91bmRDb2xvcnRleHRDb2xvcmdyYWRpZW50YWxpZ25hbmNob3JjbGFzc05hbWVmb250RmFtaWx5Zm9udFNpemVwbGFjZWhvbGRlcmJhY2tncm91bmRDb2xvcnRleHRDb2xvcmdyYWRpZW50YWxpZ25hbmNob3JjbGFzc05hbWVmb250RmFtaWx5Zm9udFNpemVwbGFjZWhvbGRlcmJhY2tncm91bmRDb2xvcnRleHRDb2xvcmdyYWRpZW50YWxpZ25hbmNob3JjbGFzc05hbWVmb250RmFtaWx5Zm9udFNpemVwbGFjZWhvbGRlcmJhY2tncm91bmRDb2xvcnRleHRDb2xvcmdyYWRpZW50YWxpZ25hbmNob3JjbGFzc05hbWVmb250RmFtaWx5Zm9udFNpemVwbGFjZWhvbGRlcmJhY2tncm91bmRDb2xvcnRleHRDb2xvcmdyYWRpZW50YWxpZ25hbmNob3JjbGFzc05hbWVmb250RmFtaWx5Zm9udFNpemUFB0YAQQUGTwYGD0EARAVBAAUHKylZAUEAGUEAGQgBQwBEAEMAAglDAAEEQQ4JAQYIKwEVBwESQQEKBUICEkIACAcECkcACwcGAkEAA0IAAQurArIBQQAhCAcECkcACxYIBwQKBwsGCAcECgcLBQgHBAoHCwkFAgQIBwQKBwsFAQJEAQEECAcECgcLRAAFCAcECgcLBwUBFgcFDBEBEQIhAQM4ASoFAQIBAwEGCgQDBg0LCAcECkcACwEGBwlBCBdBAjYjFQEDDSEDBAUYCAQFBwgECAYIBQgHCAcIBggOCA4ICwgGSAEGCAQSDB8aIBsvKgkZISIWGwgKCAQIBjUIBwQKRwALCEEKAkEBAgEOAqoFQQQDAQJBAEIACwJBBrUEQRoCQQ4CQQcCQQNCAEECAkEIAgECQRACQQQCQQcIQQMDQQcFQQMCQQxCAEEAAgZBDgIBBQcFBwQFAwIBBAYCAQQLCQECBQIBA0EGAkECuAUHCgcLBAgFRwAECkcACwiwBAgHBAoHkwIHCwcKBwsIBAUGCAcECkcAC4wDCAcECkcACxIGCjABsQMBCQI7jgFBAQ6zBpAFiAILQQEdNY0BowErAZECkAENswGQARajAQJBAgVBAYIBvgMOARsFBwgHBApHAAsCBUQBAQIFEAEIBwQKRwALCAcnBQoIBwQKRwALtwKoAQgHBAoHoAIuKYoCBwsIBwQKRwALCAcECkcACw4IEhEOEA8SSAAHBApHAAutAggHBApHAAsOCBIRDhAPEkgABwQKRwALCAcECkcACwUPCAcECkcACx0bOR4BnwEIBwQKBz6AAwcLCAcECkcACwUKCAcECkcAC7ICCAcECkcACwgGDiK3AqgBGqECLim\/Aj8BAkEGlQE5rAMBAkEGlQE5LgYTMCcbOS9BAIMCQQAOP60DBg4wswI1ARtBAAUHTxQFBxUIAYQBAhS2BgMBBDkEnwIDnwEqFQgBhAECFDY5BLkBA4IBBEEADgMJBAMJQQJCAAQCQSgcBB9BGwUHCw8JCAUGCQoICw8JCAUGCQoICw8JCAUGCQoICw8JCAUGCQoICw8JCAUGCQoIIAEAAAgBAABFAQ4ADQECAAkBAQAvAQAAiAEBAAAVAQEAfkEAAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQgEBAEEAAAJBAAIAQQACAEEAAgBBAAIAQQACAEEAAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAPEEQYIBRAVBFgJBFwJBEQQLBwwSCUEAEQdBAkUAQwBBAwJBAwwBCwEbATEHCbwBQQIFQQEGQQCJAUERBAEFAwgBA0ECAwEFAwVEAQJBNQlBAQVGABEUQSSwCwEHAR4BuAQBmgIBigMEBQMCAQQGAgMFBAEJAgEIAwECAQQLCQECBQIBBEEFAkEJFAGaAwEHASsBmBABDgEEQQE+AissGRYMCIUCAhYckB4BCweBAQWhAYMBBgIKAwQBCAJBAAQCCARBAAIBBgIDBAEFBAshBDIJDxoZgAGvAQk2LQEJBwYLrgMCFhsKiwEukwEIlAELogEGFwaFAwECjQEIDwgBFIsBAxIMUwA7JgkCIqABBSYOhAEKDywHEWMACiuQAQGZARseBhNEABs1Ci4IMgEsGQYYtgEDLSIGPAMlPBIcBwYUBwsGhAEgDAIGEwsNNg0KEaMBKxIMEQEEAQQ1FgUJCJoCERQlDh8EDiAIRwABERAEAQwBDQYOAgQhBAIWGworCQgMKgIcDxCFAQwBPQxBCQJEAAEHAkECBEETBwEFAQgBDkEDDBoBBxctEQNHAgIDBwJGAAIGBQgGQQAEAQQBAwEGQQIGQQ8DQQYHQQECRgBBBAdBAgVBCiFCAAYOEAQMBA4EBSpCAEECAgECBEIARAADRAAGBEIABEEMBEFBBUEKHJgBCR8LAQdBBQwFQSkHQQIDQQYJBggMAQIRQQEGQQMDQQU6QQIMCgkFAQcCRgAVCAGEAQIUvgY5BJ8CA4kCFQgBhAECFDY5BLkBA4IBDBoBBgIGBQgCBgwaATpBQqgCAaMCAqMCAaMCAqMCAkEKSQxBVQdXAH0BdyQxODUxZDA4YS1iNjg2LTQ4ZDMtOWUwNy1lYzlkM2U3YjJmY2Z3\/wI8cD5PbiBNYXJjaCAyNSwgMjAyNiwgYSB1c2VyIHJlcG9ydGVkIHRoYXQgdGhlaXIgb24tY2FsbCBzY2hlZHVsZSB3YXMgbm90IHJvdGF0aW5nIGNvcnJlY3RseS4gVGhlIHBlcnNvbiB3aG8gaGFkIGp1c3QgZmluaXNoZWQgdGhlaXIgc2hpZnQgcmVtYWluZWQgc2hvd24gYXMgb24tY2FsbCwgZXZlbiB0aG91Z2ggdGhlIG5leHQgc2hpZnQgaGFkbid0IHN0YXJ0ZWQgeWV0IGFuZCBub2JvZHkgd2FzIHN1cHBvc2VkIHRvIGJlIG9uLWNhbGwgZHVyaW5nIHRoYXQgZ2FwLiBXZSBpZGVudGlmaWVkIHRoZSByb290IGNhdXNlLCBkZXBsb3llZCBhIGZpeCwgYW5kIG9uLWNhbGwgc2NoZWR1bGVzIG5vdyByb3RhdGUgY29ycmVjdGx5IGZvciBhbGwgc2NoZWR1bGUgdHlwZXMuPC9wPnckMGRkOWQwMTktYmFjNS00MDY0LTlmOGEtOTUxNmZlODMxNDJmdyk8aDIgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPlN1bW1hcnk8L2gyPnckM2FjODUwYzgtZjEyMi00Y2MyLTk5YTItN2E2MzRlMzMxMjk1d7kCPHA+U29tZSB0ZWFtcyBjb25maWd1cmUgb24tY2FsbCBzY2hlZHVsZXMgd2l0aCBpbnRlbnRpb25hbCBnYXBzIOKAlCBmb3IgZXhhbXBsZSwgYSBzY2hlZHVsZSB3aGVyZSBzb21lb25lIGlzIG9uLWNhbGwgb25seSBhdCBuaWdodCwgd2l0aCBubyBjb3ZlcmFnZSBkdXJpbmcgdGhlIGRheS4gV2hlbiBvbmUgc2hpZnQgZW5kZWQgYW5kIHRoZSBuZXh0IHNoaWZ0IGhhZG4ndCBzdGFydGVkIHlldCwgdGhlIG91dGdvaW5nIHBlcnNvbiBzaG91bGQgaGF2ZSBiZWVuIG1hcmtlZCBvZmYtY2FsbC4gSW5zdGVhZCwgdGhleSByZW1haW5lZCBhY3RpdmUuPC9wPnckYjlmYTVmODUtMWJhYi00ZjgyLTkyNjAtMTFiNTg4M2RmOGQ5d5oBPHA+VGhlIHJlc3VsdDogdGhlIHByZXZpb3VzIG9uLWNhbGwgcGVyc29uIGtlcHQgcmVjZWl2aW5nIGFsZXJ0cyBkdXJpbmcgYSBwZXJpb2QgdGhleSB3ZXJlbid0IHN1cHBvc2VkIHRvIGJlIG9uLWNhbGwsIGFuZCB0aGUgc2NoZWR1bGUgYXBwZWFyZWQgc3R1Y2suPC9wPnckN2QyZTdjMzMtMGRlMS00NzU2LWE1NTktMWM3MmZkZThjOWI0dyg8aDIgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPkltcGFjdDwvaDI+dyRhZTExMThmMS0zMWU3LTRhY2YtYmE4Ni0wNzM2MTcxYzJmNjF31AE8cD5DdXN0b21lcnMgd2l0aCBnYXAtYmFzZWQgc2NoZWR1bGVzIHdlcmUgYWZmZWN0ZWQuIFRoZSBwcmV2aW91cyBvbi1jYWxsIHBlcnNvbiBjb250aW51ZWQgcmVjZWl2aW5nIGFsZXJ0cyBkdXJpbmcgcGVyaW9kcyB3aGVuIG5vIG9uZSB3YXMgc3VwcG9zZWQgdG8gYmUgb24tY2FsbCwgYW5kIHRoZSBzY2hlZHVsZSBhcHBlYXJlZCB0byBub3QgYmUgcm90YXRpbmcuPC9wPnckZWY1MjhiMzItOTM1Ny00MWMwLTg0MDQtZWExYTk1YTE5Y2Mydwc8cD48L3A+dyRkNDk2YmIwMi05MWU4LTRkMzEtYTdiNC0wNjZkNjE5NTI4MmV3mhI8c3R5bGU+Ci5wbS10aW1lbGluZS13cmFwIHsgbWF4LXdpZHRoOiA3MjBweDsgbWFyZ2luOiAwIGF1dG87IGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIHNhbnMtc2VyaWY7IH0KLnBtLXRsLWhlYWRpbmcgeyBmb250LXNpemU6IDE1cHg7IGZvbnQtd2VpZ2h0OiA2MDA7IGNvbG9yOiAjMTExOyBtYXJnaW46IDAgMCAwLjc1cmVtOyBwYWRkaW5nLWJvdHRvbTogMC41cmVtOyBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2U1ZTVlNTsgfQoucG0tdGltZWxpbmUgeyBsaXN0LXN0eWxlOiBub25lOyBwYWRkaW5nOiAwOyBtYXJnaW46IDA7IHBvc2l0aW9uOiByZWxhdGl2ZTsgfQoucG0tdGltZWxpbmU6OmJlZm9yZSB7IGNvbnRlbnQ6ICcnOyBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDcycHg7IHRvcDogNnB4OyBib3R0b206IDZweDsgd2lkdGg6IDFweDsgYmFja2dyb3VuZDogI2U1ZTVlNTsgfQoucG0tdGltZWxpbmUgbGkgeyBkaXNwbGF5OiBmbGV4OyBnYXA6IDEuNXJlbTsgbWFyZ2luLWJvdHRvbTogMS4yNXJlbTsgcG9zaXRpb246IHJlbGF0aXZlOyB9Ci5wbS10bC10aW1lIHsgZm9udC1zaXplOiAxMnB4OyBmb250LXdlaWdodDogNjAwOyBjb2xvcjogIzg4ODsgbWluLXdpZHRoOiA2MHB4OyB0ZXh0LWFsaWduOiByaWdodDsgcGFkZGluZy10b3A6IDJweDsgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtczsgfQoucG0tdGwtZG90IHsgd2lkdGg6IDhweDsgaGVpZ2h0OiA4cHg7IGJvcmRlci1yYWRpdXM6IDUwJTsgYmFja2dyb3VuZDogI2NjYzsgbWFyZ2luLXRvcDogNXB4OyBmbGV4LXNocmluazogMDsgcG9zaXRpb246IHJlbGF0aXZlOyB6LWluZGV4OiAxOyB9Ci5wbS10bC1kb3QuZml4IHsgYmFja2dyb3VuZDogIzFEOUU3NTsgfQoucG0tdGwtY29udGVudCB7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6ICM1NTU7IGxpbmUtaGVpZ2h0OiAxLjY7IH0KLnBtLXRsLWNvbnRlbnQgc3Ryb25nIHsgY29sb3I6ICMxMTE7IGZvbnQtd2VpZ2h0OiA2MDA7IH0KPC9zdHlsZT4KCjxkaXYgY2xhc3M9InBtLXRpbWVsaW5lLXdyYXAiPgogIDxwIGNsYXNzPSJwbS10bC1oZWFkaW5nIj5UaW1lbGluZSA8c3BhbiBzdHlsZT0iZm9udC1zaXplOjEycHg7IGZvbnQtd2VpZ2h0OjQwMDsgY29sb3I6Izg4ODsiPlVUQywgTWFyY2ggMjUsIDIwMjY8L3NwYW4+PC9wPgogIDx1bCBjbGFzcz0icG0tdGltZWxpbmUiPgogICAgPGxpPgogICAgICA8c3BhbiBjbGFzcz0icG0tdGwtdGltZSI+MTI6MjUgUE08L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJwbS10bC1kb3QiPjwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9InBtLXRsLWNvbnRlbnQiPkEgdXNlciByZXBvcnRzIHZpYSBsaXZlIGNoYXQgdGhhdCB0aGVpciBvbi1jYWxsIHNjaGVkdWxlIGFwcGVhcnMgc3R1Y2ssIHRoZSBzYW1lIHBlcnNvbiBpcyBzaG93biBhcyBvbi1jYWxsIGFjcm9zcyBhIGdhcCB3aGVyZSBubyBvbmUgc2hvdWxkIGJlIG9uLWNhbGwuPC9zcGFuPgogICAgPC9saT4KICAgIDxsaT4KICAgICAgPHNwYW4gY2xhc3M9InBtLXRsLXRpbWUiPjE6NTAgUE08L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJwbS10bC1kb3QiPjwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9InBtLXRsLWNvbnRlbnQiPk91ciB0ZWFtIGJlZ2lucyBpbnZlc3RpZ2F0aW9uIGludG8gdGhlIG9uLWNhbGwgc2NoZWR1bGluZyBlbmdpbmUuPC9zcGFuPgogICAgPC9saT4KICAgIDxsaT4KICAgICAgPHNwYW4gY2xhc3M9InBtLXRsLXRpbWUiPn4yOjE1IFBNPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0icG0tdGwtZG90Ij48L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJwbS10bC1jb250ZW50Ij48Yj5Sb290IGNhdXNlIGlkZW50aWZpZWQ6PC9iPiBhIGNvZGUgY2hhbmdlIHB1c2hlZCB0d28gd2Vla3MgcHJpb3IgaW50cm9kdWNlZCBhIGNvbmRpdGlvbiB0aGF0IHNraXBwZWQgZW5kaW5nIHRoZSBjdXJyZW50IHNoaWZ0IGlmIHRoZSBzYW1lIHBlcnNvbiB3YXMgdG8gYmUgb24tY2FsbCBuZXh0Ljwvc3Bhbj4KICAgIDwvbGk+CiAgICA8bGk+CiAgICAgIDxzcGFuIGNsYXNzPSJwbS10bC10aW1lIj4yOjMxIFBNPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0icG0tdGwtZG90IGZpeCI+PC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0icG0tdGwtY29udGVudCI+PHN0cm9uZz5GaXggZGVwbG95ZWQuPC9zdHJvbmc+IE9uLWNhbGwgc2NoZWR1bGVzIG5vdyByb3RhdGUgY29ycmVjdGx5LCBpbmNsdWRpbmcgZm9yIGdhcC1iYXNlZCBjb25maWd1cmF0aW9ucy48L3NwYW4+CiAgICA8L2xpPgogIDwvdWw+CjwvZGl2PnckMTJhYjE2ZDctOTNmNS00MDY1LWIxZjctNGMzZmQ5ZDhjMDY5dyw8aDIgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPlJvb3QgY2F1c2U8L2gyPnckOTNlODIxY2MtYjlhOC00MTRlLTliZGEtNjJmZWI1MjZmODE4d6YCPHA+VHdvIHdlZWtzIGFnbywgd2Ugc2hpcHBlZCBhIGNoYW5nZSB0byBhdm9pZCBzZW5kaW5nIHJlZHVuZGFudCBzaGlmdC1lbmQgbm90aWZpY2F0aW9ucyB3aGVuIHRoZSBzYW1lIHBlcnNvbidzIHNoaWZ0IHdhcyBzaW1wbHkgY29udGludWluZy4gVGhlIGludGVudCB3YXM6IGlmIFBlcnNvbiBBJ3Mgc2hpZnQgZW5kcyBhbmQgQSBpcyBpbW1lZGlhdGVseSBzdGFydGluZyB0aGUgbmV4dCBzaGlmdCwgZG9uJ3Qgbm90aWZ5IHRoZW0gdGhhdCB0aGV5J3ZlIGdvbmUgb2ZmLWNhbGwgYW5kIGJhY2sgb24tY2FsbC48L3A+dyQxMWJlOWY4OS1lOWZhLTRhNjUtOTA1ZS01ZDk0ZTBhZTc1NzF3jAM8cD5UaGUgaW1wbGVtZW50YXRpb24gY2hlY2tlZCB3aGV0aGVyIHRoZSB1c2VyIHdhcyBjaGFuZ2luZyBiZWZvcmUgZW5kaW5nIHRoZSBjdXJyZW50IHNoaWZ0LiBUaGlzIHdvcmtlZCBjb3JyZWN0bHkgd2hlbiB0cmFuc2l0aW9uaW5nIGJldHdlZW4gdHdvIGRpZmZlcmVudCBwZW9wbGUgYnV0IGl0IGhhZCBhIGJsaW5kIHNwb3Q6IHdoZW4gYSBzaGlmdCBlbmRzIGFuZMKgPHN0cm9uZz5ubyBuZXcgc2hpZnQgaXMgc3RhcnRpbmc8L3N0cm9uZz7CoChpLmUuLCBhIGdhcCBpbiB0aGUgc2NoZWR1bGUpLCB0aGVyZSdzIG5vICJuZXh0IHVzZXIiIHRvIGNvbXBhcmUgYWdhaW5zdC4gVGhlIGNvbmRpdGlvbiB3YXMgbmV2ZXIgc2F0aXNmaWVkLCBzbyB0aGUgc2hpZnQgd2FzIG5ldmVyIGVuZGVkLjwvcD53JDZmMDNmYWJjLWM0MDgtNGU5Mi1hN2FiLWU2NDc1NWE3MTIwMncHPHA+PC9wPnckNTYyZDViN2UtZjlhOS00NzA3LTk3NjItMjMzOGEwZTM2ZWI4d8wBPHByZSBjbGFzcz0id3AtYmxvY2stY29kZSI+PGNvZGU+aWYgKGN1cnJlbnRTaGlmdFRvQmVFbmRlZCkgewogIHVzZXJJc0NoYW5naW5nID0gY3VycmVudFVzZXIgIT0gbmV4dFVzZXIKICBpZiAodXNlcklzQ2hhbmdpbmcpIHsgLy8gJmx0Oy0tIHJvb3QgY2F1c2UKICAgIGVuZFNoaWZ0KGN1cnJlbnRTaGlmdFRvQmVFbmRlZCkKICB9Cn08L2NvZGU+PC9wcmU+dyQ3YTg1NTM1ZS0yNGM2LTRhMDUtOWVhNy0yMDUxMTIxYjU5YTZ3tAE8cD5UaGUgZml4OiBhbHdheXMgZW5kIHRoZSBjdXJyZW50IHNoaWZ0IHdoZW4gaXQncyBkdWUgdG8gZW5kLCByZWdhcmRsZXNzIG9mIHdobyAoaWYgYW55b25lKSBpcyBjb21pbmcgb24gbmV4dC4gU2hpZnQtZW5kIGFuZCBzaGlmdC1zdGFydCBhcmUgbm93IHRyZWF0ZWQgYXMgaW5kZXBlbmRlbnQgZXZlbnRzLjwvcD53JGUzNzllMDk5LTU1NWUtNGQwNy04Nzg0LTBjNjJiMjI3YWRmOHckN2UzOWExNzgtODM5MC00MmIyLTg2MzktYzgxZDE4NGM1YzJhdwc8cD48L3A+dyQzZGZlNDk4Yy1lYjI2LTQ0ZjYtYjNlNS0xOWI4M2ZiYjNlODV3MTxoMiBjbGFzcz0id3AtYmxvY2staGVhZGluZyI+TGVzc29ucyBsZWFybmVkPC9oMj53JDk0MWY5YjA3LWIwMTktNDhlMi04ZDgwLTU3Nzk2ZjRmNTRlNne3AjxwPjxzdHJvbmc+R2FwIHNjaGVkdWxlcyB3ZXJlbid0IGNvdmVyZWQgZW5vdWdoIGluIG91ciB0ZXN0IGNhc2VzLjwvc3Ryb25nPsKgVGhlIGNoYW5nZSB3YXMgdGVzdGVkIGFnYWluc3Qgc3RhbmRhcmQgcm90YXRpb24gc2NlbmFyaW9zYnV0IG5vdCBhZ2FpbnN0IHNjaGVkdWxlcyB3aXRoIGludGVudGlvbmFsIGdhcHMgaS5lLiBBIOKGkiA8ZW0+R2FwPC9lbT4g4oaSIEEuIFdlJ3JlIGFkZGluZyBleHBsaWNpdCB0ZXN0IGNvdmVyYWdlIGZvciBnYXAtYmFzZWQsIG5pZ2h0LW9ubHksIGFuZCBwYXJ0aWFsLWRheSBzY2hlZHVsZSB0eXBlcy48L3A+dyQ3OTczZTExNC1iN2FjLTRhOTAtYTBjZi1hYTRlZjU1ZmQxY2R3IjxwPk9uLWNhbGwgcm90YXRpb24gdGVzdCBjYXNlczwvcD53JDY0MzNhODM2LTQ1YzctNGJiZS1hYTgzLTE3YWVmNTZkMWNiN3cpPHVsIGNsYXNzPSJ3cC1ibG9jay1saXN0Ij4KCgoKCgoKCgoKPC91bD53JGFiYTA1OTNlLTY2ZWQtNDIyNC1hNDJhLTcxYzFiNzg5ZWFkN3cRPGxpPkEg4oaSIEEgPC9saT53JDBiZGMyNWM4LWQ5OGItNGVlNi1hZGE0LThhNWZiMzNlMzFmN3cQPGxpPkEg4oaSIEI8L2xpPnckNDFlYTY0YTktYjgxMC00NTEyLTg2OTMtOGNlMDYzNjIwNzJidyE8bGk+QSDihpIgPGVtPmdhcDwvZW0+IOKGkiBCPC9saT53JDBhY2Y3NmU0LTQyNTItNGVmZC1hY2Q1LWY2NTNjNjkyNjU3MXchPGxpPkEg4oaSIDxlbT5nYXA8L2VtPiDihpIgQTwvbGk+dyQyYzQyNGM5Yi0zMDJlLTQ2NGUtOWFhMS1mN2E3ZGRmZmVmYzB3ITxsaT5BIOKGkiA8ZW0+ZW5kPC9lbT4gbGF0ZXI8L2xpPnckMWUxZDgwNmItYmNlMS00MTUwLTg2MmYtNTA2MjI1NWYxMTAzdzA8bGk+PGVtPnNjaGVkdWxlZCBzdGFydDwvZW0+IOKGkiA8ZW0+QTwvZW0+PC9saT53JDY4MWMxNTI4LTA2YTctNDViNi1hMDMxLTg0ZTRlYzBkZWFkN3eLAjxwPjxzdHJvbmc+U2hpZnQgbGlmZWN5Y2xlIGV2ZW50cyBzaG91bGQgYmUgaW5kZXBlbmRlbnQuPC9zdHJvbmc+wqBFbmRpbmcgYSBzaGlmdCBhbmQgc3RhcnRpbmcgYSBuZXcgb25lIGFyZSB0d28gc2VwYXJhdGUgY29uY2VybnMuIENvdXBsaW5nIHRoZW0g4oCUIGV2ZW4gd2l0aCBnb29kIGludGVudCDigJQgY3JlYXRlcyBmcmFnaWxlIGxvZ2ljLiBUaGUgb24tY2FsbCBlbmdpbmUgc2hvdWxkIHRyZWF0IGVhY2ggbGlmZWN5Y2xlIGV2ZW50IGF0b21pY2FsbHkuPC9wPnckMzZmNWY2YjItZjQxMC00ZWRiLTk5Y2UtMzc3NTU5NTJiM2Uwdyw8aDIgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPkNvbmNsdXNpb248L2gyPnckODhlZDUzODItMTBiMS00M2NlLWE4NWYtZmYzMDNkNTU3ZTljd7kBPHA+T24tY2FsbCBzY2hlZHVsZXMgd2l0aCBnYXBzIGJldHdlZW4gc2hpZnRzIG5vdyByb3RhdGUgY29ycmVjdGx5LiBJZiB5b3UncmUgdXNpbmcgYSBzY2hlZHVsZSB3aGVyZSBub2JvZHkgaXMgb24tY2FsbCBkdXJpbmcgY2VydGFpbiBob3VycywgeW91ciByb3RhdGlvbnMgd2lsbCB3b3JrIGFzIGNvbmZpZ3VyZWQuIDwvcD53JGJmZWU2OTI4LTU0ODctNDIyMS05NzBkLWVmZmFkZDA5OWRiYndnPHA+VGhhbmtzIGZvciByZWFkaW5nLiBXZSBjb250aW51ZSBvbiBvdXIgbWlzc2lvbiB0byBidWlsZCBhIHZlcnkgZmxleGlibGUgb24tY2FsbCBmb3IgZXZlcnlvbmUgOikgPC9wPnckNTlmM2ZiMzgtNGNjMy00YWZhLWIyN2MtZTlhM2E0ZTVmNjJmdwc8cD48L3A+e0J51T+JuGAAe0HuJJvIIAAAfZtZ7AMAfQB3AHeaEjxzdHlsZT4KLnBtLXRpbWVsaW5lLXdyYXAgeyBtYXgtd2lkdGg6IDcyMHB4OyBtYXJnaW46IDAgYXV0bzsgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgc2Fucy1zZXJpZjsgfQoucG0tdGwtaGVhZGluZyB7IGZvbnQtc2l6ZTogMTVweDsgZm9udC13ZWlnaHQ6IDYwMDsgY29sb3I6ICMxMTE7IG1hcmdpbjogMCAwIDAuNzVyZW07IHBhZGRpbmctYm90dG9tOiAwLjVyZW07IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTVlNWU1OyB9Ci5wbS10aW1lbGluZSB7IGxpc3Qtc3R5bGU6IG5vbmU7IHBhZGRpbmc6IDA7IG1hcmdpbjogMDsgcG9zaXRpb246IHJlbGF0aXZlOyB9Ci5wbS10aW1lbGluZTo6YmVmb3JlIHsgY29udGVudDogJyc7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogNzJweDsgdG9wOiA2cHg7IGJvdHRvbTogNnB4OyB3aWR0aDogMXB4OyBiYWNrZ3JvdW5kOiAjZTVlNWU1OyB9Ci5wbS10aW1lbGluZSBsaSB7IGRpc3BsYXk6IGZsZXg7IGdhcDogMS41cmVtOyBtYXJnaW4tYm90dG9tOiAxLjI1cmVtOyBwb3NpdGlvbjogcmVsYXRpdmU7IH0KLnBtLXRsLXRpbWUgeyBmb250LXNpemU6IDEycHg7IGZvbnQtd2VpZ2h0OiA2MDA7IGNvbG9yOiAjODg4OyBtaW4td2lkdGg6IDYwcHg7IHRleHQtYWxpZ246IHJpZ2h0OyBwYWRkaW5nLXRvcDogMnB4OyBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zOyB9Ci5wbS10bC1kb3QgeyB3aWR0aDogOHB4OyBoZWlnaHQ6IDhweDsgYm9yZGVyLXJhZGl1czogNTAlOyBiYWNrZ3JvdW5kOiAjY2NjOyBtYXJnaW4tdG9wOiA1cHg7IGZsZXgtc2hyaW5rOiAwOyBwb3NpdGlvbjogcmVsYXRpdmU7IHotaW5kZXg6IDE7IH0KLnBtLXRsLWRvdC5maXggeyBiYWNrZ3JvdW5kOiAjMUQ5RTc1OyB9Ci5wbS10bC1jb250ZW50IHsgZm9udC1zaXplOiAxNHB4OyBjb2xvcjogIzU1NTsgbGluZS1oZWlnaHQ6IDEuNjsgfQoucG0tdGwtY29udGVudCBzdHJvbmcgeyBjb2xvcjogIzExMTsgZm9udC13ZWlnaHQ6IDYwMDsgfQo8L3N0eWxlPgoKPGRpdiBjbGFzcz0icG0tdGltZWxpbmUtd3JhcCI+CiAgPHAgY2xhc3M9InBtLXRsLWhlYWRpbmciPlRpbWVsaW5lIDxzcGFuIHN0eWxlPSJmb250LXNpemU6MTJweDsgZm9udC13ZWlnaHQ6NDAwOyBjb2xvcjojODg4OyI+VVRDLCBNYXJjaCAyNSwgMjAyNjwvc3Bhbj48L3A+CiAgPHVsIGNsYXNzPSJwbS10aW1lbGluZSI+CiAgICA8bGk+CiAgICAgIDxzcGFuIGNsYXNzPSJwbS10bC10aW1lIj4xMjoyNSBQTTwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9InBtLXRsLWRvdCI+PC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0icG0tdGwtY29udGVudCI+QSB1c2VyIHJlcG9ydHMgdmlhIGxpdmUgY2hhdCB0aGF0IHRoZWlyIG9uLWNhbGwgc2NoZWR1bGUgYXBwZWFycyBzdHVjaywgdGhlIHNhbWUgcGVyc29uIGlzIHNob3duIGFzIG9uLWNhbGwgYWNyb3NzIGEgZ2FwIHdoZXJlIG5vIG9uZSBzaG91bGQgYmUgb24tY2FsbC48L3NwYW4+CiAgICA8L2xpPgogICAgPGxpPgogICAgICA8c3BhbiBjbGFzcz0icG0tdGwtdGltZSI+MTo1MCBQTTwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9InBtLXRsLWRvdCI+PC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0icG0tdGwtY29udGVudCI+T3VyIHRlYW0gYmVnaW5zIGludmVzdGlnYXRpb24gaW50byB0aGUgb24tY2FsbCBzY2hlZHVsaW5nIGVuZ2luZS48L3NwYW4+CiAgICA8L2xpPgogICAgPGxpPgogICAgICA8c3BhbiBjbGFzcz0icG0tdGwtdGltZSI+fjI6MTUgUE08L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJwbS10bC1kb3QiPjwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9InBtLXRsLWNvbnRlbnQiPjxiPlJvb3QgY2F1c2UgaWRlbnRpZmllZDo8L2I+IGEgY29kZSBjaGFuZ2UgcHVzaGVkIHR3byB3ZWVrcyBwcmlvciBpbnRyb2R1Y2VkIGEgY29uZGl0aW9uIHRoYXQgc2tpcHBlZCBlbmRpbmcgdGhlIGN1cnJlbnQgc2hpZnQgaWYgdGhlIHNhbWUgcGVyc29uIHdhcyB0byBiZSBvbi1jYWxsIG5leHQuPC9zcGFuPgogICAgPC9saT4KICAgIDxsaT4KICAgICAgPHNwYW4gY2xhc3M9InBtLXRsLXRpbWUiPjI6MzEgUE08L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJwbS10bC1kb3QgZml4Ij48L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJwbS10bC1jb250ZW50Ij48c3Ryb25nPkZpeCBkZXBsb3llZC48L3N0cm9uZz4gT24tY2FsbCBzY2hlZHVsZXMgbm93IHJvdGF0ZSBjb3JyZWN0bHksIGluY2x1ZGluZyBmb3IgZ2FwLWJhc2VkIGNvbmZpZ3VyYXRpb25zLjwvc3Bhbj4KICAgIDwvbGk+CiAgPC91bD4KPC9kaXY+dQZ1B3UCdwRhV1k9dwt0b2sta2V5d29yZHUBdwRJQT09dQJ3BEtBPT13D3Rvay1wdW5jdHVhdGlvbnUCdxxZM1Z5Y21WdWRGTm9hV1owVkc5Q1pVVnVaR1ZrdxB0b2stdmFyaWFibGVOYW1ldQJ3BEtRPT13D3Rvay1wdW5jdHVhdGlvbnUBdwRJQT09dQJ3BGV3PT13D3Rvay1wdW5jdHVhdGlvbnUKdQF3BElDQT11AncUZFhObGNrbHpRMmhoYm1kcGJtYz13EHRvay12YXJpYWJsZU5hbWV1AXcESUE9PXUCdwRQUT09dwx0b2stb3BlcmF0b3J1AXcESUE9PXUCdxBZM1Z5Y21WdWRGVnpaWEk9dxB0b2stdmFyaWFibGVOYW1ldQF3BElBPT11AncESVQwPXcMdG9rLW9wZXJhdG9ydQF3BElBPT11AncMYm1WNGRGVnpaWEk9dxB0b2stdmFyaWFibGVOYW1ldQp1AXcESUNBPXUCdwRhV1k9dwt0b2sta2V5d29yZHUBdwRJQT09dQJ3BEtBPT13D3Rvay1wdW5jdHVhdGlvbnUCdxRkWE5sY2tselEyaGhibWRwYm1jPXcQdG9rLXZhcmlhYmxlTmFtZXUCdwRLUT09dw90b2stcHVuY3R1YXRpb251AXcESUE9PXUCdwRldz09dw90b2stcHVuY3R1YXRpb251AXcESUE9PXUCdxhMeThnUEMwdElISnZiM1FnWTJGMWMyVT13C3Rvay1jb21tZW50dQV1AXcISUNBZ0lBPT11AncMWlc1a1UyaHBablE9dxB0b2stdmFyaWFibGVOYW1ldQJ3BEtBPT13D3Rvay1wdW5jdHVhdGlvbnUCdxxZM1Z5Y21WdWRGTm9hV1owVkc5Q1pVVnVaR1ZrdxB0b2stdmFyaWFibGVOYW1ldQJ3BEtRPT13D3Rvay1wdW5jdHVhdGlvbnUCdQF3BElDQT11AncEZlE9PXcPdG9rLXB1bmN0dWF0aW9udQF1AncEZlE9PXcPdG9rLXB1bmN0dWF0aW9ueHh3DmNvcmUvcGFyYWdyYXBoeXcJY29yZS9saXN0eXcAeHcOY29yZS9saXN0LWl0ZW14dw5jb3JlL2xpc3QtaXRlbXh3DmNvcmUvbGlzdC1pdGVteHcOY29yZS9saXN0LWl0ZW14dw5jb3JlL2xpc3QtaXRlbXh3DmNvcmUvbGlzdC1pdGVtfQJ9An0CfQJ9Anh3DmNvcmUvcGFyYWdyYXBoeXcHcHVibGlzaHc1b24tY2FsbC1zY2hlZHVsZXMtbm90LXJvdGF0aW5nLW9uLWdhcC1iYXNlZC1zY2hlZHVsZXN4dQF9pBb0BQB9v6Kr+wF9AHcEb3BlbncEb3Blbnl3AHcIc3RhbmRhcmR3AHcAeXcAeX0AeXl3AHcAeHl1AHh2AhhpbWFnZV9nZW5lcmF0b3Jfc2V0dGluZ3N2BQh0ZW1wbGF0ZXcHaGlnaHdheRBkZWZhdWx0X2ltYWdlX2lkfQAEZm9udHcAB2VuYWJsZWR4BXRva2Vud8YBZXlKMGVIUWlPaUpQYmkxallXeHNJSE5qYUdWa2RXeGxjeUJ1YjNRZ2NtOTBZWFJwYm1jZ2IyNGdaMkZ3TFdKaGMyVmtJSE5qYUdWa2RXeGxjeUlzSW5SbGJYQnNZWFJsSWpvaWFHbG5hSGRoZVNJc0ltWnZiblFpT2lJaUxDSmliRzluWDJsa0lqb3lNek14TXpnNU1EQjkuMU16cEhZUzVVRTE1Nml4UUcyVDdjRWx5ZmZlLV9wSGNmQktvX3lkS0tXVU1RB3ZlcnNpb259AncOY29yZS9wYXJhZ3JhcGh5eHcMY29yZS9oZWFkaW5neHcOY29yZS9wYXJhZ3JhcGh5eHcOY29yZS9wYXJhZ3JhcGh5eHcMY29yZS9oZWFkaW5neHcOY29yZS9wYXJhZ3JhcGh5ePMDAHcJY29yZS9odG1seHh3DmNvcmUvcGFyYWdyYXBoeXcMY29yZS9oZWFkaW5neHcOY29yZS9wYXJhZ3JhcGh5eHcOY29yZS9wYXJhZ3JhcGh5eHcOY29yZS9wYXJhZ3JhcGh5eHcJY29yZS9jb2RleXl5eX0BdwB3CkphdmFTY3JpcHR3B2NlcnRhaW54dw5jb3JlL3BhcmFncmFwaHl4dwljb3JlL2NvZGV5eXl5fQF3AHh3DmNvcmUvcGFyYWdyYXBoeXcKSmF2YVNjcmlwdHcHY2VydGFpbnh3DGNvcmUvaGVhZGluZ3h3DmNvcmUvcGFyYWdyYXBoeXh3DmNvcmUvcGFyYWdyYXBoeXh3DGNvcmUvaGVhZGluZ3h3DmNvcmUvcGFyYWdyYXBoeXh3DmNvcmUvcGFyYWdyYXBoeTQAd3A8cHJlIGNsYXNzPSJ3cC1ibG9jay1jb2RlIj48Y29kZT5pZiAoY3VycmVudFNoaWZ0VG9CZUVuZGVkKSB7CiAgICBlbmRTaGlmdChjdXJyZW50U2hpZnRUb0JlRW5kZWQpCn08L2NvZGU+PC9wcmU+pQEAdxMyMDI2LTAzLTI1VDIyOjA5OjA5dQN1B3UCdwRhV1k9dwt0b2sta2V5d29yZHUBdwRJQT09dQJ3BEtBPT13D3Rvay1wdW5jdHVhdGlvbnUCdxxZM1Z5Y21WdWRGTm9hV1owVkc5Q1pVVnVaR1ZrdxB0b2stdmFyaWFibGVOYW1ldQJ3BEtRPT13D3Rvay1wdW5jdHVhdGlvbnUBdwRJQT09dQJ3BGV3PT13D3Rvay1wdW5jdHVhdGlvbnUFdQF3CElDQWdJQT09dQJ3DFpXNWtVMmhwWm5RPXcQdG9rLXZhcmlhYmxlTmFtZXUCdwRLQT09dw90b2stcHVuY3R1YXRpb251AnccWTNWeWNtVnVkRk5vYVdaMFZHOUNaVVZ1WkdWa3cQdG9rLXZhcmlhYmxlTmFtZXUCdwRLUT09dw90b2stcHVuY3R1YXRpb251AXUCdwRmUT09dw90b2stcHVuY3R1YXRpb25XAAfBvJOJDwUXCwQEAwEGBRIFxJX53Q49AGkCAbEBJAQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAYkABECgIGhEBAAEAAQEBfNcCewEAHFkEAAwACwAaAB8ACQMEEQUCAQAFAAcCBQV1AjwEKwMMAwEFNggBCAEIAQgBCAEABwAGCwcECQVbBSMQFhNYAqa+95cOWgACBAARAQEAOAABAAEBAbULlgMDAgQCAgEBAQADAwEFAgEBCwEABBkLAAIDAQoBCAEAAQEBBAEBAQABA7YCAAMAAgAQABcASgAlABMBCgAHAAQAAQANAQHKRBsJAQo3Bf4CAQ4AsQIAngEAAQAHAAYGzAEdAQABAAEBEwsGGQoAMQb7ARYCLDsQTgIBBhAGswMG0AIGiAEBCwIBBlQBTQVjBSwBkQEFUAQNB3MFyQEAAgABAwEAAgMFAAICAQBCBf4BAcGp6KMNYwAIAQABAAEAAgAtAgEAPAYBAAsABgC3AQZpAKQBAS4FKQWNAQAGBwEAAQACAAEFAQIGpAECMgEABkuuAQABAAIAAQUBAgavAQEACEMBAAEAAgABAwEAEAAGAB0IGwU5Fh4QYQBCBcMBAAEAAgABAwEACwC4ATkBAA4LBhcOANkBBqMCAS4FKQX+ARQBBwIAAUMBAQETAb0DATgBAwGeAQECVYgBpQIUAQcCAAFDAQEBEwE1ATgBAwF4AQJVQWcLBhkTAHIFORaDAgXtAQsGGQ4A4wE5UQICAvi4pZgNAgAiAQ+l0MX7CgIAxwaNDIUBha6a7woBAFY=\",\"updateId\":534503075}","_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","_lmt_disableupdate":"","_lmt_disable":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":true,"token":"eyJpbWciOiJodHRwczpcL1wvYmxvZy5zcGlrZS5zaFwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyNlwvMDNcL3Bvc3Rtb3J0ZW0tb24tY2FsbC1nYXBzLTEwMjR4NTU1LnBuZyIsInR4dCI6Ik9uLWNhbGwgc2NoZWR1bGVzIG5vdCByb3RhdGluZyBvbiBnYXAtYmFzZWQgc2NoZWR1bGVzIiwidGVtcGxhdGUiOiJoaWdod2F5IiwiZm9udCI6IiIsImJsb2dfaWQiOjIzMzEzODkwMH0.rIv6ImF4vucrqRmLpTDSgTdb1f1n0-v43-YzJtcY0VMMQ"},"version":2},"_wpas_customize_per_network":false,"jetpack_post_was_ever_published":false},"categories":[1444],"tags":[],"class_list":["post-5578","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-postmortem"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>On-call schedules not rotating on gap-based schedules - Spike&#039;s blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.spike.sh\/on-call-schedules-not-rotating-on-gap-based-schedules\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"On-call schedules not rotating on gap-based schedules - Spike&#039;s blog\" \/>\n<meta property=\"og:description\" content=\"On March 25, 2026, a user reported that their on-call schedule was not rotating correctly. The person who had just finished their shift remained shown as on-call, even though the next shift hadn&#8217;t started yet and nobody was supposed to be on-call during that gap. We identified the root cause, deployed a fix, and on-call [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.spike.sh\/on-call-schedules-not-rotating-on-gap-based-schedules\/\" \/>\n<meta property=\"og:site_name\" content=\"Spike&#039;s blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-03-25T16:39:09+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-03T15:32:05+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.spike.sh\/wp-content\/uploads\/2026\/03\/postmortem-on-call-gaps.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1040\" \/>\n\t<meta property=\"og:image:height\" content=\"564\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Damanpreet\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Damanpreet\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blog.spike.sh\\\/on-call-schedules-not-rotating-on-gap-based-schedules\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.spike.sh\\\/on-call-schedules-not-rotating-on-gap-based-schedules\\\/\"},\"author\":{\"name\":\"Damanpreet\",\"@id\":\"https:\\\/\\\/blog.spike.sh\\\/#\\\/schema\\\/person\\\/4bc971837058eacf02e9ef12fb625155\"},\"headline\":\"On-call schedules not rotating on gap-based schedules\",\"datePublished\":\"2026-03-25T16:39:09+00:00\",\"dateModified\":\"2026-04-03T15:32:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blog.spike.sh\\\/on-call-schedules-not-rotating-on-gap-based-schedules\\\/\"},\"wordCount\":551,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/blog.spike.sh\\\/on-call-schedules-not-rotating-on-gap-based-schedules\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blog.spike.sh\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/postmortem-on-call-gaps.png\",\"articleSection\":[\"Postmortem\"],\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blog.spike.sh\\\/on-call-schedules-not-rotating-on-gap-based-schedules\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blog.spike.sh\\\/on-call-schedules-not-rotating-on-gap-based-schedules\\\/\",\"url\":\"https:\\\/\\\/blog.spike.sh\\\/on-call-schedules-not-rotating-on-gap-based-schedules\\\/\",\"name\":\"On-call schedules not rotating on gap-based schedules - Spike&#039;s blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.spike.sh\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blog.spike.sh\\\/on-call-schedules-not-rotating-on-gap-based-schedules\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.spike.sh\\\/on-call-schedules-not-rotating-on-gap-based-schedules\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blog.spike.sh\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/postmortem-on-call-gaps.png\",\"datePublished\":\"2026-03-25T16:39:09+00:00\",\"dateModified\":\"2026-04-03T15:32:05+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/blog.spike.sh\\\/#\\\/schema\\\/person\\\/4bc971837058eacf02e9ef12fb625155\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blog.spike.sh\\\/on-call-schedules-not-rotating-on-gap-based-schedules\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blog.spike.sh\\\/on-call-schedules-not-rotating-on-gap-based-schedules\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/blog.spike.sh\\\/on-call-schedules-not-rotating-on-gap-based-schedules\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blog.spike.sh\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/postmortem-on-call-gaps.png\",\"contentUrl\":\"https:\\\/\\\/blog.spike.sh\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/postmortem-on-call-gaps.png\",\"width\":1040,\"height\":564,\"caption\":\"Spike.sh postmortem on on-call schedules not rotating for gaps\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blog.spike.sh\\\/on-call-schedules-not-rotating-on-gap-based-schedules\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/blog.spike.sh\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"On-call schedules not rotating on gap-based schedules\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blog.spike.sh\\\/#website\",\"url\":\"https:\\\/\\\/blog.spike.sh\\\/\",\"name\":\"Spike&#039;s blog\",\"description\":\"Learnings and opinions in a changing world\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blog.spike.sh\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blog.spike.sh\\\/#\\\/schema\\\/person\\\/4bc971837058eacf02e9ef12fb625155\",\"name\":\"Damanpreet\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9a938d08ab9251a99e241686ddce63028cca486f4937fffad851519903da88d3?s=96&d=robohash&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9a938d08ab9251a99e241686ddce63028cca486f4937fffad851519903da88d3?s=96&d=robohash&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9a938d08ab9251a99e241686ddce63028cca486f4937fffad851519903da88d3?s=96&d=robohash&r=g\",\"caption\":\"Damanpreet\"},\"url\":\"https:\\\/\\\/blog.spike.sh\\\/author\\\/daman50ab08d672\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"On-call schedules not rotating on gap-based schedules - Spike&#039;s blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.spike.sh\/on-call-schedules-not-rotating-on-gap-based-schedules\/","og_locale":"en_GB","og_type":"article","og_title":"On-call schedules not rotating on gap-based schedules - Spike&#039;s blog","og_description":"On March 25, 2026, a user reported that their on-call schedule was not rotating correctly. The person who had just finished their shift remained shown as on-call, even though the next shift hadn&#8217;t started yet and nobody was supposed to be on-call during that gap. We identified the root cause, deployed a fix, and on-call [&hellip;]","og_url":"https:\/\/blog.spike.sh\/on-call-schedules-not-rotating-on-gap-based-schedules\/","og_site_name":"Spike&#039;s blog","article_published_time":"2026-03-25T16:39:09+00:00","article_modified_time":"2026-04-03T15:32:05+00:00","og_image":[{"width":1040,"height":564,"url":"https:\/\/blog.spike.sh\/wp-content\/uploads\/2026\/03\/postmortem-on-call-gaps.png","type":"image\/png"}],"author":"Damanpreet","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Damanpreet","Estimated reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.spike.sh\/on-call-schedules-not-rotating-on-gap-based-schedules\/#article","isPartOf":{"@id":"https:\/\/blog.spike.sh\/on-call-schedules-not-rotating-on-gap-based-schedules\/"},"author":{"name":"Damanpreet","@id":"https:\/\/blog.spike.sh\/#\/schema\/person\/4bc971837058eacf02e9ef12fb625155"},"headline":"On-call schedules not rotating on gap-based schedules","datePublished":"2026-03-25T16:39:09+00:00","dateModified":"2026-04-03T15:32:05+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.spike.sh\/on-call-schedules-not-rotating-on-gap-based-schedules\/"},"wordCount":551,"commentCount":0,"image":{"@id":"https:\/\/blog.spike.sh\/on-call-schedules-not-rotating-on-gap-based-schedules\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.spike.sh\/wp-content\/uploads\/2026\/03\/postmortem-on-call-gaps.png","articleSection":["Postmortem"],"inLanguage":"en-GB","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blog.spike.sh\/on-call-schedules-not-rotating-on-gap-based-schedules\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blog.spike.sh\/on-call-schedules-not-rotating-on-gap-based-schedules\/","url":"https:\/\/blog.spike.sh\/on-call-schedules-not-rotating-on-gap-based-schedules\/","name":"On-call schedules not rotating on gap-based schedules - Spike&#039;s blog","isPartOf":{"@id":"https:\/\/blog.spike.sh\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.spike.sh\/on-call-schedules-not-rotating-on-gap-based-schedules\/#primaryimage"},"image":{"@id":"https:\/\/blog.spike.sh\/on-call-schedules-not-rotating-on-gap-based-schedules\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.spike.sh\/wp-content\/uploads\/2026\/03\/postmortem-on-call-gaps.png","datePublished":"2026-03-25T16:39:09+00:00","dateModified":"2026-04-03T15:32:05+00:00","author":{"@id":"https:\/\/blog.spike.sh\/#\/schema\/person\/4bc971837058eacf02e9ef12fb625155"},"breadcrumb":{"@id":"https:\/\/blog.spike.sh\/on-call-schedules-not-rotating-on-gap-based-schedules\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.spike.sh\/on-call-schedules-not-rotating-on-gap-based-schedules\/"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/blog.spike.sh\/on-call-schedules-not-rotating-on-gap-based-schedules\/#primaryimage","url":"https:\/\/blog.spike.sh\/wp-content\/uploads\/2026\/03\/postmortem-on-call-gaps.png","contentUrl":"https:\/\/blog.spike.sh\/wp-content\/uploads\/2026\/03\/postmortem-on-call-gaps.png","width":1040,"height":564,"caption":"Spike.sh postmortem on on-call schedules not rotating for gaps"},{"@type":"BreadcrumbList","@id":"https:\/\/blog.spike.sh\/on-call-schedules-not-rotating-on-gap-based-schedules\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blog.spike.sh\/"},{"@type":"ListItem","position":2,"name":"On-call schedules not rotating on gap-based schedules"}]},{"@type":"WebSite","@id":"https:\/\/blog.spike.sh\/#website","url":"https:\/\/blog.spike.sh\/","name":"Spike&#039;s blog","description":"Learnings and opinions in a changing world","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.spike.sh\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Person","@id":"https:\/\/blog.spike.sh\/#\/schema\/person\/4bc971837058eacf02e9ef12fb625155","name":"Damanpreet","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/secure.gravatar.com\/avatar\/9a938d08ab9251a99e241686ddce63028cca486f4937fffad851519903da88d3?s=96&d=robohash&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/9a938d08ab9251a99e241686ddce63028cca486f4937fffad851519903da88d3?s=96&d=robohash&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/9a938d08ab9251a99e241686ddce63028cca486f4937fffad851519903da88d3?s=96&d=robohash&r=g","caption":"Damanpreet"},"url":"https:\/\/blog.spike.sh\/author\/daman50ab08d672\/"}]}},"modified_by":"Sreekar","jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/blog.spike.sh\/wp-content\/uploads\/2026\/03\/postmortem-on-call-gaps.png","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pfMe4Q-1rY","jetpack-related-posts":[{"id":4515,"url":"https:\/\/blog.spike.sh\/postmortem-on-call-system-discrepancy\/","url_meta":{"origin":5578,"position":0},"title":"Postmortem of On-Call System Discrepancy","author":"Damanpreet","date":"4th December, 2025","format":false,"excerpt":"On December 4th, 2025, we identified a critical discrepancy between displayed on-call schedules and actual alert routing for weekly rotations. This postmortem details how a recent bug fix exposed months of underlying system misalignment, our investigation process, and key lessons.","rel":"","context":"In &quot;Postmortem&quot;","block_context":{"text":"Postmortem","link":"https:\/\/blog.spike.sh\/category\/postmortem\/"},"img":{"alt_text":"blog cover postmortem of on-call system discrepancy","src":"https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2025\/12\/Postmoretem.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2025\/12\/Postmoretem.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2025\/12\/Postmoretem.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2025\/12\/Postmoretem.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":1841,"url":"https:\/\/blog.spike.sh\/oncall-schedules-everything-you-need-to-know\/","url_meta":{"origin":5578,"position":1},"title":"On-Call Schedules: Everything You Need to Know","author":"Sreekar","date":"18th June, 2025","format":false,"excerpt":"I use Slack daily. It works perfectly fine. Outages rarely happen. Even if they happen, they are resolved quickly. And this is the same for many other tools. But how are they all doing it\u2014keeping services running and resolving issues quickly? Their secret lies in On-Call Schedules. On-call schedules make\u2026","rel":"","context":"In &quot;Oncall&quot;","block_context":{"text":"Oncall","link":"https:\/\/blog.spike.sh\/category\/incident-management\/oncall\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2025\/06\/On-call-schedules-everything-you-need-to-knwo.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2025\/06\/On-call-schedules-everything-you-need-to-knwo.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2025\/06\/On-call-schedules-everything-you-need-to-knwo.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2025\/06\/On-call-schedules-everything-you-need-to-knwo.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":4023,"url":"https:\/\/blog.spike.sh\/jsm-review-oncall-2026\/","url_meta":{"origin":5578,"position":2},"title":"Jira Service Management (JSM) Review for On-Call Management (2026)","author":"Sreekar","date":"9th November, 2025","format":false,"excerpt":"As OpsGenie sunsets, is JSM the answer? This Jira Service Management (JSM) Review for on-call explores its features, reveals critical gaps, and introduces a more flexible, affordable alternative for your migration.","rel":"","context":"In &quot;JSM&quot;","block_context":{"text":"JSM","link":"https:\/\/blog.spike.sh\/category\/comparison\/jsm\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2025\/11\/Basics-of-Incident-Management-13.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2025\/11\/Basics-of-Incident-Management-13.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2025\/11\/Basics-of-Incident-Management-13.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2025\/11\/Basics-of-Incident-Management-13.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2025\/11\/Basics-of-Incident-Management-13.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2025\/11\/Basics-of-Incident-Management-13.png?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":299,"url":"https:\/\/blog.spike.sh\/how-we-redesigned-spike-on-call-feature\/","url_meta":{"origin":5578,"position":3},"title":"Behind the Redesign of Spike.sh On-call","author":"Kaushik","date":"5th April, 2021","format":false,"excerpt":"BackgroundUser researchThe solution - Layers!Creating on-call schedule Other improvementsConclusion Background We recently released the biggest overhaul to one of the core features of Spike.sh - On-call schedules. Software teams use on-call schedules to designate first responders who will handle issues when they occur. User research Initially, we released a simple\u2026","rel":"","context":"In &quot;Building Spike&quot;","block_context":{"text":"Building Spike","link":"https:\/\/blog.spike.sh\/category\/building-spike\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2021\/04\/New-Oncall-2-.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2021\/04\/New-Oncall-2-.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2021\/04\/New-Oncall-2-.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2021\/04\/New-Oncall-2-.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2021\/04\/New-Oncall-2-.png?resize=1050%2C600&ssl=1 3x"},"classes":[]},{"id":4478,"url":"https:\/\/blog.spike.sh\/introducing-a-more-flexible-oncall-schedule\/","url_meta":{"origin":5578,"position":4},"title":"Introducing a More Flexible On-Call Schedule","author":"Kaushik","date":"3rd December, 2025","format":false,"excerpt":"We are introducing new on-call features: Add Gaps to on-call, Scheduled Layers, Handoff Days, and more.","rel":"","context":"In &quot;Announcement&quot;","block_context":{"text":"Announcement","link":"https:\/\/blog.spike.sh\/category\/announcement\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2025\/12\/background-46-3.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2025\/12\/background-46-3.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2025\/12\/background-46-3.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2025\/12\/background-46-3.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":2149,"url":"https:\/\/blog.spike.sh\/pagerduty-review-for-oncall-management\/","url_meta":{"origin":5578,"position":5},"title":"PagerDuty Review for On-Call Management (2026)","author":"Sreekar","date":"1st July, 2025","format":false,"excerpt":"If you're not sure whether to pick PagerDuty for on-call management, this review will help you decide. I signed up for PagerDuty, created and edited on-call schedules, studied on-call dashboard, and created on-call overrides. Overall, I evaluated PagerDuty's on-call management across 5 key criteria. You'll discover what these criteria are\u2026","rel":"","context":"In &quot;PagerDuty&quot;","block_context":{"text":"PagerDuty","link":"https:\/\/blog.spike.sh\/category\/comparison\/pagerduty\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2025\/07\/PagerDuty-Review-for-On-Call-Management-2025-1.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2025\/07\/PagerDuty-Review-for-On-Call-Management-2025-1.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2025\/07\/PagerDuty-Review-for-On-Call-Management-2025-1.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2025\/07\/PagerDuty-Review-for-On-Call-Management-2025-1.png?resize=700%2C400&ssl=1 2x"},"classes":[]}],"_links":{"self":[{"href":"https:\/\/blog.spike.sh\/wp-json\/wp\/v2\/posts\/5578","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.spike.sh\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.spike.sh\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.spike.sh\/wp-json\/wp\/v2\/users\/263547071"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.spike.sh\/wp-json\/wp\/v2\/comments?post=5578"}],"version-history":[{"count":18,"href":"https:\/\/blog.spike.sh\/wp-json\/wp\/v2\/posts\/5578\/revisions"}],"predecessor-version":[{"id":5722,"href":"https:\/\/blog.spike.sh\/wp-json\/wp\/v2\/posts\/5578\/revisions\/5722"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.spike.sh\/wp-json\/wp\/v2\/media\/5723"}],"wp:attachment":[{"href":"https:\/\/blog.spike.sh\/wp-json\/wp\/v2\/media?parent=5578"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.spike.sh\/wp-json\/wp\/v2\/categories?post=5578"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.spike.sh\/wp-json\/wp\/v2\/tags?post=5578"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}