Files
rspade_system/storage-broken/rsx-tmp/babel_df5c9efac86147294cfc845822e1058a.js
root 78553d4edf Fix code quality violations for publish
Remove unused blade settings pages not linked from UI
Convert remaining frontend pages to SPA actions
Convert settings user_settings and general to SPA actions
Convert settings profile pages to SPA actions
Convert contacts and projects add/edit pages to SPA actions
Convert clients add/edit page to SPA action with loading pattern
Refactor component scoped IDs from $id to $sid
Fix jqhtml comment syntax and implement universal error component system
Update all application code to use new unified error system
Remove all backwards compatibility - unified error system complete
Phase 5: Remove old response classes
Phase 3-4: Ajax response handler sends new format, old helpers deprecated
Phase 2: Add client-side unified error foundation
Phase 1: Add server-side unified error foundation
Add unified Ajax error response system with constants

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 04:35:01 +00:00

112 lines
14 KiB
JavaScript
Executable File

"use strict";
class Filter_Bar extends Component {
on_ready() {
this.active_filters = {};
// Populate status options if provided
if (this.args.status_options) {
const $status = this.$sid('status');
this.args.status_options.forEach(opt => {
$status.append($('<option>').val(opt.value).text(opt.label));
});
}
// Date range change handler
this.$sid('date_range').on('change', e => {
if (e.target.value === 'custom') {
this.$sid('custom_dates').show();
this.$sid('custom_dates_end').show();
} else {
this.$sid('custom_dates').hide();
this.$sid('custom_dates_end').hide();
}
});
// Search with debounce
let search_timeout;
this.$sid('search').$.find('input').on('input', e => {
clearTimeout(search_timeout);
search_timeout = setTimeout(() => {
this.add_filter('search', e.target.value);
}, 500);
});
// Apply button
this.$sid('apply_btn').on('click', () => {
this.apply_filters();
});
// Clear button
this.$sid('clear_btn').on('click', () => {
this.clear_filters();
});
}
add_filter(key, value) {
if (value) {
this.active_filters[key] = value;
} else {
delete this.active_filters[key];
}
this.update_filter_display();
}
apply_filters() {
// Collect all filter values
const search = this.$sid('search').get_value();
const status = this.$sid('status').val();
const date_range = this.$sid('date_range').val();
this.active_filters = {};
if (search) this.active_filters.search = search;
if (status) this.active_filters.status = status;
if (date_range) this.active_filters.date_range = date_range;
if (date_range === 'custom') {
const start_date = this.$sid('start_date').get_value();
const end_date = this.$sid('end_date').get_value();
if (start_date) this.active_filters.start_date = start_date;
if (end_date) this.active_filters.end_date = end_date;
}
this.update_filter_display();
if (this.args.on_apply) {
this.args.on_apply(this.active_filters);
}
}
clear_filters() {
this.active_filters = {};
this.$sid('search').set_value('');
this.$sid('status').val('');
this.$sid('date_range').val('');
this.$sid('custom_dates').hide();
this.$sid('custom_dates_end').hide();
this.update_filter_display();
if (this.args.on_clear) {
this.args.on_clear();
}
}
update_filter_display() {
const count = Object.keys(this.active_filters).length;
const $container = this.$sid('active_filters');
const $tags = this.$sid('filter_tags');
if (count === 0) {
$container.hide();
return;
}
$container.show();
$tags.empty();
for (let key in this.active_filters) {
const $tag = $('<span>').addClass('badge bg-primary me-1');
$tag.text(`${key}: ${this.active_filters[key]}`);
const $remove = $('<i>').addClass('bi bi-x-circle ms-1').css('cursor', 'pointer');
$remove.on('click', () => {
delete this.active_filters[key];
this.update_filter_display();
this.apply_filters();
});
$tag.append($remove);
$tags.append($tag);
}
}
get_filters() {
return this.active_filters;
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGaWx0ZXJfQmFyIiwiSnFodG1sX0NvbXBvbmVudCIsIm9uX3JlYWR5IiwiYWN0aXZlX2ZpbHRlcnMiLCJhcmdzIiwic3RhdHVzX29wdGlvbnMiLCIkc3RhdHVzIiwiJGlkIiwiZm9yRWFjaCIsIm9wdCIsImFwcGVuZCIsIiQiLCJ2YWwiLCJ2YWx1ZSIsInRleHQiLCJsYWJlbCIsIm9uIiwiZSIsInRhcmdldCIsInNob3ciLCJoaWRlIiwic2VhcmNoX3RpbWVvdXQiLCJmaW5kIiwiY2xlYXJUaW1lb3V0Iiwic2V0VGltZW91dCIsImFkZF9maWx0ZXIiLCJhcHBseV9maWx0ZXJzIiwiY2xlYXJfZmlsdGVycyIsImtleSIsInVwZGF0ZV9maWx0ZXJfZGlzcGxheSIsInNlYXJjaCIsImdldF92YWx1ZSIsInN0YXR1cyIsImRhdGVfcmFuZ2UiLCJzdGFydF9kYXRlIiwiZW5kX2RhdGUiLCJvbl9hcHBseSIsInNldF92YWx1ZSIsIm9uX2NsZWFyIiwiY291bnQiLCJPYmplY3QiLCJrZXlzIiwibGVuZ3RoIiwiJGNvbnRhaW5lciIsIiR0YWdzIiwiZW1wdHkiLCIkdGFnIiwiYWRkQ2xhc3MiLCIkcmVtb3ZlIiwiY3NzIiwiZ2V0X2ZpbHRlcnMiXSwic291cmNlcyI6WyJyc3gvdGhlbWUvY29tcG9uZW50cy9fYXJjaGl2ZWQvdW5maW5pc2hlZC9GaWx0ZXJfQmFyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNsYXNzIEZpbHRlcl9CYXIgZXh0ZW5kcyBKcWh0bWxfQ29tcG9uZW50IHtcbiAgICBvbl9yZWFkeSgpIHtcbiAgICAgICAgdGhpcy5hY3RpdmVfZmlsdGVycyA9IHt9O1xuXG4gICAgICAgIC8vIFBvcHVsYXRlIHN0YXR1cyBvcHRpb25zIGlmIHByb3ZpZGVkXG4gICAgICAgIGlmICh0aGlzLmFyZ3Muc3RhdHVzX29wdGlvbnMpIHtcbiAgICAgICAgICAgIGNvbnN0ICRzdGF0dXMgPSB0aGlzLiRpZCgnc3RhdHVzJyk7XG4gICAgICAgICAgICB0aGlzLmFyZ3Muc3RhdHVzX29wdGlvbnMuZm9yRWFjaChvcHQgPT4ge1xuICAgICAgICAgICAgICAgICRzdGF0dXMuYXBwZW5kKCQoJzxvcHRpb24+JykudmFsKG9wdC52YWx1ZSkudGV4dChvcHQubGFiZWwpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRGF0ZSByYW5nZSBjaGFuZ2UgaGFuZGxlclxuICAgICAgICB0aGlzLiRpZCgnZGF0ZV9yYW5nZScpLm9uKCdjaGFuZ2UnLCAoZSkgPT4ge1xuICAgICAgICAgICAgaWYgKGUudGFyZ2V0LnZhbHVlID09PSAnY3VzdG9tJykge1xuICAgICAgICAgICAgICAgIHRoaXMuJGlkKCdjdXN0b21fZGF0ZXMnKS5zaG93KCk7XG4gICAgICAgICAgICAgICAgdGhpcy4kaWQoJ2N1c3RvbV9kYXRlc19lbmQnKS5zaG93KCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuJGlkKCdjdXN0b21fZGF0ZXMnKS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy4kaWQoJ2N1c3RvbV9kYXRlc19lbmQnKS5oaWRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFNlYXJjaCB3aXRoIGRlYm91bmNlXG4gICAgICAgIGxldCBzZWFyY2hfdGltZW91dDtcbiAgICAgICAgdGhpcy4kaWQoJ3NlYXJjaCcpLiQuZmluZCgnaW5wdXQnKS5vbignaW5wdXQnLCAoZSkgPT4ge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHNlYXJjaF90aW1lb3V0KTtcbiAgICAgICAgICAgIHNlYXJjaF90aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRfZmlsdGVyKCdzZWFyY2gnLCBlLnRhcmdldC52YWx1ZSk7XG4gICAgICAgICAgICB9LCA1MDApO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBBcHBseSBidXR0b25cbiAgICAgICAgdGhpcy4kaWQoJ2FwcGx5X2J0bicpLm9uKCdjbGljaycsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYXBwbHlfZmlsdGVycygpO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBDbGVhciBidXR0b25cbiAgICAgICAgdGhpcy4kaWQoJ2NsZWFyX2J0bicpLm9uKCdjbGljaycsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJfZmlsdGVycygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhZGRfZmlsdGVyKGtleSwgdmFsdWUpIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZV9maWx0ZXJzW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLmFjdGl2ZV9maWx0ZXJzW2tleV07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51cGRhdGVfZmlsdGVyX2Rpc3BsYXkoKTtcbiAgICB9XG5cbiAgICBhcHBseV9maWx0ZXJzKCkge1xuICAgICAgICAvLyBDb2xsZWN0IGFsbCBmaWx0ZXIgdmFsdWVzXG4gICAgICAgIGNvbnN0IHNlYXJjaCA9IHRoaXMuJGlkKCdzZWFyY2gnKS5nZXRfdmFsdWUoKTtcbiAgICAgICAgY29uc3Qgc3RhdHVzID0gdGhpcy4kaWQoJ3N0YXR1cycpLnZhbCgpO1xuICAgICAgICBjb25zdCBkYXRlX3JhbmdlID0gdGhpcy4kaWQoJ2RhdGVfcmFuZ2UnKS52YWwoKTtcblxuICAgICAgICB0aGlzLmFjdGl2ZV9maWx0ZXJzID0ge307XG5cbiAgICAgICAgaWYgKHNlYXJjaCkgdGhpcy5hY3RpdmVfZmlsdGVycy5zZWFyY2ggPSBzZWFyY2g7XG4gICAgICAgIGlmIChzdGF0dXMpIHRoaXMuYWN0aXZlX2ZpbHRlcnMuc3RhdHVzID0gc3RhdHVzO1xuICAgICAgICBpZiAoZGF0ZV9yYW5nZSkgdGhpcy5hY3RpdmVfZmlsdGVycy5kYXRlX3JhbmdlID0gZGF0ZV9yYW5nZTtcblxuICAgICAgICBpZiAoZGF0ZV9yYW5nZSA9PT0gJ2N1c3RvbScpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0X2RhdGUgPSB0aGlzLiRpZCgnc3RhcnRfZGF0ZScpLmdldF92YWx1ZSgpO1xuICAgICAgICAgICAgY29uc3QgZW5kX2RhdGUgPSB0aGlzLiRpZCgnZW5kX2RhdGUnKS5nZXRfdmFsdWUoKTtcbiAgICAgICAgICAgIGlmIChzdGFydF9kYXRlKSB0aGlzLmFjdGl2ZV9maWx0ZXJzLnN0YXJ0X2RhdGUgPSBzdGFydF9kYXRlO1xuICAgICAgICAgICAgaWYgKGVuZF9kYXRlKSB0aGlzLmFjdGl2ZV9maWx0ZXJzLmVuZF9kYXRlID0gZW5kX2RhdGU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZV9maWx0ZXJfZGlzcGxheSgpO1xuXG4gICAgICAgIGlmICh0aGlzLmFyZ3Mub25fYXBwbHkpIHtcbiAgICAgICAgICAgIHRoaXMuYXJncy5vbl9hcHBseSh0aGlzLmFjdGl2ZV9maWx0ZXJzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNsZWFyX2ZpbHRlcnMoKSB7XG4gICAgICAgIHRoaXMuYWN0aXZlX2ZpbHRlcnMgPSB7fTtcblxuICAgICAgICB0aGlzLiRpZCgnc2VhcmNoJykuc2V0X3ZhbHVlKCcnKTtcbiAgICAgICAgdGhpcy4kaWQoJ3N0YXR1cycpLnZhbCgnJyk7XG4gICAgICAgIHRoaXMuJGlkKCdkYXRlX3JhbmdlJykudmFsKCcnKTtcbiAgICAgICAgdGhpcy4kaWQoJ2N1c3RvbV9kYXRlcycpLmhpZGUoKTtcbiAgICAgICAgdGhpcy4kaWQoJ2N1c3RvbV9kYXRlc19lbmQnKS5oaWRlKCk7XG5cbiAgICAgICAgdGhpcy51cGRhdGVfZmlsdGVyX2Rpc3BsYXkoKTtcblxuICAgICAgICBpZiAodGhpcy5hcmdzLm9uX2NsZWFyKSB7XG4gICAgICAgICAgICB0aGlzLmFyZ3Mub25fY2xlYXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVwZGF0ZV9maWx0ZXJfZGlzcGxheSgpIHtcbiAgICAgICAgY29uc3QgY291bnQgPSBPYmplY3Qua2V5cyh0aGlzLmFjdGl2ZV9maWx0ZXJzKS5sZW5ndGg7XG4gICAgICAgIGNvbnN0ICRjb250YWluZXIgPSB0aGlzLiRpZCgnYWN0aXZlX2ZpbHRlcnMnKTtcbiAgICAgICAgY29uc3QgJHRhZ3MgPSB0aGlzLiRpZCgnZmlsdGVyX3RhZ3MnKTtcblxuICAgICAgICBpZiAoY291bnQgPT09IDApIHtcbiAgICAgICAgICAgICRjb250YWluZXIuaGlkZSgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgJGNvbnRhaW5lci5zaG93KCk7XG4gICAgICAgICR0YWdzLmVtcHR5KCk7XG5cbiAgICAgICAgZm9yIChsZXQga2V5IGluIHRoaXMuYWN0aXZlX2ZpbHRlcnMpIHtcbiAgICAgICAgICAgIGNvbnN0ICR0YWcgPSAkKCc8c3Bhbj4nKS5hZGRDbGFzcygnYmFkZ2UgYmctcHJpbWFyeSBtZS0xJyk7XG4gICAgICAgICAgICAkdGFnLnRleHQoYCR7a2V5fTogJHt0aGlzLmFjdGl2ZV9maWx0ZXJzW2tleV19YCk7XG5cbiAgICAgICAgICAgIGNvbnN0ICRyZW1vdmUgPSAkKCc8aT4nKS5hZGRDbGFzcygnYmkgYmkteC1jaXJjbGUgbXMtMScpLmNzcygnY3Vyc29yJywgJ3BvaW50ZXInKTtcbiAgICAgICAgICAgICRyZW1vdmUub24oJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLmFjdGl2ZV9maWx0ZXJzW2tleV07XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVfZmlsdGVyX2Rpc3BsYXkoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFwcGx5X2ZpbHRlcnMoKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAkdGFnLmFwcGVuZCgkcmVtb3ZlKTtcbiAgICAgICAgICAgICR0YWdzLmFwcGVuZCgkdGFnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldF9maWx0ZXJzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmVfZmlsdGVycztcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7O0FBQUEsTUFBTUEsVUFBVSxTQUFTQyxnQkFBZ0IsQ0FBQztFQUN0Q0MsUUFBUUEsQ0FBQSxFQUFHO0lBQ1AsSUFBSSxDQUFDQyxjQUFjLEdBQUcsQ0FBQyxDQUFDOztJQUV4QjtJQUNBLElBQUksSUFBSSxDQUFDQyxJQUFJLENBQUNDLGNBQWMsRUFBRTtNQUMxQixNQUFNQyxPQUFPLEdBQUcsSUFBSSxDQUFDQyxHQUFHLENBQUMsUUFBUSxDQUFDO01BQ2xDLElBQUksQ0FBQ0gsSUFBSSxDQUFDQyxjQUFjLENBQUNHLE9BQU8sQ0FBQ0MsR0FBRyxJQUFJO1FBQ3BDSCxPQUFPLENBQUNJLE1BQU0sQ0FBQ0MsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDQyxHQUFHLENBQUNILEdBQUcsQ0FBQ0ksS0FBSyxDQUFDLENBQUNDLElBQUksQ0FBQ0wsR0FBRyxDQUFDTSxLQUFLLENBQUMsQ0FBQztNQUNoRSxDQUFDLENBQUM7SUFDTjs7SUFFQTtJQUNBLElBQUksQ0FBQ1IsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDUyxFQUFFLENBQUMsUUFBUSxFQUFHQyxDQUFDLElBQUs7TUFDdkMsSUFBSUEsQ0FBQyxDQUFDQyxNQUFNLENBQUNMLEtBQUssS0FBSyxRQUFRLEVBQUU7UUFDN0IsSUFBSSxDQUFDTixHQUFHLENBQUMsY0FBYyxDQUFDLENBQUNZLElBQUksQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQ1osR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUNZLElBQUksQ0FBQyxDQUFDO01BQ3ZDLENBQUMsTUFBTTtRQUNILElBQUksQ0FBQ1osR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDYSxJQUFJLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUNiLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDYSxJQUFJLENBQUMsQ0FBQztNQUN2QztJQUNKLENBQUMsQ0FBQzs7SUFFRjtJQUNBLElBQUlDLGNBQWM7SUFDbEIsSUFBSSxDQUFDZCxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUNJLENBQUMsQ0FBQ1csSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDTixFQUFFLENBQUMsT0FBTyxFQUFHQyxDQUFDLElBQUs7TUFDbERNLFlBQVksQ0FBQ0YsY0FBYyxDQUFDO01BQzVCQSxjQUFjLEdBQUdHLFVBQVUsQ0FBQyxNQUFNO1FBQzlCLElBQUksQ0FBQ0MsVUFBVSxDQUFDLFFBQVEsRUFBRVIsQ0FBQyxDQUFDQyxNQUFNLENBQUNMLEtBQUssQ0FBQztNQUM3QyxDQUFDLEVBQUUsR0FBRyxDQUFDO0lBQ1gsQ0FBQyxDQUFDOztJQUVGO0lBQ0EsSUFBSSxDQUFDTixHQUFHLENBQUMsV0FBVyxDQUFDLENBQUNTLEVBQUUsQ0FBQyxPQUFPLEVBQUUsTUFBTTtNQUNwQyxJQUFJLENBQUNVLGFBQWEsQ0FBQyxDQUFDO0lBQ3hCLENBQUMsQ0FBQzs7SUFFRjtJQUNBLElBQUksQ0FBQ25CLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQ1MsRUFBRSxDQUFDLE9BQU8sRUFBRSxNQUFNO01BQ3BDLElBQUksQ0FBQ1csYUFBYSxDQUFDLENBQUM7SUFDeEIsQ0FBQyxDQUFDO0VBQ047RUFFQUYsVUFBVUEsQ0FBQ0csR0FBRyxFQUFFZixLQUFLLEVBQUU7SUFDbkIsSUFBSUEsS0FBSyxFQUFFO01BQ1AsSUFBSSxDQUFDVixjQUFjLENBQUN5QixHQUFHLENBQUMsR0FBR2YsS0FBSztJQUNwQyxDQUFDLE1BQU07TUFDSCxPQUFPLElBQUksQ0FBQ1YsY0FBYyxDQUFDeUIsR0FBRyxDQUFDO0lBQ25DO0lBQ0EsSUFBSSxDQUFDQyxxQkFBcUIsQ0FBQyxDQUFDO0VBQ2hDO0VBRUFILGFBQWFBLENBQUEsRUFBRztJQUNaO0lBQ0EsTUFBTUksTUFBTSxHQUFHLElBQUksQ0FBQ3ZCLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQ3dCLFNBQVMsQ0FBQyxDQUFDO0lBQzdDLE1BQU1DLE1BQU0sR0FBRyxJQUFJLENBQUN6QixHQUFHLENBQUMsUUFBUSxDQUFDLENBQUNLLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZDLE1BQU1xQixVQUFVLEdBQUcsSUFBSSxDQUFDMUIsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDSyxHQUFHLENBQUMsQ0FBQztJQUUvQyxJQUFJLENBQUNULGNBQWMsR0FBRyxDQUFDLENBQUM7SUFFeEIsSUFBSTJCLE1BQU0sRUFBRSxJQUFJLENBQUMzQixjQUFjLENBQUMyQixNQUFNLEdBQUdBLE1BQU07SUFDL0MsSUFBSUUsTUFBTSxFQUFFLElBQUksQ0FBQzdCLGNBQWMsQ0FBQzZCLE1BQU0sR0FBR0EsTUFBTTtJQUMvQyxJQUFJQyxVQUFVLEVBQUUsSUFBSSxDQUFDOUIsY0FBYyxDQUFDOEIsVUFBVSxHQUFHQSxVQUFVO0lBRTNELElBQUlBLFVBQVUsS0FBSyxRQUFRLEVBQUU7TUFDekIsTUFBTUMsVUFBVSxHQUFHLElBQUksQ0FBQzNCLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQ3dCLFNBQVMsQ0FBQyxDQUFDO01BQ3JELE1BQU1JLFFBQVEsR0FBRyxJQUFJLENBQUM1QixHQUFHLENBQUMsVUFBVSxDQUFDLENBQUN3QixTQUFTLENBQUMsQ0FBQztNQUNqRCxJQUFJRyxVQUFVLEVBQUUsSUFBSSxDQUFDL0IsY0FBYyxDQUFDK0IsVUFBVSxHQUFHQSxVQUFVO01BQzNELElBQUlDLFFBQVEsRUFBRSxJQUFJLENBQUNoQyxjQUFjLENBQUNnQyxRQUFRLEdBQUdBLFFBQVE7SUFDekQ7SUFFQSxJQUFJLENBQUNOLHFCQUFxQixDQUFDLENBQUM7SUFFNUIsSUFBSSxJQUFJLENBQUN6QixJQUFJLENBQUNnQyxRQUFRLEVBQUU7TUFDcEIsSUFBSSxDQUFDaEMsSUFBSSxDQUFDZ0MsUUFBUSxDQUFDLElBQUksQ0FBQ2pDLGNBQWMsQ0FBQztJQUMzQztFQUNKO0VBRUF3QixhQUFhQSxDQUFBLEVBQUc7SUFDWixJQUFJLENBQUN4QixjQUFjLEdBQUcsQ0FBQyxDQUFDO0lBRXhCLElBQUksQ0FBQ0ksR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDOEIsU0FBUyxDQUFDLEVBQUUsQ0FBQztJQUNoQyxJQUFJLENBQUM5QixHQUFHLENBQUMsUUFBUSxDQUFDLENBQUNLLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDMUIsSUFBSSxDQUFDTCxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUNLLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDOUIsSUFBSSxDQUFDTCxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUNhLElBQUksQ0FBQyxDQUFDO0lBQy9CLElBQUksQ0FBQ2IsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUNhLElBQUksQ0FBQyxDQUFDO0lBRW5DLElBQUksQ0FBQ1MscUJBQXFCLENBQUMsQ0FBQztJQUU1QixJQUFJLElBQUksQ0FBQ3pCLElBQUksQ0FBQ2tDLFFBQVEsRUFBRTtNQUNwQixJQUFJLENBQUNsQyxJQUFJLENBQUNrQyxRQUFRLENBQUMsQ0FBQztJQUN4QjtFQUNKO0VBRUFULHFCQUFxQkEsQ0FBQSxFQUFHO0lBQ3BCLE1BQU1VLEtBQUssR0FBR0MsTUFBTSxDQUFDQyxJQUFJLENBQUMsSUFBSSxDQUFDdEMsY0FBYyxDQUFDLENBQUN1QyxNQUFNO0lBQ3JELE1BQU1DLFVBQVUsR0FBRyxJQUFJLENBQUNwQyxHQUFHLENBQUMsZ0JBQWdCLENBQUM7SUFDN0MsTUFBTXFDLEtBQUssR0FBRyxJQUFJLENBQUNyQyxHQUFHLENBQUMsYUFBYSxDQUFDO0lBRXJDLElBQUlnQyxLQUFLLEtBQUssQ0FBQyxFQUFFO01BQ2JJLFVBQVUsQ0FBQ3ZCLElBQUksQ0FBQyxDQUFDO01BQ2pCO0lBQ0o7SUFFQXVCLFVBQVUsQ0FBQ3hCLElBQUksQ0FBQyxDQUFDO0lBQ2pCeUIsS0FBSyxDQUFDQyxLQUFLLENBQUMsQ0FBQztJQUViLEtBQUssSUFBSWpCLEdBQUcsSUFBSSxJQUFJLENBQUN6QixjQUFjLEVBQUU7TUFDakMsTUFBTTJDLElBQUksR0FBR25DLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQ29DLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQztNQUMxREQsSUFBSSxDQUFDaEMsSUFBSSxDQUFDLEdBQUdjLEdBQUcsS0FBSyxJQUFJLENBQUN6QixjQUFjLENBQUN5QixHQUFHLENBQUMsRUFBRSxDQUFDO01BRWhELE1BQU1vQixPQUFPLEdBQUdyQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUNvQyxRQUFRLENBQUMscUJBQXFCLENBQUMsQ0FBQ0UsR0FBRyxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUM7TUFDakZELE9BQU8sQ0FBQ2hDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsTUFBTTtRQUN0QixPQUFPLElBQUksQ0FBQ2IsY0FBYyxDQUFDeUIsR0FBRyxDQUFDO1FBQy9CLElBQUksQ0FBQ0MscUJBQXFCLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUNILGFBQWEsQ0FBQyxDQUFDO01BQ3hCLENBQUMsQ0FBQztNQUVGb0IsSUFBSSxDQUFDcEMsTUFBTSxDQUFDc0MsT0FBTyxDQUFDO01BQ3BCSixLQUFLLENBQUNsQyxNQUFNLENBQUNvQyxJQUFJLENBQUM7SUFDdEI7RUFDSjtFQUVBSSxXQUFXQSxDQUFBLEVBQUc7SUFDVixPQUFPLElBQUksQ0FBQy9DLGNBQWM7RUFDOUI7QUFDSiIsImlnbm9yZUxpc3QiOltdfQ==