From 187882985136af8ef2261599a5e79a1b52bf4f33 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Tue, 5 Mar 2024 08:55:23 +1100 Subject: [PATCH 1/9] Fixes for signature display --- resources/views/email/admin/generic_email.blade.php | 2 +- resources/views/email/client/generic.blade.php | 2 +- resources/views/email/template/dark.blade.php | 2 +- resources/views/email/template/light.blade.php | 4 +--- 4 files changed, 4 insertions(+), 6 deletions(-) diff --git a/resources/views/email/admin/generic_email.blade.php b/resources/views/email/admin/generic_email.blade.php index f55411056e41..409b8e2ebdaf 100644 --- a/resources/views/email/admin/generic_email.blade.php +++ b/resources/views/email/admin/generic_email.blade.php @@ -30,7 +30,7 @@ @endisset @isset($signature) -

{{ $signature }}

+

{!! nl2br($signature) !!}

@endisset @endcomponent \ No newline at end of file diff --git a/resources/views/email/client/generic.blade.php b/resources/views/email/client/generic.blade.php index a4f8684fdc36..9f400d1049fb 100644 --- a/resources/views/email/client/generic.blade.php +++ b/resources/views/email/client/generic.blade.php @@ -48,7 +48,7 @@ @endisset @isset($signature) -

{{ nl2br($signature) }}

+

{!! nl2br($signature) !!}

@endisset @endcomponent diff --git a/resources/views/email/template/dark.blade.php b/resources/views/email/template/dark.blade.php index faaf2b30acce..1a234c6bf321 100644 --- a/resources/views/email/template/dark.blade.php +++ b/resources/views/email/template/dark.blade.php @@ -10,7 +10,7 @@

- {!! $signature !!} +{!! nl2br($signature) !!}

@endif diff --git a/resources/views/email/template/light.blade.php b/resources/views/email/template/light.blade.php index 01b2cb06839b..ae9781fdee31 100644 --- a/resources/views/email/template/light.blade.php +++ b/resources/views/email/template/light.blade.php @@ -9,9 +9,7 @@ @if($signature)

-

- {!! $signature !!} -

+

{!! nl2br($signature) !!}

@endif @isset($email_preferences) From e7ae3f81cb96c1bbd7ce32f715884f56b51080bf Mon Sep 17 00:00:00 2001 From: David Bomba Date: Tue, 5 Mar 2024 11:27:53 +1100 Subject: [PATCH 2/9] Catch no refund date --- app/Services/Template/TemplateService.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Services/Template/TemplateService.php b/app/Services/Template/TemplateService.php index 9ab4eaa25d35..37bd568f8ee5 100644 --- a/app/Services/Template/TemplateService.php +++ b/app/Services/Template/TemplateService.php @@ -717,7 +717,7 @@ class TemplateService return collect($payment->refund_meta) ->map(function ($refund) use ($payment) { - $date = \Carbon\Carbon::parse($refund['date'])->addSeconds($payment->client->timezone_offset()); + $date = \Carbon\Carbon::parse($refund['date'] ?? $payment->date)->addSeconds($payment->client->timezone_offset()); $date = $this->translateDate($date, $payment->client->date_format(), $payment->client->locale()); $entity = ctrans('texts.invoice'); From a43bd9c6de89dac13bd138143f3d6d304b08eaa2 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Tue, 5 Mar 2024 13:58:26 +1100 Subject: [PATCH 3/9] Updates for reports --- app/Export/CSV/BaseExport.php | 300 ++++++- app/Export/CSV/ClientExport.php | 2 +- app/Export/CSV/CreditExport.php | 40 +- app/Export/CSV/ExpenseExport.php | 55 +- app/Export/CSV/InvoiceExport.php | 2 +- app/Export/CSV/InvoiceItemExport.php | 8 +- app/Export/CSV/PaymentExport.php | 2 + app/Export/CSV/PurchaseOrderExport.php | 4 +- app/Export/CSV/PurchaseOrderItemExport.php | 4 +- app/Export/CSV/QuoteExport.php | 4 +- app/Export/CSV/QuoteItemExport.php | 4 +- app/Export/CSV/RecurringInvoiceExport.php | 4 +- app/Export/CSV/TaskExport.php | 30 +- app/Export/CSV/VendorExport.php | 2 +- .../Requests/Report/GenericReportRequest.php | 5 +- app/Livewire/PdfSlot.php | 1 + composer.lock | 745 ++++++++---------- .../Export/ReportCsvGenerationTest.php | 5 + 18 files changed, 781 insertions(+), 436 deletions(-) diff --git a/app/Export/CSV/BaseExport.php b/app/Export/CSV/BaseExport.php index debee0f7dd38..9806ba2f8c74 100644 --- a/app/Export/CSV/BaseExport.php +++ b/app/Export/CSV/BaseExport.php @@ -826,8 +826,15 @@ class BaseExport return ''; } - - public function applyFilters(Builder $query): Builder + + /** + * Apply Product Filters + * + * @param Builder $query + * + * @return Builder + */ + public function applyProductFilters(Builder $query): Builder { if(isset($this->input['product_key'])) { @@ -844,8 +851,16 @@ class BaseExport return $query; } - - protected function addClientFilter($query, $clients): Builder + + /** + * Add Client Filter + * + * @param Builder $query + * @param string $clients + * + * @return Builder + */ + protected function addClientFilter(Builder $query, string $clients): Builder { if(is_string($clients)) { $clients = explode(',', $clients); @@ -862,8 +877,16 @@ class BaseExport return $query; } - - protected function addVendorFilter($query, $vendors): Builder + + /** + * Add Vendor Filter + * + * @param Builder $query + * @param string $vendors + * + * @return Builder + */ + protected function addVendorFilter(Builder$query, string $vendors): Builder { if(is_string($vendors)) { @@ -878,8 +901,16 @@ class BaseExport return $query; } - - protected function addProjectFilter($query, $projects): Builder + + /** + * AddProjectFilter + * + * @param Builder $query + * @param string $projects + * + * @return Builder + */ + protected function addProjectFilter(Builder $query, string $projects): Builder { if(is_string($projects)) { @@ -894,8 +925,16 @@ class BaseExport return $query; } - - protected function addCategoryFilter($query, $expense_categories): Builder + + /** + * Add Category Filter + * + * @param Builder $query + * @param string $expense_categories + * + * @return Builder + */ + protected function addCategoryFilter(Builder $query, string $expense_categories): Builder { if(is_string($expense_categories)) { @@ -911,13 +950,230 @@ class BaseExport return $query; } - - protected function addInvoiceStatusFilter($query, $status): Builder + + /** + * Add Payment Status Filters + * + * @param Builder $query + * @param string $status + * + * @return Builder + */ + protected function addPaymentStatusFilters(Builder $query, string $status): Builder { $status_parameters = explode(',', $status); - if(in_array('all', $status_parameters)) { + if(in_array('all', $status_parameters) || count($status_parameters) == 0) { + return $query; + } + + $query->where(function ($query) use ($status_parameters) { + $payment_filters = []; + + if (in_array('pending', $status_parameters)) { + $payment_filters[] = Payment::STATUS_PENDING; + } + + if (in_array('cancelled', $status_parameters)) { + $payment_filters[] = Payment::STATUS_CANCELLED; + } + + if (in_array('failed', $status_parameters)) { + $payment_filters[] = Payment::STATUS_FAILED; + } + + if (in_array('completed', $status_parameters)) { + $payment_filters[] = Payment::STATUS_COMPLETED; + } + + if (in_array('partially_refunded', $status_parameters)) { + $payment_filters[] = Payment::STATUS_PARTIALLY_REFUNDED; + } + + if (in_array('refunded', $status_parameters)) { + $payment_filters[] = Payment::STATUS_REFUNDED; + } + + if (count($payment_filters) > 0) { + $query->whereIn('status_id', $payment_filters); + } + + if(in_array('partially_unapplied', $status_parameters)) { + $query->whereColumn('amount', '>', 'applied')->where('refunded', 0); + } + }); + + return $query; + + } + + /** + * Add RecurringInvoice Status Filter + * + * @param Builder $query + * @param string $status + * + * @return Builder + */ + protected function addRecurringInvoiceStatusFilter(Builder $query, string $status): Builder + { + + $status_parameters = explode(',', $status); + + if (in_array('all', $status_parameters) || count($status_parameters) == 0){ + return $query; + } + + $recurring_filters = []; + + if (in_array('active', $status_parameters)) { + $recurring_filters[] = RecurringInvoice::STATUS_ACTIVE; + } + + if (in_array('paused', $status_parameters)) { + $recurring_filters[] = RecurringInvoice::STATUS_PAUSED; + } + + if (in_array('completed', $status_parameters)) { + $recurring_filters[] = RecurringInvoice::STATUS_COMPLETED; + } + + if (count($recurring_filters) >= 1) { + return $query->whereIn('status_id', $recurring_filters); + } + + return $query; + + } + /** + * Add QuoteStatus Filter + * + * @param Builder $query + * @param string $status + * + * @return Builder + */ + protected function addQuoteStatusFilter(Builder $query, string $status): Builder + { + + $status_parameters = explode(',', $status); + + if (in_array('all', $status_parameters)) { + return $query; + } + + $query->where(function ($query) use ($status_parameters) { + if (in_array('sent', $status_parameters)) { + $query->orWhere(function ($q) { + $q->where('status_id', Quote::STATUS_SENT) + ->whereNull('due_date') + ->orWhere('due_date', '>=', now()->toDateString()); + }); + } + + $quote_filters = []; + + if (in_array('draft', $status_parameters)) { + $quote_filters[] = Quote::STATUS_DRAFT; + } + + if (in_array('approved', $status_parameters)) { + $quote_filters[] = Quote::STATUS_APPROVED; + } + + if (count($quote_filters) > 0) { + $query->orWhereIn('status_id', $quote_filters); + } + + if (in_array('expired', $status_parameters)) { + $query->orWhere(function ($q) { + $q->where('status_id', Quote::STATUS_SENT) + ->whereNotNull('due_date') + ->where('due_date', '<=', now()->toDateString()); + }); + } + + if (in_array('upcoming', $status_parameters)) { + $query->orWhere(function ($q) { + $q->where('status_id', Quote::STATUS_SENT) + ->where('due_date', '>=', now()->toDateString()) + ->orderBy('due_date', 'DESC'); + }); + } + + if(in_array('converted', $status_parameters)) { + $query->orWhere(function ($q) { + $q->whereNotNull('invoice_id'); + }); + } + }); + + return $query; + } + + /** + * Add PurchaseOrder Status Filter + * + * @param Builder $query + * @param string $status + * + * @return Builder + */ + protected function addPurchaseOrderStatusFilter(Builder $query, string $status): Builder + { + + $status_parameters = explode(',', $status); + + if (in_array('all', $status_parameters) || count($status_parameters) == 0) { + return $query; + } + + $query->where(function ($query) use ($status_parameters) { + $po_status = []; + + if (in_array('draft', $status_parameters)) { + $po_status[] = PurchaseOrder::STATUS_DRAFT; + } + + if (in_array('sent', $status_parameters)) { + $query->orWhere(function ($q) { + $q->where('status_id', PurchaseOrder::STATUS_SENT) + ->whereNull('due_date') + ->orWhere('due_date', '>=', now()->toDateString()); + }); + } + + if (in_array('accepted', $status_parameters)) { + $po_status[] = PurchaseOrder::STATUS_ACCEPTED; + } + + if (in_array('cancelled', $status_parameters)) { + $po_status[] = PurchaseOrder::STATUS_CANCELLED; + } + + if (count($po_status) >= 1) { + $query->whereIn('status_id', $po_status); + } + }); + + return $query; + + } + + /** + * Add Invoice Status Filter + * + * @param Builder $query + * @param string $status + * @return Builder + */ + protected function addInvoiceStatusFilter(Builder $query, string $status): Builder + { + + $status_parameters = explode(',', $status); + + if(in_array('all', $status_parameters) || count($status_parameters) == 0) { return $query; } @@ -942,6 +1198,10 @@ class BaseExport $invoice_filters[] = Invoice::STATUS_PARTIAL; } + if (in_array('cancelled', $status_parameters)) { + $invoice_filters[] = Invoice::STATUS_CANCELLED; + } + if (count($invoice_filters) > 0) { $nested->whereIn('status_id', $invoice_filters); } @@ -965,15 +1225,19 @@ class BaseExport return $query; } - - protected function addDateRange($query) + + /** + * Add Date Range + * + * @param Builder $query + * @return Builder + */ + protected function addDateRange(Builder $query): Builder { - $query = $this->applyFilters($query); + $query = $this->applyProductFilters($query); $date_range = $this->input['date_range']; - nlog($date_range); - if (array_key_exists('date_key', $this->input) && strlen($this->input['date_key']) > 1) { $this->date_key = $this->input['date_key']; } diff --git a/app/Export/CSV/ClientExport.php b/app/Export/CSV/ClientExport.php index e10e6e9cec45..87171a8dc8e2 100644 --- a/app/Export/CSV/ClientExport.php +++ b/app/Export/CSV/ClientExport.php @@ -127,7 +127,7 @@ class ClientExport extends BaseExport $query = Client::query()->with('contacts') ->withTrashed() ->where('company_id', $this->company->id) - ->where('is_deleted', 0); + ->where('is_deleted', $this->input['include_deleted']); $query = $this->addDateRange($query); diff --git a/app/Export/CSV/CreditExport.php b/app/Export/CSV/CreditExport.php index 0973f7a70473..9d2885c7d107 100644 --- a/app/Export/CSV/CreditExport.php +++ b/app/Export/CSV/CreditExport.php @@ -103,10 +103,14 @@ class CreditExport extends BaseExport ->withTrashed() ->with('client') ->where('company_id', $this->company->id) - ->where('is_deleted', 0); + ->where('is_deleted', $this->input['include_deleted']); $query = $this->addDateRange($query); + if($this->input['status'] ?? false) { + $query = $this->addCreditStatusFilter($query, $this->input['status']); + } + if($this->input['document_email_attachment'] ?? false) { $this->queueDocuments($query); } @@ -162,6 +166,40 @@ class CreditExport extends BaseExport return $this->decorateAdvancedFields($credit, $entity); } + public function addCreditStatusFilter($query, $status): Builder + { + + $status_parameters = explode(',', $status); + + if (in_array('all', $status_parameters)) { + return $query; + } + + $credit_filters = []; + + if (in_array('draft', $status_parameters)) { + $credit_filters[] = Credit::STATUS_DRAFT; + } + + if (in_array('sent', $status_parameters)) { + $credit_filters[] = Credit::STATUS_SENT; + } + + if (in_array('partial', $status_parameters)) { + $credit_filters[] = Credit::STATUS_PARTIAL; + } + + if (in_array('applied', $status_parameters)) { + $credit_filters[] = Credit::STATUS_APPLIED; + } + + if (count($credit_filters) >= 1) { + $query->whereIn('status_id', $credit_filters); + } + + return $query; + } + private function decorateAdvancedFields(Credit $credit, array $entity): array { // if (in_array('country_id', $this->input['report_keys'])) { diff --git a/app/Export/CSV/ExpenseExport.php b/app/Export/CSV/ExpenseExport.php index b5be8b4f8458..8713a4b2db69 100644 --- a/app/Export/CSV/ExpenseExport.php +++ b/app/Export/CSV/ExpenseExport.php @@ -83,10 +83,14 @@ class ExpenseExport extends BaseExport ->with('client') ->withTrashed() ->where('company_id', $this->company->id) - ->where('is_deleted', 0); + ->where('is_deleted', $this->input['include_deleted']); $query = $this->addDateRange($query); + if($this->input['status'] ?? false) { + $query = $this->addExpenseStatusFilter($query, $this->input['status']); + } + if(isset($this->input['clients'])) { $query = $this->addClientFilter($query, $this->input['clients']); } @@ -152,6 +156,55 @@ class ExpenseExport extends BaseExport return $this->decorateAdvancedFields($expense, $entity); } + protected function addExpenseStatusFilter($query, $status): Builder + { + + $status_parameters = explode(',', $status); + + if (in_array('all', $status_parameters)) { + return $query; + } + + $query->where(function ($query) use ($status_parameters) { + if (in_array('logged', $status_parameters)) { + $query->orWhere(function ($query) { + $query->where('amount', '>', 0) + ->whereNull('invoice_id') + ->whereNull('payment_date') + ->where('should_be_invoiced', false); + }); + } + + if (in_array('pending', $status_parameters)) { + $query->orWhere(function ($query) { + $query->where('should_be_invoiced', true) + ->whereNull('invoice_id'); + }); + } + + if (in_array('invoiced', $status_parameters)) { + $query->orWhere(function ($query) { + $query->whereNotNull('invoice_id'); + }); + } + + if (in_array('paid', $status_parameters)) { + $query->orWhere(function ($query) { + $query->whereNotNull('payment_date'); + }); + } + + if (in_array('unpaid', $status_parameters)) { + $query->orWhere(function ($query) { + $query->whereNull('payment_date'); + }); + } + + }); + + return $query; + } + private function decorateAdvancedFields(Expense $expense, array $entity): array { // if (in_array('expense.currency_id', $this->input['report_keys'])) { diff --git a/app/Export/CSV/InvoiceExport.php b/app/Export/CSV/InvoiceExport.php index 546b3689ba90..9c81fadab634 100644 --- a/app/Export/CSV/InvoiceExport.php +++ b/app/Export/CSV/InvoiceExport.php @@ -58,7 +58,7 @@ class InvoiceExport extends BaseExport ->withTrashed() ->with('client') ->where('company_id', $this->company->id) - ->where('is_deleted', 0); + ->where('is_deleted', $this->input['include_deleted']); $query = $this->addDateRange($query); diff --git a/app/Export/CSV/InvoiceItemExport.php b/app/Export/CSV/InvoiceItemExport.php index b701b2faa2f1..54cfd22bc3ef 100644 --- a/app/Export/CSV/InvoiceItemExport.php +++ b/app/Export/CSV/InvoiceItemExport.php @@ -71,11 +71,15 @@ class InvoiceItemExport extends BaseExport ->withTrashed() ->with('client') ->where('company_id', $this->company->id) - ->where('is_deleted', 0); + ->where('is_deleted', $this->input['include_deleted']); $query = $this->addDateRange($query); - $query = $this->applyFilters($query); + if($this->input['status'] ?? false) { + $query = $this->addInvoiceStatusFilter($query, $this->input['status']); + } + + $query = $this->applyProductFilters($query); if($this->input['document_email_attachment'] ?? false) { $this->queueDocuments($query); diff --git a/app/Export/CSV/PaymentExport.php b/app/Export/CSV/PaymentExport.php index 93550f9545c3..ee217d1c6a9a 100644 --- a/app/Export/CSV/PaymentExport.php +++ b/app/Export/CSV/PaymentExport.php @@ -61,6 +61,8 @@ class PaymentExport extends BaseExport $query = $this->addDateRange($query); + $query = $this->addPaymentStatusFilters($query, $this->input['status'] ?? ''); + if($this->input['document_email_attachment'] ?? false) { $this->queueDocuments($query); } diff --git a/app/Export/CSV/PurchaseOrderExport.php b/app/Export/CSV/PurchaseOrderExport.php index f1fa4501510b..a43702b035fb 100644 --- a/app/Export/CSV/PurchaseOrderExport.php +++ b/app/Export/CSV/PurchaseOrderExport.php @@ -104,10 +104,12 @@ class PurchaseOrderExport extends BaseExport ->withTrashed() ->with('vendor') ->where('company_id', $this->company->id) - ->where('is_deleted', 0); + ->where('is_deleted', $this->input['include_deleted']); $query = $this->addDateRange($query); + $query = $this->addPurchaseOrderStatusFilter($query, $this->input['status'] ?? ''); + if($this->input['document_email_attachment'] ?? false) { $this->queueDocuments($query); } diff --git a/app/Export/CSV/PurchaseOrderItemExport.php b/app/Export/CSV/PurchaseOrderItemExport.php index ccdd7a8dc27d..a4f9cc5de795 100644 --- a/app/Export/CSV/PurchaseOrderItemExport.php +++ b/app/Export/CSV/PurchaseOrderItemExport.php @@ -63,10 +63,12 @@ class PurchaseOrderItemExport extends BaseExport $query = PurchaseOrder::query() ->withTrashed() ->with('vendor')->where('company_id', $this->company->id) - ->where('is_deleted', 0); + ->where('is_deleted', $this->input['include_deleted']); $query = $this->addDateRange($query); + $query = $this->addPurchaseOrderStatusFilter($query, $this->input['status'] ?? ''); + if($this->input['document_email_attachment'] ?? false) { $this->queueDocuments($query); } diff --git a/app/Export/CSV/QuoteExport.php b/app/Export/CSV/QuoteExport.php index 1242ba19f6de..195354419c67 100644 --- a/app/Export/CSV/QuoteExport.php +++ b/app/Export/CSV/QuoteExport.php @@ -65,10 +65,12 @@ class QuoteExport extends BaseExport ->withTrashed() ->with('client') ->where('company_id', $this->company->id) - ->where('is_deleted', 0); + ->where('is_deleted', $this->input['include_deleted']); $query = $this->addDateRange($query); + $query = $this->addQuoteStatusFilter($query, $this->input['status'] ?? ''); + if($this->input['document_email_attachment'] ?? false) { $this->queueDocuments($query); } diff --git a/app/Export/CSV/QuoteItemExport.php b/app/Export/CSV/QuoteItemExport.php index bdb16061d53b..e4be3a330bdd 100644 --- a/app/Export/CSV/QuoteItemExport.php +++ b/app/Export/CSV/QuoteItemExport.php @@ -66,10 +66,12 @@ class QuoteItemExport extends BaseExport $query = Quote::query() ->withTrashed() ->with('client')->where('company_id', $this->company->id) - ->where('is_deleted', 0); + ->where('is_deleted', $this->input['include_deleted']); $query = $this->addDateRange($query); + $query = $this->addQuoteStatusFilter($query, $this->input['status'] ?? ''); + if($this->input['document_email_attachment'] ?? false) { $this->queueDocuments($query); } diff --git a/app/Export/CSV/RecurringInvoiceExport.php b/app/Export/CSV/RecurringInvoiceExport.php index 20545468fd26..c56338c6b3e1 100644 --- a/app/Export/CSV/RecurringInvoiceExport.php +++ b/app/Export/CSV/RecurringInvoiceExport.php @@ -57,10 +57,12 @@ class RecurringInvoiceExport extends BaseExport ->withTrashed() ->with('client') ->where('company_id', $this->company->id) - ->where('is_deleted', 0); + ->where('is_deleted', $this->input['include_deleted']); $query = $this->addDateRange($query); + $query = $this->addRecurringInvoiceStatusFilter($query, $this->input['status'] ?? ''); + return $query; } diff --git a/app/Export/CSV/TaskExport.php b/app/Export/CSV/TaskExport.php index 7e91a32dadad..861ea68bb6df 100644 --- a/app/Export/CSV/TaskExport.php +++ b/app/Export/CSV/TaskExport.php @@ -68,7 +68,7 @@ class TaskExport extends BaseExport $query = Task::query() ->withTrashed() ->where('company_id', $this->company->id) - ->where('is_deleted', 0); + ->where('is_deleted', $this->input['include_deleted']); $query = $this->addDateRange($query); @@ -202,6 +202,34 @@ class TaskExport extends BaseExport } } + + /** + * Add Task Status Filter + * + * @param Builder $query + * @param string $status + * @return Builder + */ + protected function addTaskStatusFilter(Builder $query, string $status): Builder + { + + $status_parameters = explode(',', $status); + + if (in_array('all', $status_parameters) || count($status_parameters) == 0) { + return $query; + } + + if (in_array('invoiced', $status_parameters)) { + $query->whereNotNull('invoice_id'); + } + + if (in_array('uninvoiced', $status_parameters)) { + $query->whereNull('invoice_id'); + } + + return $query; + + } private function decorateAdvancedFields(Task $task, array $entity): array { diff --git a/app/Export/CSV/VendorExport.php b/app/Export/CSV/VendorExport.php index a98ee80f825a..86fef19f7336 100644 --- a/app/Export/CSV/VendorExport.php +++ b/app/Export/CSV/VendorExport.php @@ -62,7 +62,7 @@ class VendorExport extends BaseExport $query = Vendor::query()->with('contacts') ->withTrashed() ->where('company_id', $this->company->id) - ->where('is_deleted', 0); + ->where('is_deleted', $this->input['include_deleted']); $query = $this->addDateRange($query); diff --git a/app/Http/Requests/Report/GenericReportRequest.php b/app/Http/Requests/Report/GenericReportRequest.php index 6a0bdfad51f4..c7c94a8fd86e 100644 --- a/app/Http/Requests/Report/GenericReportRequest.php +++ b/app/Http/Requests/Report/GenericReportRequest.php @@ -37,7 +37,8 @@ class GenericReportRequest extends Request 'start_date' => 'bail|required_if:date_range,custom|nullable|date', 'report_keys' => 'present|array', 'send_email' => 'required|bool', - 'document_email_attachment' => 'sometimes|bool' + 'document_email_attachment' => 'sometimes|bool', + 'include_deleted' => 'required|bool', // 'status' => 'sometimes|string|nullable|in:all,draft,sent,viewed,paid,unpaid,overdue', ]; } @@ -63,6 +64,8 @@ class GenericReportRequest extends Request $input['end_date'] = null; } + $input['include_deleted'] = array_key_exists('include_deleted', $input) ? filter_var($input['include_deleted'], FILTER_VALIDATE_BOOLEAN) : false; + $input['user_id'] = auth()->user()->id; $this->replace($input); diff --git a/app/Livewire/PdfSlot.php b/app/Livewire/PdfSlot.php index 047f8cc812d2..1322d6a9664f 100644 --- a/app/Livewire/PdfSlot.php +++ b/app/Livewire/PdfSlot.php @@ -149,6 +149,7 @@ class PdfSlot extends Component return render('components.livewire.pdf-slot', [ 'invitation' => $this->invitation, 'entity' => $this->entity, + 'settings' => $this->settings, 'data' => $this->invitation->company->settings, 'entity_type' => $this->entity_type, 'products' => $this->getProducts(), diff --git a/composer.lock b/composer.lock index 473b8697effe..6777702814ae 100644 --- a/composer.lock +++ b/composer.lock @@ -707,16 +707,16 @@ }, { "name": "amphp/socket", - "version": "v2.2.3", + "version": "v2.2.4", "source": { "type": "git", "url": "https://github.com/amphp/socket.git", - "reference": "40c80bdc67a9f975ecb5f4083e3c84ef9f23eace" + "reference": "4223324c627cc26d44800630411e64856d3344bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/amphp/socket/zipball/40c80bdc67a9f975ecb5f4083e3c84ef9f23eace", - "reference": "40c80bdc67a9f975ecb5f4083e3c84ef9f23eace", + "url": "https://api.github.com/repos/amphp/socket/zipball/4223324c627cc26d44800630411e64856d3344bc", + "reference": "4223324c627cc26d44800630411e64856d3344bc", "shasum": "" }, "require": { @@ -779,7 +779,7 @@ ], "support": { "issues": "https://github.com/amphp/socket/issues", - "source": "https://github.com/amphp/socket/tree/v2.2.3" + "source": "https://github.com/amphp/socket/tree/v2.2.4" }, "funding": [ { @@ -787,7 +787,7 @@ "type": "github" } ], - "time": "2024-02-13T21:03:09+00:00" + "time": "2024-02-28T15:56:06+00:00" }, { "name": "amphp/sync", @@ -918,16 +918,16 @@ }, { "name": "apimatic/core", - "version": "0.3.5", + "version": "0.3.6", "source": { "type": "git", "url": "https://github.com/apimatic/core-lib-php.git", - "reference": "0ccfb70c2b01bde35c30b451546ab6510193a992" + "reference": "2236fa751f265397d97ab2cb8a5c72641cf9480f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/apimatic/core-lib-php/zipball/0ccfb70c2b01bde35c30b451546ab6510193a992", - "reference": "0ccfb70c2b01bde35c30b451546ab6510193a992", + "url": "https://api.github.com/repos/apimatic/core-lib-php/zipball/2236fa751f265397d97ab2cb8a5c72641cf9480f", + "reference": "2236fa751f265397d97ab2cb8a5c72641cf9480f", "shasum": "" }, "require": { @@ -965,9 +965,9 @@ ], "support": { "issues": "https://github.com/apimatic/core-lib-php/issues", - "source": "https://github.com/apimatic/core-lib-php/tree/0.3.5" + "source": "https://github.com/apimatic/core-lib-php/tree/0.3.6" }, - "time": "2024-01-17T13:46:44+00:00" + "time": "2024-02-26T04:16:28+00:00" }, { "name": "apimatic/core-interfaces", @@ -1227,25 +1227,25 @@ }, { "name": "awobaz/compoships", - "version": "2.2.3", + "version": "2.3.0", "source": { "type": "git", "url": "https://github.com/topclaudy/compoships.git", - "reference": "404901e2ebd6794f70d2710a56edd4b0c500ce1f" + "reference": "25a4ed2aeeb22033cd951e71e661eed235d58698" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/topclaudy/compoships/zipball/404901e2ebd6794f70d2710a56edd4b0c500ce1f", - "reference": "404901e2ebd6794f70d2710a56edd4b0c500ce1f", + "url": "https://api.github.com/repos/topclaudy/compoships/zipball/25a4ed2aeeb22033cd951e71e661eed235d58698", + "reference": "25a4ed2aeeb22033cd951e71e661eed235d58698", "shasum": "" }, "require": { - "fakerphp/faker": "^1.18", - "illuminate/database": ">=5.6 <11.0" + "illuminate/database": ">=5.6 <12.0" }, "require-dev": { "ext-sqlite3": "*", - "phpunit/phpunit": "^6.0|^8.0|^9.0" + "fakerphp/faker": "^1.18", + "phpunit/phpunit": "^6.0|^8.0|^9.0|^10.0" }, "suggest": { "awobaz/blade-active": "Blade directives for the Laravel 'Active' package", @@ -1277,7 +1277,7 @@ ], "support": { "issues": "https://github.com/topclaudy/compoships/issues", - "source": "https://github.com/topclaudy/compoships/tree/2.2.3" + "source": "https://github.com/topclaudy/compoships/tree/2.3.0" }, "funding": [ { @@ -1285,7 +1285,7 @@ "type": "custom" } ], - "time": "2023-02-22T16:52:55+00:00" + "time": "2024-02-28T22:21:15+00:00" }, { "name": "aws/aws-crt-php", @@ -1343,16 +1343,16 @@ }, { "name": "aws/aws-sdk-php", - "version": "3.299.1", + "version": "3.300.10", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "a0f87b8e8bfb9afd0ffd702fcda556b465eee457" + "reference": "b24bf7882fed0ef029996dcdcba6c273b69db8fe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/a0f87b8e8bfb9afd0ffd702fcda556b465eee457", - "reference": "a0f87b8e8bfb9afd0ffd702fcda556b465eee457", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/b24bf7882fed0ef029996dcdcba6c273b69db8fe", + "reference": "b24bf7882fed0ef029996dcdcba6c273b69db8fe", "shasum": "" }, "require": { @@ -1432,9 +1432,9 @@ "support": { "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", "issues": "https://github.com/aws/aws-sdk-php/issues", - "source": "https://github.com/aws/aws-sdk-php/tree/3.299.1" + "source": "https://github.com/aws/aws-sdk-php/tree/3.300.10" }, - "time": "2024-02-16T19:08:34+00:00" + "time": "2024-03-04T19:06:07+00:00" }, { "name": "bacon/bacon-qr-code", @@ -1851,16 +1851,16 @@ }, { "name": "composer/ca-bundle", - "version": "1.4.0", + "version": "1.4.1", "source": { "type": "git", "url": "https://github.com/composer/ca-bundle.git", - "reference": "b66d11b7479109ab547f9405b97205640b17d385" + "reference": "3ce240142f6d59b808dd65c1f52f7a1c252e6cfd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/b66d11b7479109ab547f9405b97205640b17d385", - "reference": "b66d11b7479109ab547f9405b97205640b17d385", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/3ce240142f6d59b808dd65c1f52f7a1c252e6cfd", + "reference": "3ce240142f6d59b808dd65c1f52f7a1c252e6cfd", "shasum": "" }, "require": { @@ -1907,7 +1907,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/ca-bundle/issues", - "source": "https://github.com/composer/ca-bundle/tree/1.4.0" + "source": "https://github.com/composer/ca-bundle/tree/1.4.1" }, "funding": [ { @@ -1923,7 +1923,7 @@ "type": "tidelift" } ], - "time": "2023-12-18T12:05:55+00:00" + "time": "2024-02-23T10:16:52+00:00" }, { "name": "dasprid/enum", @@ -2094,82 +2094,6 @@ }, "time": "2022-10-27T11:44:00+00:00" }, - { - "name": "doctrine/annotations", - "version": "2.0.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/annotations.git", - "reference": "e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f", - "reference": "e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^2 || ^3", - "ext-tokenizer": "*", - "php": "^7.2 || ^8.0", - "psr/cache": "^1 || ^2 || ^3" - }, - "require-dev": { - "doctrine/cache": "^2.0", - "doctrine/coding-standard": "^10", - "phpstan/phpstan": "^1.8.0", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "symfony/cache": "^5.4 || ^6", - "vimeo/psalm": "^4.10" - }, - "suggest": { - "php": "PHP 8.0 or higher comes with attributes, a native replacement for annotations" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "Docblock Annotations Parser", - "homepage": "https://www.doctrine-project.org/projects/annotations.html", - "keywords": [ - "annotations", - "docblock", - "parser" - ], - "support": { - "issues": "https://github.com/doctrine/annotations/issues", - "source": "https://github.com/doctrine/annotations/tree/2.0.1" - }, - "time": "2023-02-02T22:02:53+00:00" - }, { "name": "doctrine/cache", "version": "2.2.0", @@ -2265,16 +2189,16 @@ }, { "name": "doctrine/dbal", - "version": "3.8.2", + "version": "3.8.3", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "a19a1d05ca211f41089dffcc387733a6875196cb" + "reference": "db922ba9436b7b18a23d1653a0b41ff2369ca41c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/a19a1d05ca211f41089dffcc387733a6875196cb", - "reference": "a19a1d05ca211f41089dffcc387733a6875196cb", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/db922ba9436b7b18a23d1653a0b41ff2369ca41c", + "reference": "db922ba9436b7b18a23d1653a0b41ff2369ca41c", "shasum": "" }, "require": { @@ -2290,12 +2214,12 @@ "doctrine/coding-standard": "12.0.0", "fig/log-test": "^1", "jetbrains/phpstorm-stubs": "2023.1", - "phpstan/phpstan": "1.10.57", + "phpstan/phpstan": "1.10.58", "phpstan/phpstan-strict-rules": "^1.5", "phpunit/phpunit": "9.6.16", "psalm/plugin-phpunit": "0.18.4", "slevomat/coding-standard": "8.13.1", - "squizlabs/php_codesniffer": "3.8.1", + "squizlabs/php_codesniffer": "3.9.0", "symfony/cache": "^5.4|^6.0|^7.0", "symfony/console": "^4.4|^5.4|^6.0|^7.0", "vimeo/psalm": "4.30.0" @@ -2358,7 +2282,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.8.2" + "source": "https://github.com/doctrine/dbal/tree/3.8.3" }, "funding": [ { @@ -2374,7 +2298,7 @@ "type": "tidelift" } ], - "time": "2024-02-12T18:36:36+00:00" + "time": "2024-03-03T15:55:06+00:00" }, { "name": "doctrine/deprecations", @@ -2516,16 +2440,16 @@ }, { "name": "doctrine/inflector", - "version": "2.0.9", + "version": "2.0.10", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "2930cd5ef353871c821d5c43ed030d39ac8cfe65" + "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/2930cd5ef353871c821d5c43ed030d39ac8cfe65", - "reference": "2930cd5ef353871c821d5c43ed030d39ac8cfe65", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/5817d0659c5b50c9b950feb9af7b9668e2c436bc", + "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc", "shasum": "" }, "require": { @@ -2587,7 +2511,7 @@ ], "support": { "issues": "https://github.com/doctrine/inflector/issues", - "source": "https://github.com/doctrine/inflector/tree/2.0.9" + "source": "https://github.com/doctrine/inflector/tree/2.0.10" }, "funding": [ { @@ -2603,7 +2527,7 @@ "type": "tidelift" } ], - "time": "2024-01-15T18:05:13+00:00" + "time": "2024-02-18T20:23:39+00:00" }, { "name": "doctrine/instantiator", @@ -2882,16 +2806,16 @@ }, { "name": "endroid/qr-code", - "version": "5.0.4", + "version": "5.0.5", "source": { "type": "git", "url": "https://github.com/endroid/qr-code.git", - "reference": "0efd071a3640af323e23c94122fe92cfd5199833" + "reference": "739fc545bfade2470765219dc2a615a6f1e94987" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/endroid/qr-code/zipball/0efd071a3640af323e23c94122fe92cfd5199833", - "reference": "0efd071a3640af323e23c94122fe92cfd5199833", + "url": "https://api.github.com/repos/endroid/qr-code/zipball/739fc545bfade2470765219dc2a615a6f1e94987", + "reference": "739fc545bfade2470765219dc2a615a6f1e94987", "shasum": "" }, "require": { @@ -2945,7 +2869,7 @@ ], "support": { "issues": "https://github.com/endroid/qr-code/issues", - "source": "https://github.com/endroid/qr-code/tree/5.0.4" + "source": "https://github.com/endroid/qr-code/tree/5.0.5" }, "funding": [ { @@ -2953,7 +2877,7 @@ "type": "github" } ], - "time": "2023-12-24T13:47:07+00:00" + "time": "2024-03-03T18:17:54+00:00" }, { "name": "eway/eway-rapid-php", @@ -3455,16 +3379,16 @@ }, { "name": "google/apiclient-services", - "version": "v0.335.0", + "version": "v0.338.0", "source": { "type": "git", "url": "https://github.com/googleapis/google-api-php-client-services.git", - "reference": "3e6cea8f43066378babdf00e718f01c7c55233fd" + "reference": "52aeb042c8d30ac0f98f4051dd4bc523708b1306" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/googleapis/google-api-php-client-services/zipball/3e6cea8f43066378babdf00e718f01c7c55233fd", - "reference": "3e6cea8f43066378babdf00e718f01c7c55233fd", + "url": "https://api.github.com/repos/googleapis/google-api-php-client-services/zipball/52aeb042c8d30ac0f98f4051dd4bc523708b1306", + "reference": "52aeb042c8d30ac0f98f4051dd4bc523708b1306", "shasum": "" }, "require": { @@ -3493,22 +3417,22 @@ ], "support": { "issues": "https://github.com/googleapis/google-api-php-client-services/issues", - "source": "https://github.com/googleapis/google-api-php-client-services/tree/v0.335.0" + "source": "https://github.com/googleapis/google-api-php-client-services/tree/v0.338.0" }, - "time": "2024-02-12T01:08:15+00:00" + "time": "2024-03-03T00:56:15+00:00" }, { "name": "google/auth", - "version": "v1.35.0", + "version": "v1.37.0", "source": { "type": "git", "url": "https://github.com/googleapis/google-auth-library-php.git", - "reference": "6e9c9fd4e2bbd7042f50083076346e4a1eff4e4b" + "reference": "5f16f67375b6f202b857183d7ef4e076acd7d4aa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/googleapis/google-auth-library-php/zipball/6e9c9fd4e2bbd7042f50083076346e4a1eff4e4b", - "reference": "6e9c9fd4e2bbd7042f50083076346e4a1eff4e4b", + "url": "https://api.github.com/repos/googleapis/google-auth-library-php/zipball/5f16f67375b6f202b857183d7ef4e076acd7d4aa", + "reference": "5f16f67375b6f202b857183d7ef4e076acd7d4aa", "shasum": "" }, "require": { @@ -3551,9 +3475,9 @@ "support": { "docs": "https://googleapis.github.io/google-auth-library-php/main/", "issues": "https://github.com/googleapis/google-auth-library-php/issues", - "source": "https://github.com/googleapis/google-auth-library-php/tree/v1.35.0" + "source": "https://github.com/googleapis/google-auth-library-php/tree/v1.37.0" }, - "time": "2024-02-01T20:41:08+00:00" + "time": "2024-02-21T17:03:52+00:00" }, { "name": "graham-campbell/result-type", @@ -4873,16 +4797,16 @@ }, { "name": "invoiceninja/ubl_invoice", - "version": "v2.0.2", + "version": "v2.0.3", "source": { "type": "git", "url": "https://github.com/invoiceninja/UBL_invoice.git", - "reference": "02735339bf89f9a48da7d8b11d991dbe812d713e" + "reference": "ed10f4f5804e6bcce15d0491b5d35c10ea7cd9f1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/invoiceninja/UBL_invoice/zipball/02735339bf89f9a48da7d8b11d991dbe812d713e", - "reference": "02735339bf89f9a48da7d8b11d991dbe812d713e", + "url": "https://api.github.com/repos/invoiceninja/UBL_invoice/zipball/ed10f4f5804e6bcce15d0491b5d35c10ea7cd9f1", + "reference": "ed10f4f5804e6bcce15d0491b5d35c10ea7cd9f1", "shasum": "" }, "require": { @@ -4931,9 +4855,9 @@ "xml invoice" ], "support": { - "source": "https://github.com/invoiceninja/UBL_invoice/tree/v2.0.2" + "source": "https://github.com/invoiceninja/UBL_invoice/tree/v2.0.3" }, - "time": "2024-02-05T02:16:14+00:00" + "time": "2024-02-17T06:34:35+00:00" }, { "name": "jean85/pretty-package-versions", @@ -5060,27 +4984,27 @@ }, { "name": "jms/serializer", - "version": "3.29.1", + "version": "3.30.0", "source": { "type": "git", "url": "https://github.com/schmittjoh/serializer.git", - "reference": "111451f43abb448ce297361a8ab96a9591e848cd" + "reference": "bf1105358123d7c02ee6cad08ea33ab535a09d5e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/serializer/zipball/111451f43abb448ce297361a8ab96a9591e848cd", - "reference": "111451f43abb448ce297361a8ab96a9591e848cd", + "url": "https://api.github.com/repos/schmittjoh/serializer/zipball/bf1105358123d7c02ee6cad08ea33ab535a09d5e", + "reference": "bf1105358123d7c02ee6cad08ea33ab535a09d5e", "shasum": "" }, "require": { - "doctrine/annotations": "^1.14 || ^2.0", "doctrine/instantiator": "^1.3.1 || ^2.0", "doctrine/lexer": "^2.0 || ^3.0", "jms/metadata": "^2.6", - "php": "^7.2 || ^8.0", + "php": "^7.4 || ^8.0", "phpstan/phpdoc-parser": "^1.20" }, "require-dev": { + "doctrine/annotations": "^1.14 || ^2.0", "doctrine/coding-standard": "^12.0", "doctrine/orm": "^2.14 || ^3.0", "doctrine/persistence": "^2.5.2 || ^3.0", @@ -5090,16 +5014,17 @@ "ocramius/proxy-manager": "^1.0 || ^2.0", "phpbench/phpbench": "^1.0", "phpstan/phpstan": "^1.0.2", - "phpunit/phpunit": "^8.5.21 || ^9.0 || ^10.0", + "phpunit/phpunit": "^9.0 || ^10.0", "psr/container": "^1.0 || ^2.0", - "symfony/dependency-injection": "^3.4 || ^4.0 || ^5.0 || ^6.0 || ^7.0", - "symfony/expression-language": "^3.2 || ^4.0 || ^5.0 || ^6.0 || ^7.0", - "symfony/filesystem": "^4.2 || ^5.0 || ^6.0 || ^7.0", - "symfony/form": "^3.4 || ^4.0 || ^5.0 || ^6.0 || ^7.0", - "symfony/translation": "^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0", - "symfony/uid": "^5.1 || ^6.0 || ^7.0", - "symfony/validator": "^3.1.9 || ^4.0 || ^5.0 || ^6.0 || ^7.0", - "symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^6.0 || ^7.0", + "rector/rector": "^0.19.0", + "symfony/dependency-injection": "^5.4 || ^6.0 || ^7.0", + "symfony/expression-language": "^5.4 || ^6.0 || ^7.0", + "symfony/filesystem": "^5.4 || ^6.0 || ^7.0", + "symfony/form": "^5.4 || ^6.0 || ^7.0", + "symfony/translation": "^5.4 || ^6.0 || ^7.0", + "symfony/uid": "^5.4 || ^6.0 || ^7.0", + "symfony/validator": "^5.4 || ^6.0 || ^7.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0", "twig/twig": "^1.34 || ^2.4 || ^3.0" }, "suggest": { @@ -5144,7 +5069,7 @@ ], "support": { "issues": "https://github.com/schmittjoh/serializer/issues", - "source": "https://github.com/schmittjoh/serializer/tree/3.29.1" + "source": "https://github.com/schmittjoh/serializer/tree/3.30.0" }, "funding": [ { @@ -5152,7 +5077,7 @@ "type": "github" } ], - "time": "2023-12-14T15:25:09+00:00" + "time": "2024-02-24T14:12:14+00:00" }, { "name": "josemmo/facturae-php", @@ -5370,16 +5295,16 @@ }, { "name": "laravel/framework", - "version": "v10.44.0", + "version": "v10.46.0", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "1199dbe361787bbe9648131a79f53921b4148cf6" + "reference": "5e95946a8283a8d5c015035793f9c61c297e937f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/1199dbe361787bbe9648131a79f53921b4148cf6", - "reference": "1199dbe361787bbe9648131a79f53921b4148cf6", + "url": "https://api.github.com/repos/laravel/framework/zipball/5e95946a8283a8d5c015035793f9c61c297e937f", + "reference": "5e95946a8283a8d5c015035793f9c61c297e937f", "shasum": "" }, "require": { @@ -5572,20 +5497,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2024-02-13T16:01:16+00:00" + "time": "2024-02-27T16:46:54+00:00" }, { "name": "laravel/prompts", - "version": "v0.1.15", + "version": "v0.1.16", "source": { "type": "git", "url": "https://github.com/laravel/prompts.git", - "reference": "d814a27514d99b03c85aa42b22cfd946568636c1" + "reference": "ca6872ab6aec3ab61db3a61f83a6caf764ec7781" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/prompts/zipball/d814a27514d99b03c85aa42b22cfd946568636c1", - "reference": "d814a27514d99b03c85aa42b22cfd946568636c1", + "url": "https://api.github.com/repos/laravel/prompts/zipball/ca6872ab6aec3ab61db3a61f83a6caf764ec7781", + "reference": "ca6872ab6aec3ab61db3a61f83a6caf764ec7781", "shasum": "" }, "require": { @@ -5627,9 +5552,9 @@ ], "support": { "issues": "https://github.com/laravel/prompts/issues", - "source": "https://github.com/laravel/prompts/tree/v0.1.15" + "source": "https://github.com/laravel/prompts/tree/v0.1.16" }, - "time": "2023-12-29T22:37:42+00:00" + "time": "2024-02-21T19:25:27+00:00" }, { "name": "laravel/serializable-closure", @@ -6278,16 +6203,16 @@ }, { "name": "league/csv", - "version": "9.14.0", + "version": "9.15.0", "source": { "type": "git", "url": "https://github.com/thephpleague/csv.git", - "reference": "34bf0df7340b60824b9449b5c526fcc3325070d5" + "reference": "fa7e2441c0bc9b2360f4314fd6c954f7ff40d435" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/csv/zipball/34bf0df7340b60824b9449b5c526fcc3325070d5", - "reference": "34bf0df7340b60824b9449b5c526fcc3325070d5", + "url": "https://api.github.com/repos/thephpleague/csv/zipball/fa7e2441c0bc9b2360f4314fd6c954f7ff40d435", + "reference": "fa7e2441c0bc9b2360f4314fd6c954f7ff40d435", "shasum": "" }, "require": { @@ -6302,12 +6227,12 @@ "ext-xdebug": "*", "friendsofphp/php-cs-fixer": "^v3.22.0", "phpbench/phpbench": "^1.2.15", - "phpstan/phpstan": "^1.10.50", + "phpstan/phpstan": "^1.10.57", "phpstan/phpstan-deprecation-rules": "^1.1.4", "phpstan/phpstan-phpunit": "^1.3.15", "phpstan/phpstan-strict-rules": "^1.5.2", - "phpunit/phpunit": "^10.5.3", - "symfony/var-dumper": "^6.4.0" + "phpunit/phpunit": "^10.5.9", + "symfony/var-dumper": "^6.4.2" }, "suggest": { "ext-dom": "Required to use the XMLConverter and the HTMLConverter classes", @@ -6363,7 +6288,7 @@ "type": "github" } ], - "time": "2023-12-29T07:34:53+00:00" + "time": "2024-02-20T20:00:00+00:00" }, { "name": "league/flysystem", @@ -7021,16 +6946,16 @@ }, { "name": "livewire/livewire", - "version": "v3.4.4", + "version": "v3.4.6", "source": { "type": "git", "url": "https://github.com/livewire/livewire.git", - "reference": "c0489d4a76382f6dcf6e2702112f86aa089d0c8d" + "reference": "7e7d638183b34fb61621455891869f5abfd55a82" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/livewire/livewire/zipball/c0489d4a76382f6dcf6e2702112f86aa089d0c8d", - "reference": "c0489d4a76382f6dcf6e2702112f86aa089d0c8d", + "url": "https://api.github.com/repos/livewire/livewire/zipball/7e7d638183b34fb61621455891869f5abfd55a82", + "reference": "7e7d638183b34fb61621455891869f5abfd55a82", "shasum": "" }, "require": { @@ -7084,7 +7009,7 @@ "description": "A front-end framework for Laravel.", "support": { "issues": "https://github.com/livewire/livewire/issues", - "source": "https://github.com/livewire/livewire/tree/v3.4.4" + "source": "https://github.com/livewire/livewire/tree/v3.4.6" }, "funding": [ { @@ -7092,7 +7017,7 @@ "type": "github" } ], - "time": "2024-01-28T19:07:11+00:00" + "time": "2024-02-20T14:04:25+00:00" }, { "name": "maennchen/zipstream-php", @@ -8011,16 +7936,16 @@ }, { "name": "nikic/php-parser", - "version": "v5.0.0", + "version": "v5.0.1", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "4a21235f7e56e713259a6f76bf4b5ea08502b9dc" + "reference": "2218c2252c874a4624ab2f613d86ac32d227bc69" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/4a21235f7e56e713259a6f76bf4b5ea08502b9dc", - "reference": "4a21235f7e56e713259a6f76bf4b5ea08502b9dc", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/2218c2252c874a4624ab2f613d86ac32d227bc69", + "reference": "2218c2252c874a4624ab2f613d86ac32d227bc69", "shasum": "" }, "require": { @@ -8063,9 +7988,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.0.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.0.1" }, - "time": "2024-01-07T17:17:35+00:00" + "time": "2024-02-21T19:24:10+00:00" }, { "name": "nordigen/nordigen-php", @@ -8733,16 +8658,16 @@ }, { "name": "payfast/payfast-php-sdk", - "version": "v1.1.5", + "version": "v1.1.6", "source": { "type": "git", "url": "https://github.com/Payfast/payfast-php-sdk.git", - "reference": "902b2cfa7318ad947ed0eba953eea4a3831c526a" + "reference": "015efcd2df3e580e023dae6e16c943328d38bb78" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Payfast/payfast-php-sdk/zipball/902b2cfa7318ad947ed0eba953eea4a3831c526a", - "reference": "902b2cfa7318ad947ed0eba953eea4a3831c526a", + "url": "https://api.github.com/repos/Payfast/payfast-php-sdk/zipball/015efcd2df3e580e023dae6e16c943328d38bb78", + "reference": "015efcd2df3e580e023dae6e16c943328d38bb78", "shasum": "" }, "require": { @@ -8751,12 +8676,14 @@ "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9" + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^9", + "squizlabs/php_codesniffer": "^3.8" }, "type": "library", "autoload": { "psr-4": { - "Payfast\\": "lib/" + "PayFast\\": "lib/" } }, "notification-url": "https://packagist.org/downloads/", @@ -8778,10 +8705,10 @@ ], "support": { "issues": "https://github.com/Payfast/payfast-php-sdk/issues", - "source": "https://github.com/Payfast/payfast-php-sdk/tree/v1.1.5" + "source": "https://github.com/Payfast/payfast-php-sdk/tree/v1.1.6" }, "abandoned": true, - "time": "2023-10-11T09:57:01+00:00" + "time": "2024-02-28T09:54:10+00:00" }, { "name": "php-http/client-common", @@ -9336,21 +9263,21 @@ }, { "name": "phpdocumentor/type-resolver", - "version": "1.8.0", + "version": "1.8.2", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "fad452781b3d774e3337b0c0b245dd8e5a4455fc" + "reference": "153ae662783729388a584b4361f2545e4d841e3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/fad452781b3d774e3337b0c0b245dd8e5a4455fc", - "reference": "fad452781b3d774e3337b0c0b245dd8e5a4455fc", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/153ae662783729388a584b4361f2545e4d841e3c", + "reference": "153ae662783729388a584b4361f2545e4d841e3c", "shasum": "" }, "require": { "doctrine/deprecations": "^1.0", - "php": "^7.4 || ^8.0", + "php": "^7.3 || ^8.0", "phpdocumentor/reflection-common": "^2.0", "phpstan/phpdoc-parser": "^1.13" }, @@ -9388,9 +9315,9 @@ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.8.0" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.8.2" }, - "time": "2024-01-11T11:49:22+00:00" + "time": "2024-02-23T11:10:43+00:00" }, { "name": "phpoffice/phpspreadsheet", @@ -9574,16 +9501,16 @@ }, { "name": "phpseclib/phpseclib", - "version": "3.0.35", + "version": "3.0.37", "source": { "type": "git", "url": "https://github.com/phpseclib/phpseclib.git", - "reference": "4b1827beabce71953ca479485c0ae9c51287f2fe" + "reference": "cfa2013d0f68c062055180dd4328cc8b9d1f30b8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/4b1827beabce71953ca479485c0ae9c51287f2fe", - "reference": "4b1827beabce71953ca479485c0ae9c51287f2fe", + "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/cfa2013d0f68c062055180dd4328cc8b9d1f30b8", + "reference": "cfa2013d0f68c062055180dd4328cc8b9d1f30b8", "shasum": "" }, "require": { @@ -9664,7 +9591,7 @@ ], "support": { "issues": "https://github.com/phpseclib/phpseclib/issues", - "source": "https://github.com/phpseclib/phpseclib/tree/3.0.35" + "source": "https://github.com/phpseclib/phpseclib/tree/3.0.37" }, "funding": [ { @@ -9680,20 +9607,20 @@ "type": "tidelift" } ], - "time": "2023-12-29T01:59:53+00:00" + "time": "2024-03-03T02:14:58+00:00" }, { "name": "phpstan/phpdoc-parser", - "version": "1.25.0", + "version": "1.26.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "bd84b629c8de41aa2ae82c067c955e06f1b00240" + "reference": "231e3186624c03d7e7c890ec662b81e6b0405227" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/bd84b629c8de41aa2ae82c067c955e06f1b00240", - "reference": "bd84b629c8de41aa2ae82c067c955e06f1b00240", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/231e3186624c03d7e7c890ec662b81e6b0405227", + "reference": "231e3186624c03d7e7c890ec662b81e6b0405227", "shasum": "" }, "require": { @@ -9725,9 +9652,9 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.25.0" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.26.0" }, - "time": "2024-01-04T17:06:16+00:00" + "time": "2024-02-23T16:05:55+00:00" }, { "name": "pragmarx/google2fa", @@ -11576,26 +11503,26 @@ }, { "name": "socialiteproviders/manager", - "version": "v4.4.0", + "version": "v4.5.1", "source": { "type": "git", "url": "https://github.com/SocialiteProviders/Manager.git", - "reference": "df5e45b53d918ec3d689f014d98a6c838b98ed96" + "reference": "a67f194f0f4c4c7616c549afc697b78df9658d44" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/SocialiteProviders/Manager/zipball/df5e45b53d918ec3d689f014d98a6c838b98ed96", - "reference": "df5e45b53d918ec3d689f014d98a6c838b98ed96", + "url": "https://api.github.com/repos/SocialiteProviders/Manager/zipball/a67f194f0f4c4c7616c549afc697b78df9658d44", + "reference": "a67f194f0f4c4c7616c549afc697b78df9658d44", "shasum": "" }, "require": { - "illuminate/support": "^6.0 || ^7.0 || ^8.0 || ^9.0 || ^10.0", - "laravel/socialite": "~5.0", + "illuminate/support": "^8.0 || ^9.0 || ^10.0 || ^11.0", + "laravel/socialite": "^5.2", "php": "^8.0" }, "require-dev": { "mockery/mockery": "^1.2", - "phpunit/phpunit": "^6.0 || ^9.0" + "phpunit/phpunit": "^9.0" }, "type": "library", "extra": { @@ -11646,26 +11573,26 @@ "issues": "https://github.com/socialiteproviders/manager/issues", "source": "https://github.com/socialiteproviders/manager" }, - "time": "2023-08-27T23:46:34+00:00" + "time": "2024-02-17T08:58:03+00:00" }, { "name": "socialiteproviders/microsoft", - "version": "4.2.2", + "version": "4.2.3", "source": { "type": "git", "url": "https://github.com/SocialiteProviders/Microsoft.git", - "reference": "19bc79810d7319c466f38552546b2c233b634059" + "reference": "92c6f245a6175bcb51f4c7e0542b1e2891646edb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/SocialiteProviders/Microsoft/zipball/19bc79810d7319c466f38552546b2c233b634059", - "reference": "19bc79810d7319c466f38552546b2c233b634059", + "url": "https://api.github.com/repos/SocialiteProviders/Microsoft/zipball/92c6f245a6175bcb51f4c7e0542b1e2891646edb", + "reference": "92c6f245a6175bcb51f4c7e0542b1e2891646edb", "shasum": "" }, "require": { "ext-json": "*", - "php": "^7.4 || ^8.0", - "socialiteproviders/manager": "~4.0" + "php": "^8.0", + "socialiteproviders/manager": "^4.4" }, "type": "library", "autoload": { @@ -11696,20 +11623,20 @@ "issues": "https://github.com/socialiteproviders/providers/issues", "source": "https://github.com/socialiteproviders/providers" }, - "time": "2023-03-02T09:58:36+00:00" + "time": "2024-02-28T14:16:00+00:00" }, { "name": "spatie/laravel-data", - "version": "3.11.0", + "version": "3.11.2", "source": { "type": "git", "url": "https://github.com/spatie/laravel-data.git", - "reference": "e9cb66136974b6a6e290d6d2e2d484bac1727537" + "reference": "21b4d115a502dfd96ab2b11c62746325e9a28924" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-data/zipball/e9cb66136974b6a6e290d6d2e2d484bac1727537", - "reference": "e9cb66136974b6a6e290d6d2e2d484bac1727537", + "url": "https://api.github.com/repos/spatie/laravel-data/zipball/21b4d115a502dfd96ab2b11c62746325e9a28924", + "reference": "21b4d115a502dfd96ab2b11c62746325e9a28924", "shasum": "" }, "require": { @@ -11773,7 +11700,7 @@ ], "support": { "issues": "https://github.com/spatie/laravel-data/issues", - "source": "https://github.com/spatie/laravel-data/tree/3.11.0" + "source": "https://github.com/spatie/laravel-data/tree/3.11.2" }, "funding": [ { @@ -11781,7 +11708,7 @@ "type": "github" } ], - "time": "2023-12-21T12:31:34+00:00" + "time": "2024-02-22T08:34:10+00:00" }, { "name": "spatie/laravel-package-tools", @@ -12109,16 +12036,16 @@ }, { "name": "symfony/console", - "version": "v6.4.3", + "version": "v6.4.4", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "2aaf83b4de5b9d43b93e4aec6f2f8b676f7c567e" + "reference": "0d9e4eb5ad413075624378f474c4167ea202de78" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/2aaf83b4de5b9d43b93e4aec6f2f8b676f7c567e", - "reference": "2aaf83b4de5b9d43b93e4aec6f2f8b676f7c567e", + "url": "https://api.github.com/repos/symfony/console/zipball/0d9e4eb5ad413075624378f474c4167ea202de78", + "reference": "0d9e4eb5ad413075624378f474c4167ea202de78", "shasum": "" }, "require": { @@ -12183,7 +12110,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.4.3" + "source": "https://github.com/symfony/console/tree/v6.4.4" }, "funding": [ { @@ -12199,7 +12126,7 @@ "type": "tidelift" } ], - "time": "2024-01-23T14:51:35+00:00" + "time": "2024-02-22T20:27:10+00:00" }, { "name": "symfony/css-selector", @@ -12335,16 +12262,16 @@ }, { "name": "symfony/error-handler", - "version": "v6.4.3", + "version": "v6.4.4", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "6dc3c76a278b77f01d864a6005d640822c6f26a6" + "reference": "c725219bdf2afc59423c32793d5019d2a904e13a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/6dc3c76a278b77f01d864a6005d640822c6f26a6", - "reference": "6dc3c76a278b77f01d864a6005d640822c6f26a6", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/c725219bdf2afc59423c32793d5019d2a904e13a", + "reference": "c725219bdf2afc59423c32793d5019d2a904e13a", "shasum": "" }, "require": { @@ -12390,7 +12317,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.4.3" + "source": "https://github.com/symfony/error-handler/tree/v6.4.4" }, "funding": [ { @@ -12406,7 +12333,7 @@ "type": "tidelift" } ], - "time": "2024-01-29T15:40:36+00:00" + "time": "2024-02-22T20:27:10+00:00" }, { "name": "symfony/event-dispatcher", @@ -12693,16 +12620,16 @@ }, { "name": "symfony/http-client", - "version": "v6.4.3", + "version": "v6.4.5", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "a9034bc119fab8238f76cf49c770f3135f3ead86" + "reference": "f3c86a60a3615f466333a11fd42010d4382a82c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/a9034bc119fab8238f76cf49c770f3135f3ead86", - "reference": "a9034bc119fab8238f76cf49c770f3135f3ead86", + "url": "https://api.github.com/repos/symfony/http-client/zipball/f3c86a60a3615f466333a11fd42010d4382a82c7", + "reference": "f3c86a60a3615f466333a11fd42010d4382a82c7", "shasum": "" }, "require": { @@ -12766,7 +12693,7 @@ "http" ], "support": { - "source": "https://github.com/symfony/http-client/tree/v6.4.3" + "source": "https://github.com/symfony/http-client/tree/v6.4.5" }, "funding": [ { @@ -12782,7 +12709,7 @@ "type": "tidelift" } ], - "time": "2024-01-29T15:01:07+00:00" + "time": "2024-03-02T12:45:30+00:00" }, { "name": "symfony/http-client-contracts", @@ -12864,16 +12791,16 @@ }, { "name": "symfony/http-foundation", - "version": "v6.4.3", + "version": "v6.4.4", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "5677bdf7cade4619cb17fc9e1e7b31ec392244a9" + "reference": "ebc713bc6e6f4b53f46539fc158be85dfcd77304" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/5677bdf7cade4619cb17fc9e1e7b31ec392244a9", - "reference": "5677bdf7cade4619cb17fc9e1e7b31ec392244a9", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ebc713bc6e6f4b53f46539fc158be85dfcd77304", + "reference": "ebc713bc6e6f4b53f46539fc158be85dfcd77304", "shasum": "" }, "require": { @@ -12921,7 +12848,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.4.3" + "source": "https://github.com/symfony/http-foundation/tree/v6.4.4" }, "funding": [ { @@ -12937,20 +12864,20 @@ "type": "tidelift" } ], - "time": "2024-01-23T14:51:35+00:00" + "time": "2024-02-08T15:01:18+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.4.3", + "version": "v6.4.5", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "9c6ec4e543044f7568a53a76ab1484ecd30637a2" + "reference": "f6947cb939d8efee137797382cb4db1af653ef75" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9c6ec4e543044f7568a53a76ab1484ecd30637a2", - "reference": "9c6ec4e543044f7568a53a76ab1484ecd30637a2", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/f6947cb939d8efee137797382cb4db1af653ef75", + "reference": "f6947cb939d8efee137797382cb4db1af653ef75", "shasum": "" }, "require": { @@ -12999,7 +12926,7 @@ "symfony/process": "^5.4|^6.0|^7.0", "symfony/property-access": "^5.4.5|^6.0.5|^7.0", "symfony/routing": "^5.4|^6.0|^7.0", - "symfony/serializer": "^6.3|^7.0", + "symfony/serializer": "^6.4.4|^7.0.4", "symfony/stopwatch": "^5.4|^6.0|^7.0", "symfony/translation": "^5.4|^6.0|^7.0", "symfony/translation-contracts": "^2.5|^3", @@ -13034,7 +12961,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v6.4.3" + "source": "https://github.com/symfony/http-kernel/tree/v6.4.5" }, "funding": [ { @@ -13050,7 +12977,7 @@ "type": "tidelift" } ], - "time": "2024-01-31T07:21:29+00:00" + "time": "2024-03-04T21:00:47+00:00" }, { "name": "symfony/intl", @@ -13136,16 +13063,16 @@ }, { "name": "symfony/mailer", - "version": "v6.4.3", + "version": "v6.4.4", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "74412c62f88a85a41b61f0b71ab0afcaad6f03ee" + "reference": "791c5d31a8204cf3db0c66faab70282307f4376b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/74412c62f88a85a41b61f0b71ab0afcaad6f03ee", - "reference": "74412c62f88a85a41b61f0b71ab0afcaad6f03ee", + "url": "https://api.github.com/repos/symfony/mailer/zipball/791c5d31a8204cf3db0c66faab70282307f4376b", + "reference": "791c5d31a8204cf3db0c66faab70282307f4376b", "shasum": "" }, "require": { @@ -13196,7 +13123,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v6.4.3" + "source": "https://github.com/symfony/mailer/tree/v6.4.4" }, "funding": [ { @@ -13212,20 +13139,20 @@ "type": "tidelift" } ], - "time": "2024-01-29T15:01:07+00:00" + "time": "2024-02-03T21:33:47+00:00" }, { "name": "symfony/mailgun-mailer", - "version": "v6.4.3", + "version": "v6.4.4", "source": { "type": "git", "url": "https://github.com/symfony/mailgun-mailer.git", - "reference": "96d23bb0e773ecfc3fb8d21cdabfbb3f4d6abf04" + "reference": "8c018872b40ce050590b6d18cf741db0c8313435" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailgun-mailer/zipball/96d23bb0e773ecfc3fb8d21cdabfbb3f4d6abf04", - "reference": "96d23bb0e773ecfc3fb8d21cdabfbb3f4d6abf04", + "url": "https://api.github.com/repos/symfony/mailgun-mailer/zipball/8c018872b40ce050590b6d18cf741db0c8313435", + "reference": "8c018872b40ce050590b6d18cf741db0c8313435", "shasum": "" }, "require": { @@ -13265,7 +13192,7 @@ "description": "Symfony Mailgun Mailer Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailgun-mailer/tree/v6.4.3" + "source": "https://github.com/symfony/mailgun-mailer/tree/v6.4.4" }, "funding": [ { @@ -13281,7 +13208,7 @@ "type": "tidelift" } ], - "time": "2024-01-29T15:01:07+00:00" + "time": "2024-02-14T06:31:46+00:00" }, { "name": "symfony/mime", @@ -14231,16 +14158,16 @@ }, { "name": "symfony/postmark-mailer", - "version": "v6.4.3", + "version": "v6.4.4", "source": { "type": "git", "url": "https://github.com/symfony/postmark-mailer.git", - "reference": "59afae48341cf02fcab049eee368cbb9dc0b4481" + "reference": "2e73040e6b5ccf35025e86692a2080ef176a0d8d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/postmark-mailer/zipball/59afae48341cf02fcab049eee368cbb9dc0b4481", - "reference": "59afae48341cf02fcab049eee368cbb9dc0b4481", + "url": "https://api.github.com/repos/symfony/postmark-mailer/zipball/2e73040e6b5ccf35025e86692a2080ef176a0d8d", + "reference": "2e73040e6b5ccf35025e86692a2080ef176a0d8d", "shasum": "" }, "require": { @@ -14281,7 +14208,7 @@ "description": "Symfony Postmark Mailer Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/postmark-mailer/tree/v6.4.3" + "source": "https://github.com/symfony/postmark-mailer/tree/v6.4.4" }, "funding": [ { @@ -14297,20 +14224,20 @@ "type": "tidelift" } ], - "time": "2024-01-23T14:51:35+00:00" + "time": "2024-02-09T11:00:58+00:00" }, { "name": "symfony/process", - "version": "v6.4.3", + "version": "v6.4.4", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "31642b0818bfcff85930344ef93193f8c607e0a3" + "reference": "710e27879e9be3395de2b98da3f52a946039f297" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/31642b0818bfcff85930344ef93193f8c607e0a3", - "reference": "31642b0818bfcff85930344ef93193f8c607e0a3", + "url": "https://api.github.com/repos/symfony/process/zipball/710e27879e9be3395de2b98da3f52a946039f297", + "reference": "710e27879e9be3395de2b98da3f52a946039f297", "shasum": "" }, "require": { @@ -14342,7 +14269,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.4.3" + "source": "https://github.com/symfony/process/tree/v6.4.4" }, "funding": [ { @@ -14358,7 +14285,7 @@ "type": "tidelift" } ], - "time": "2024-01-23T14:51:35+00:00" + "time": "2024-02-20T12:31:00+00:00" }, { "name": "symfony/psr-http-message-bridge", @@ -14451,16 +14378,16 @@ }, { "name": "symfony/routing", - "version": "v6.4.3", + "version": "v6.4.5", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "3b2957ad54902f0f544df83e3d58b38d7e8e5842" + "reference": "7fe30068e207d9c31c0138501ab40358eb2d49a4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/3b2957ad54902f0f544df83e3d58b38d7e8e5842", - "reference": "3b2957ad54902f0f544df83e3d58b38d7e8e5842", + "url": "https://api.github.com/repos/symfony/routing/zipball/7fe30068e207d9c31c0138501ab40358eb2d49a4", + "reference": "7fe30068e207d9c31c0138501ab40358eb2d49a4", "shasum": "" }, "require": { @@ -14514,7 +14441,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.4.3" + "source": "https://github.com/symfony/routing/tree/v6.4.5" }, "funding": [ { @@ -14530,7 +14457,7 @@ "type": "tidelift" } ], - "time": "2024-01-30T13:55:02+00:00" + "time": "2024-02-27T12:33:30+00:00" }, { "name": "symfony/service-contracts", @@ -14616,16 +14543,16 @@ }, { "name": "symfony/string", - "version": "v6.4.3", + "version": "v6.4.4", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "7a14736fb179876575464e4658fce0c304e8c15b" + "reference": "4e465a95bdc32f49cf4c7f07f751b843bbd6dcd9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/7a14736fb179876575464e4658fce0c304e8c15b", - "reference": "7a14736fb179876575464e4658fce0c304e8c15b", + "url": "https://api.github.com/repos/symfony/string/zipball/4e465a95bdc32f49cf4c7f07f751b843bbd6dcd9", + "reference": "4e465a95bdc32f49cf4c7f07f751b843bbd6dcd9", "shasum": "" }, "require": { @@ -14682,7 +14609,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.4.3" + "source": "https://github.com/symfony/string/tree/v6.4.4" }, "funding": [ { @@ -14698,20 +14625,20 @@ "type": "tidelift" } ], - "time": "2024-01-25T09:26:29+00:00" + "time": "2024-02-01T13:16:41+00:00" }, { "name": "symfony/translation", - "version": "v6.4.3", + "version": "v6.4.4", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "637c51191b6b184184bbf98937702bcf554f7d04" + "reference": "bce6a5a78e94566641b2594d17e48b0da3184a8e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/637c51191b6b184184bbf98937702bcf554f7d04", - "reference": "637c51191b6b184184bbf98937702bcf554f7d04", + "url": "https://api.github.com/repos/symfony/translation/zipball/bce6a5a78e94566641b2594d17e48b0da3184a8e", + "reference": "bce6a5a78e94566641b2594d17e48b0da3184a8e", "shasum": "" }, "require": { @@ -14777,7 +14704,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v6.4.3" + "source": "https://github.com/symfony/translation/tree/v6.4.4" }, "funding": [ { @@ -14793,7 +14720,7 @@ "type": "tidelift" } ], - "time": "2024-01-29T13:11:52+00:00" + "time": "2024-02-20T13:16:58+00:00" }, { "name": "symfony/translation-contracts", @@ -14949,16 +14876,16 @@ }, { "name": "symfony/validator", - "version": "v6.4.3", + "version": "v6.4.4", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "9c1d8bb4edce5304fcefca7923741085f1ca5b60" + "reference": "1cf92edc9a94d16275efef949fa6748d11cc8f47" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/9c1d8bb4edce5304fcefca7923741085f1ca5b60", - "reference": "9c1d8bb4edce5304fcefca7923741085f1ca5b60", + "url": "https://api.github.com/repos/symfony/validator/zipball/1cf92edc9a94d16275efef949fa6748d11cc8f47", + "reference": "1cf92edc9a94d16275efef949fa6748d11cc8f47", "shasum": "" }, "require": { @@ -15025,7 +14952,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v6.4.3" + "source": "https://github.com/symfony/validator/tree/v6.4.4" }, "funding": [ { @@ -15041,20 +14968,20 @@ "type": "tidelift" } ], - "time": "2024-01-29T15:01:07+00:00" + "time": "2024-02-22T20:27:10+00:00" }, { "name": "symfony/var-dumper", - "version": "v6.4.3", + "version": "v6.4.4", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "0435a08f69125535336177c29d56af3abc1f69da" + "reference": "b439823f04c98b84d4366c79507e9da6230944b1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/0435a08f69125535336177c29d56af3abc1f69da", - "reference": "0435a08f69125535336177c29d56af3abc1f69da", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/b439823f04c98b84d4366c79507e9da6230944b1", + "reference": "b439823f04c98b84d4366c79507e9da6230944b1", "shasum": "" }, "require": { @@ -15110,7 +15037,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.4.3" + "source": "https://github.com/symfony/var-dumper/tree/v6.4.4" }, "funding": [ { @@ -15126,7 +15053,7 @@ "type": "tidelift" } ], - "time": "2024-01-23T14:53:30+00:00" + "time": "2024-02-15T11:23:52+00:00" }, { "name": "symfony/yaml", @@ -15876,16 +15803,16 @@ "packages-dev": [ { "name": "barryvdh/laravel-debugbar", - "version": "v3.10.5", + "version": "v3.10.6", "source": { "type": "git", "url": "https://github.com/barryvdh/laravel-debugbar.git", - "reference": "d1a48965f2b25a6cec2eea07d719b568a37c9a88" + "reference": "1fcb37307ebb32207dce16fa160a92b14d8b671f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/d1a48965f2b25a6cec2eea07d719b568a37c9a88", - "reference": "d1a48965f2b25a6cec2eea07d719b568a37c9a88", + "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/1fcb37307ebb32207dce16fa160a92b14d8b671f", + "reference": "1fcb37307ebb32207dce16fa160a92b14d8b671f", "shasum": "" }, "require": { @@ -15899,7 +15826,7 @@ "require-dev": { "mockery/mockery": "^1.3.3", "orchestra/testbench-dusk": "^5|^6|^7|^8|^9", - "phpunit/phpunit": "^8.5.30|^9.0", + "phpunit/phpunit": "^9.6|^10.5", "squizlabs/php_codesniffer": "^3.5" }, "type": "library", @@ -15944,7 +15871,7 @@ ], "support": { "issues": "https://github.com/barryvdh/laravel-debugbar/issues", - "source": "https://github.com/barryvdh/laravel-debugbar/tree/v3.10.5" + "source": "https://github.com/barryvdh/laravel-debugbar/tree/v3.10.6" }, "funding": [ { @@ -15956,7 +15883,7 @@ "type": "github" } ], - "time": "2024-02-15T10:45:45+00:00" + "time": "2024-03-01T14:41:13+00:00" }, { "name": "barryvdh/laravel-ide-helper", @@ -16684,16 +16611,16 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.49.0", + "version": "v3.51.0", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "8742f7aa6f72a399688b65e4f58992c2d4681fc2" + "reference": "127fa74f010da99053e3f5b62672615b72dd6efd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/8742f7aa6f72a399688b65e4f58992c2d4681fc2", - "reference": "8742f7aa6f72a399688b65e4f58992c2d4681fc2", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/127fa74f010da99053e3f5b62672615b72dd6efd", + "reference": "127fa74f010da99053e3f5b62672615b72dd6efd", "shasum": "" }, "require": { @@ -16703,7 +16630,7 @@ "ext-json": "*", "ext-tokenizer": "*", "php": "^7.4 || ^8.0", - "sebastian/diff": "^4.0 || ^5.0", + "sebastian/diff": "^4.0 || ^5.0 || ^6.0", "symfony/console": "^5.4 || ^6.0 || ^7.0", "symfony/event-dispatcher": "^5.4 || ^6.0 || ^7.0", "symfony/filesystem": "^5.4 || ^6.0 || ^7.0", @@ -16724,7 +16651,8 @@ "php-cs-fixer/accessible-object": "^1.1", "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.4", "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.4", - "phpunit/phpunit": "^9.6 || ^10.5.5", + "phpunit/phpunit": "^9.6 || ^10.5.5 || ^11.0.2", + "symfony/var-dumper": "^5.4 || ^6.0 || ^7.0", "symfony/yaml": "^5.4 || ^6.0 || ^7.0" }, "suggest": { @@ -16763,7 +16691,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.49.0" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.51.0" }, "funding": [ { @@ -16771,7 +16699,7 @@ "type": "github" } ], - "time": "2024-02-02T00:41:40+00:00" + "time": "2024-02-28T19:50:06+00:00" }, { "name": "hamcrest/hamcrest-php", @@ -16885,16 +16813,16 @@ }, { "name": "larastan/larastan", - "version": "v2.9.0", + "version": "v2.9.2", "source": { "type": "git", "url": "https://github.com/larastan/larastan.git", - "reference": "35fa9cbe1895e76215bbe74571a344f2705fbe01" + "reference": "a79b46b96060504b400890674b83f66aa7f5db6d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/larastan/larastan/zipball/35fa9cbe1895e76215bbe74571a344f2705fbe01", - "reference": "35fa9cbe1895e76215bbe74571a344f2705fbe01", + "url": "https://api.github.com/repos/larastan/larastan/zipball/a79b46b96060504b400890674b83f66aa7f5db6d", + "reference": "a79b46b96060504b400890674b83f66aa7f5db6d", "shasum": "" }, "require": { @@ -16911,6 +16839,7 @@ "phpstan/phpstan": "^1.10.50" }, "require-dev": { + "doctrine/coding-standard": "^12.0", "nikic/php-parser": "^4.17.1", "orchestra/canvas": "^7.11.1 || ^8.11.0 || ^9.0.0", "orchestra/testbench": "^7.33.0 || ^8.13.0 || ^9.0.0", @@ -16962,7 +16891,7 @@ ], "support": { "issues": "https://github.com/larastan/larastan/issues", - "source": "https://github.com/larastan/larastan/tree/v2.9.0" + "source": "https://github.com/larastan/larastan/tree/v2.9.2" }, "funding": [ { @@ -16982,7 +16911,7 @@ "type": "patreon" } ], - "time": "2024-02-13T11:49:22+00:00" + "time": "2024-02-27T03:16:03+00:00" }, { "name": "maximebf/debugbar", @@ -17290,20 +17219,21 @@ }, { "name": "phar-io/manifest", - "version": "2.0.3", + "version": "2.0.4", "source": { "type": "git", "url": "https://github.com/phar-io/manifest.git", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53" + "reference": "54750ef60c58e43759730615a392c31c80e23176" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", + "reference": "54750ef60c58e43759730615a392c31c80e23176", "shasum": "" }, "require": { "ext-dom": "*", + "ext-libxml": "*", "ext-phar": "*", "ext-xmlwriter": "*", "phar-io/version": "^3.0.1", @@ -17344,9 +17274,15 @@ "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", "support": { "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/2.0.3" + "source": "https://github.com/phar-io/manifest/tree/2.0.4" }, - "time": "2021-07-20T11:28:43+00:00" + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2024-03-03T12:33:53+00:00" }, { "name": "phar-io/version", @@ -17489,16 +17425,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.10.58", + "version": "1.10.59", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "a23518379ec4defd9e47cbf81019526861623ec2" + "reference": "e607609388d3a6d418a50a49f7940e8086798281" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/a23518379ec4defd9e47cbf81019526861623ec2", - "reference": "a23518379ec4defd9e47cbf81019526861623ec2", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/e607609388d3a6d418a50a49f7940e8086798281", + "reference": "e607609388d3a6d418a50a49f7940e8086798281", "shasum": "" }, "require": { @@ -17547,20 +17483,20 @@ "type": "tidelift" } ], - "time": "2024-02-12T20:02:57+00:00" + "time": "2024-02-20T13:59:13+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "10.1.11", + "version": "10.1.12", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "78c3b7625965c2513ee96569a4dbb62601784145" + "reference": "842f72662d6b9edda84c4b6f13885fd9cd53dc63" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/78c3b7625965c2513ee96569a4dbb62601784145", - "reference": "78c3b7625965c2513ee96569a4dbb62601784145", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/842f72662d6b9edda84c4b6f13885fd9cd53dc63", + "reference": "842f72662d6b9edda84c4b6f13885fd9cd53dc63", "shasum": "" }, "require": { @@ -17617,7 +17553,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.11" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.12" }, "funding": [ { @@ -17625,7 +17561,7 @@ "type": "github" } ], - "time": "2023-12-21T15:38:30+00:00" + "time": "2024-03-02T07:22:05+00:00" }, { "name": "phpunit/php-file-iterator", @@ -17872,16 +17808,16 @@ }, { "name": "phpunit/phpunit", - "version": "10.5.10", + "version": "10.5.11", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "50b8e314b6d0dd06521dc31d1abffa73f25f850c" + "reference": "0d968f6323deb3dbfeba5bfd4929b9415eb7a9a4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/50b8e314b6d0dd06521dc31d1abffa73f25f850c", - "reference": "50b8e314b6d0dd06521dc31d1abffa73f25f850c", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0d968f6323deb3dbfeba5bfd4929b9415eb7a9a4", + "reference": "0d968f6323deb3dbfeba5bfd4929b9415eb7a9a4", "shasum": "" }, "require": { @@ -17953,7 +17889,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.10" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.11" }, "funding": [ { @@ -17969,20 +17905,20 @@ "type": "tidelift" } ], - "time": "2024-02-04T09:07:51+00:00" + "time": "2024-02-25T14:05:00+00:00" }, { "name": "sebastian/cli-parser", - "version": "2.0.0", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "efdc130dbbbb8ef0b545a994fd811725c5282cae" + "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/efdc130dbbbb8ef0b545a994fd811725c5282cae", - "reference": "efdc130dbbbb8ef0b545a994fd811725c5282cae", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/c34583b87e7b7a8055bf6c450c2c77ce32a24084", + "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084", "shasum": "" }, "require": { @@ -18017,7 +17953,8 @@ "homepage": "https://github.com/sebastianbergmann/cli-parser", "support": { "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.0" + "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.1" }, "funding": [ { @@ -18025,7 +17962,7 @@ "type": "github" } ], - "time": "2023-02-03T06:58:15+00:00" + "time": "2024-03-02T07:12:49+00:00" }, { "name": "sebastian/code-unit", @@ -18275,16 +18212,16 @@ }, { "name": "sebastian/diff", - "version": "5.1.0", + "version": "5.1.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "fbf413a49e54f6b9b17e12d900ac7f6101591b7f" + "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/fbf413a49e54f6b9b17e12d900ac7f6101591b7f", - "reference": "fbf413a49e54f6b9b17e12d900ac7f6101591b7f", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/c41e007b4b62af48218231d6c2275e4c9b975b2e", + "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e", "shasum": "" }, "require": { @@ -18292,7 +18229,7 @@ }, "require-dev": { "phpunit/phpunit": "^10.0", - "symfony/process": "^4.2 || ^5" + "symfony/process": "^6.4" }, "type": "library", "extra": { @@ -18330,7 +18267,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", "security": "https://github.com/sebastianbergmann/diff/security/policy", - "source": "https://github.com/sebastianbergmann/diff/tree/5.1.0" + "source": "https://github.com/sebastianbergmann/diff/tree/5.1.1" }, "funding": [ { @@ -18338,7 +18275,7 @@ "type": "github" } ], - "time": "2023-12-22T10:55:06+00:00" + "time": "2024-03-02T07:15:17+00:00" }, { "name": "sebastian/environment", @@ -18406,16 +18343,16 @@ }, { "name": "sebastian/exporter", - "version": "5.1.1", + "version": "5.1.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "64f51654862e0f5e318db7e9dcc2292c63cdbddc" + "reference": "955288482d97c19a372d3f31006ab3f37da47adf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/64f51654862e0f5e318db7e9dcc2292c63cdbddc", - "reference": "64f51654862e0f5e318db7e9dcc2292c63cdbddc", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/955288482d97c19a372d3f31006ab3f37da47adf", + "reference": "955288482d97c19a372d3f31006ab3f37da47adf", "shasum": "" }, "require": { @@ -18472,7 +18409,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", "security": "https://github.com/sebastianbergmann/exporter/security/policy", - "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.1" + "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.2" }, "funding": [ { @@ -18480,20 +18417,20 @@ "type": "github" } ], - "time": "2023-09-24T13:22:09+00:00" + "time": "2024-03-02T07:17:12+00:00" }, { "name": "sebastian/global-state", - "version": "6.0.1", + "version": "6.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4" + "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/7ea9ead78f6d380d2a667864c132c2f7b83055e4", - "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", + "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", "shasum": "" }, "require": { @@ -18527,14 +18464,14 @@ } ], "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", + "homepage": "https://www.github.com/sebastianbergmann/global-state", "keywords": [ "global state" ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", "security": "https://github.com/sebastianbergmann/global-state/security/policy", - "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.1" + "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.2" }, "funding": [ { @@ -18542,7 +18479,7 @@ "type": "github" } ], - "time": "2023-07-19T07:19:23+00:00" + "time": "2024-03-02T07:19:19+00:00" }, { "name": "sebastian/lines-of-code", @@ -19394,16 +19331,16 @@ }, { "name": "theseer/tokenizer", - "version": "1.2.2", + "version": "1.2.3", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96" + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b2ad5003ca10d4ee50a12da31de12a5774ba6b96", - "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", "shasum": "" }, "require": { @@ -19432,7 +19369,7 @@ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", "support": { "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.2" + "source": "https://github.com/theseer/tokenizer/tree/1.2.3" }, "funding": [ { @@ -19440,7 +19377,7 @@ "type": "github" } ], - "time": "2023-11-20T00:12:19+00:00" + "time": "2024-03-03T12:36:25+00:00" } ], "aliases": [], diff --git a/tests/Feature/Export/ReportCsvGenerationTest.php b/tests/Feature/Export/ReportCsvGenerationTest.php index 397e00c321de..2db78dcd8f0e 100644 --- a/tests/Feature/Export/ReportCsvGenerationTest.php +++ b/tests/Feature/Export/ReportCsvGenerationTest.php @@ -501,6 +501,7 @@ class ReportCsvGenerationTest extends TestCase // 'start_date' => 'bail|required_if:date_range,custom|nullable|date', 'report_keys' => [], 'send_email' => false, + 'include_deleted' => false, // 'status' => 'sometimes|string|nullable|in:all,draft,sent,viewed,paid,unpaid,overdue', ]; @@ -547,6 +548,7 @@ class ReportCsvGenerationTest extends TestCase 'date_range' => 'all', 'report_keys' => ["vendor.name", "vendor.city", "vendor.number"], 'send_email' => false, + 'include_deleted' => false, ]; $response = $this->withHeaders([ @@ -638,6 +640,7 @@ class ReportCsvGenerationTest extends TestCase 'task.custom_value4', ], 'send_email' => false, + 'include_deleted' => false, ]; $response = $this->withHeaders([ @@ -792,6 +795,7 @@ class ReportCsvGenerationTest extends TestCase 'date_range' => 'all', 'report_keys' => [], 'send_email' => false, + 'include_deleted' => false, ]; $response = $this->withHeaders([ @@ -873,6 +877,7 @@ class ReportCsvGenerationTest extends TestCase "client.paid_to_date" ], 'send_email' => false, + 'include_deleted' => false, ]; $response = $this->withHeaders([ From 633e5f2cb4b7d42b9341dce989389ec3567ee1e8 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Tue, 5 Mar 2024 14:21:34 +1100 Subject: [PATCH 4/9] Fixes for tests --- tests/Feature/Export/ReportPreviewTest.php | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/tests/Feature/Export/ReportPreviewTest.php b/tests/Feature/Export/ReportPreviewTest.php index 3aaffd171931..0b858f039a76 100644 --- a/tests/Feature/Export/ReportPreviewTest.php +++ b/tests/Feature/Export/ReportPreviewTest.php @@ -70,6 +70,7 @@ class ReportPreviewTest extends TestCase 'send_email' => false, 'date_range' => 'all', 'report_keys' => [], + 'include_deleted' => false, ]; $response = $this->withHeaders([ @@ -101,6 +102,7 @@ class ReportPreviewTest extends TestCase 'send_email' => false, 'date_range' => 'all', 'report_keys' => [], + 'include_deleted' => false, ]; $response = $this->withHeaders([ @@ -132,6 +134,7 @@ class ReportPreviewTest extends TestCase 'send_email' => false, 'date_range' => 'all', 'report_keys' => [], + 'include_deleted' => false, ]; $response = $this->withHeaders([ @@ -164,6 +167,7 @@ class ReportPreviewTest extends TestCase 'send_email' => false, 'date_range' => 'all', 'report_keys' => [], + 'include_deleted' => false, ]; $response = $this->withHeaders([ @@ -197,6 +201,7 @@ class ReportPreviewTest extends TestCase 'send_email' => false, 'date_range' => 'all', 'report_keys' => [], + 'include_deleted' => false, ]; $response = $this->withHeaders([ @@ -231,6 +236,7 @@ class ReportPreviewTest extends TestCase 'send_email' => false, 'date_range' => 'all', 'report_keys' => [], + 'include_deleted' => false, ]; $response = $this->withHeaders([ @@ -261,6 +267,7 @@ class ReportPreviewTest extends TestCase 'send_email' => false, 'date_range' => 'all', 'report_keys' => [], + 'include_deleted' => false, ]; $response = $this->withHeaders([ @@ -291,6 +298,7 @@ class ReportPreviewTest extends TestCase 'send_email' => false, 'date_range' => 'all', 'report_keys' => [], + 'include_deleted' => false, ]; $response = $this->withHeaders([ @@ -320,6 +328,7 @@ class ReportPreviewTest extends TestCase 'send_email' => false, 'date_range' => 'all', 'report_keys' => [], + 'include_deleted' => false, ]; $response = $this->withHeaders([ @@ -351,6 +360,7 @@ class ReportPreviewTest extends TestCase 'send_email' => false, 'date_range' => 'all', 'report_keys' => [], + 'include_deleted' => false, ]; $response = $this->withHeaders([ @@ -375,6 +385,7 @@ class ReportPreviewTest extends TestCase 'send_email' => false, 'date_range' => 'all', 'report_keys' => [], + 'include_deleted' => false, ]; $response = $this->withHeaders([ @@ -387,6 +398,7 @@ class ReportPreviewTest extends TestCase 'send_email' => false, 'date_range' => 'all', 'report_keys' => ['client.name','client.balance'], + 'include_deleted' => false, ]; @@ -408,6 +420,7 @@ class ReportPreviewTest extends TestCase 'send_email' => false, 'date_range' => 'all', 'report_keys' => [], + 'include_deleted' => false, ]; $response = $this->withHeaders([ @@ -420,6 +433,7 @@ class ReportPreviewTest extends TestCase 'send_email' => false, 'date_range' => 'all', 'report_keys' => ['client.name','client.balance','contact.email'], + 'include_deleted' => false, ]; @@ -439,6 +453,7 @@ class ReportPreviewTest extends TestCase 'send_email' => false, 'date_range' => 'all', 'report_keys' => [], + 'include_deleted' => false, ]; $response = $this->withHeaders([ @@ -466,6 +481,7 @@ class ReportPreviewTest extends TestCase 'send_email' => false, 'date_range' => 'all', 'report_keys' => [], + 'include_deleted' => false, ]; $p = (new PreviewReport($this->company, $data, CreditExport::class, '123'))->handle(); @@ -484,6 +500,7 @@ class ReportPreviewTest extends TestCase 'send_email' => false, 'date_range' => 'all', 'report_keys' => [], + 'include_deleted' => false, ]; $response = $this->withHeaders([ From 6859de6e8c65ce5dde041c17a2e6995a32348302 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Tue, 5 Mar 2024 15:32:32 +1100 Subject: [PATCH 5/9] Additional logging around email switching --- app/Jobs/Mail/NinjaMailerJob.php | 2 ++ app/Services/Email/Email.php | 1 + 2 files changed, 3 insertions(+) diff --git a/app/Jobs/Mail/NinjaMailerJob.php b/app/Jobs/Mail/NinjaMailerJob.php index 0330156f7419..2ec5c62c7214 100644 --- a/app/Jobs/Mail/NinjaMailerJob.php +++ b/app/Jobs/Mail/NinjaMailerJob.php @@ -286,6 +286,8 @@ class NinjaMailerJob implements ShouldQueue return $this; } } catch(\Exception $e) { + + nlog("problem switching outlook driver - hosted"); nlog($e->getMessage()); } } diff --git a/app/Services/Email/Email.php b/app/Services/Email/Email.php index a567839883d9..7bd64c4e88ab 100644 --- a/app/Services/Email/Email.php +++ b/app/Services/Email/Email.php @@ -512,6 +512,7 @@ class Email implements ShouldQueue return $this; } } catch(\Exception $e) { + nlog("problem switching outlook driver - hosted"); nlog($e->getMessage()); } } From 6f80c6fab8192f5e48ee6e8f065fba811e7b901d Mon Sep 17 00:00:00 2001 From: David Bomba Date: Tue, 5 Mar 2024 16:06:02 +1100 Subject: [PATCH 6/9] Updates for custom designs --- app/Jobs/Mail/NinjaMailerJob.php | 8 +++++++- app/Providers/RouteServiceProvider.php | 8 ++++---- app/Services/Email/Email.php | 8 +++++++- config/services.php | 5 ++++- .../views/email/template/admin_premium.blade.php.enc | 2 +- .../views/email/template/client_premium.blade.php.enc | 2 +- 6 files changed, 24 insertions(+), 9 deletions(-) diff --git a/app/Jobs/Mail/NinjaMailerJob.php b/app/Jobs/Mail/NinjaMailerJob.php index 2ec5c62c7214..7932c01ec79c 100644 --- a/app/Jobs/Mail/NinjaMailerJob.php +++ b/app/Jobs/Mail/NinjaMailerJob.php @@ -279,9 +279,15 @@ class NinjaMailerJob implements ShouldQueue $this->mailer = 'postmark'; $this->client_postmark_secret = config('services.postmark-outlook.token'); + if (property_exists($this->nmo->settings, 'email_from_name') && strlen($this->nmo->settings->email_from_name) > 1) { + $email_from_name = $this->nmo->settings->email_from_name; + } else { + $email_from_name = $this->company->present()->name(); + } + $this->nmo ->mailable - ->from('maildelivery@invoice.services', 'Invoice Ninja'); + ->from(config('services.postmark-outlook.from.address'), $email_from_name); return $this; } diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php index 75e6ac6a7241..967858f658ef 100644 --- a/app/Providers/RouteServiceProvider.php +++ b/app/Providers/RouteServiceProvider.php @@ -36,11 +36,11 @@ class RouteServiceProvider extends ServiceProvider { parent::boot(); - if (Ninja::isHosted() && !config('ninja.testvars.travis')) { - app('router')->aliasMiddleware('throttle', ThrottleRequestsWithPredis::class); - } else { + // if (Ninja::isHosted() && !config('ninja.testvars.travis')) { + // app('router')->aliasMiddleware('throttle', ThrottleRequestsWithPredis::class); + // } else { app('router')->aliasMiddleware('throttle', ThrottleRequests::class); - } + // } Route::bind('task_scheduler', function ($value) { if (is_numeric($value)) { diff --git a/app/Services/Email/Email.php b/app/Services/Email/Email.php index 7bd64c4e88ab..d0e2da2d39d8 100644 --- a/app/Services/Email/Email.php +++ b/app/Services/Email/Email.php @@ -503,13 +503,19 @@ class Email implements ShouldQueue $server = $dns[0]["target"]; if(stripos($server, "outlook.com") !== false) { + if (property_exists($this->email_object->settings, 'email_from_name') && strlen($this->email_object->settings->email_from_name) > 1) { + $email_from_name = $this->email_object->settings->email_from_name; + } else { + $email_from_name = $this->company->present()->name(); + } $this->mailer = 'postmark'; $this->client_postmark_secret = config('services.postmark-outlook.token'); $this->mailable - ->from('maildelivery@invoice.services', 'Invoice Ninja'); + ->from(config('services.postmark-outlook.from.address'), $email_from_name); return $this; + } } catch(\Exception $e) { nlog("problem switching outlook driver - hosted"); diff --git a/config/services.php b/config/services.php index b9218c37270d..e8f12e34cb4d 100644 --- a/config/services.php +++ b/config/services.php @@ -35,7 +35,10 @@ return [ ], 'postmark-outlook' => [ - 'token' => env('POSTMARK_OUTLOOK_SECRET','') + 'token' => env('POSTMARK_OUTLOOK_SECRET',''), + 'from' => [ + 'address' => env('POSTMARK_OUTLOOK_FROM_ADDRESS', '') + ], ], 'microsoft' => [ diff --git a/resources/views/email/template/admin_premium.blade.php.enc b/resources/views/email/template/admin_premium.blade.php.enc index 3b6e5ed158f7..10c67febf24f 100644 --- a/resources/views/email/template/admin_premium.blade.php.enc +++ b/resources/views/email/template/admin_premium.blade.php.enc @@ -1 +1 @@ -eyJpdiI6ImZlSVRDdGcxMFhqTEppdkVqTWh4eFE9PSIsInZhbHVlIjoiTlNzWFRXRlkvc1BFL3hiZnBzbWZqblVvcnpSRzl5OVdodTF6UUthd3RaWXRiakNiYjVlMUR5SlovNUR4cmRvdW90dDBLNE85RFRhbGc4VFh4VnpDTjRvZTlCQWFvZldwSkhDQitMUExZOXZWVEJlK1hWMjJGbWRrUFlKQ291UXAyWnZxTlpXbFViMlpYQ09OK0pTVkQ1NVV1MHdzMG9iWTE2VHhhMCtRK21HbGpheGdVNGR4TUorUklWcGlRaGFFLy9UQ1doWFMvdjNkVlMrNWVrb3B1NlQ2VHBqWjI0U1B2eEwwV3haZFNmbW5pVE8xcVZKeG9zdzlKTkZBWnE3b2g2b0lDS0dvbjh5M3haVDNyWVY2cnRFZERDS01KRmNXeTY0VWxIN0RDa3VZemZabnJ0M1BndTZLci9qREFtZmtZUGZDVWdFVjcxeDk2SUNTTmUwekpQUnIxajBVU0x4UUt4SjJiUkVpeUhiNlNxQW03SSt5WWhDRFlwc3JBTEVBMUo2NWN4UGpSYWpkNDFVL1RHU3FDY2pMY01nSUhqMlk2c1p3eWg3VTc3WTFhL3dFcWJBMyszdDcyQ3U0K084T2VIa2E2dTNJQzRFVDNmeXhVck1zbEptN2R0a3NTQk9URkFpbVUxWXYyekZoNUxWUG9OZDEzenljNVNDQVY3N1pNRXhWd1NEV01ySnpIaUFaSlg5dEhxait1ZFkzZmJad1l2QnhrckFDQ0gyMW14OThJNFlFUHptWGRVN1FDdVJtdnlYZ25ZbWZtVnNFaExjSmZGZGNBVlhOY2pyRDlzMVZzVjFKQWVMdGt5a3NEWnhaTDVVblYvQ2lWcWxLYTRBdnVhd0doZ3piYXhERVlwVmJoSGlRTW1TUzgveHNLWGZPeDJ5TEtNWmwrQjNSQWZjSWJkZUc2aDdlT3BKMHdibGdPN1hZbjR2eDBnSUFTRGszWlVKc2ZLOTZmOUd1eFdBRytxWk14REVianJheGhFUEZjSytLYTBUSWdMQlNWaU9PQ1VXMk1BZmVVc2lyL21Xc3Zxc2dtM29IaXFKcWxXU1EyTWROeWJCZzJnSEkxeGtVTnAwWWlROFpJakFqWHdqdkdTNzQ2cmx5MUFKemR5Q1JVRFYzY2xPRU8vRDRWbmpwSURaQU1vNnAzc0lKaTJqRmsyTzJXYUliVGhXcUhUOVJNalhKLzcxQWNjVDhCQ2dKTmVFeWhsSE93cXJXMEltblVaS3RLSkZmM3U5TzlQMUtkUEkvSlJTQ3FJWktXUitJcWY5ek1UbzNjTUR1djlzWkc1WGxGUjVNQ3BlVjM2YkZud3RJSTloZ0tmL0VEYjhkNGc0RmJkSFdZeFIxK1FLWjgrSTBuZDg0eUlpRHR1QjJmMmdlL0Y4YndnVitIVDRNYU8rNy80aG1aYU1LOExPNk04SHVxWGZpZSszMTJybFBrUHlrZlBnZzRrc2VpTTFRRzlwakxvZ0YvRjd2NVkydzdJdWZsNWVVd2Q5NFFXdUw5bmRSMEQzdzg4dXBlZ3ltQTUzakxmZFRlTUNWNGJydzE3N21qbjA0WDlocXZ5dWZHMzJSNGZ1YTF0NjlFcmtkeEpaY2Zsa0FsQnlxODZBYkpGc2RLWC80WHVEL1oraERwS2p0M3MrNHd0R0VoQ05lTWpRV0Y5UVEyYjVRVjAzSWZZN3hwbExrTi9DbjlJZTFSMDFqUDhmV0hMTWp4Q01sZ2tKYXB6dDJ3d2duaXp5NFBucW1UdHVVU01TaEZDeFEwWFF4UElWdEttWGtaUG8wK2dwaVMyRU1GTVIxZ21PQmwzMWhKVnZDbVBWKzNiTW1CbHhxZ0FMWTZGY2ZrNnc0dDBaYXRsTk9pajN3dUt0QnlibG9NeUFsUE0xa3JOa0hGcTNuQkNybEJsNmtnbzJNdFNBek1zeG1KNE1neUtPYWtrQlQyOENwQURKMDBIWU1DS0xxenFpalJMM2RqZjI2VkJIU1dzOFpBbERjMVVQeUhzRzNBY2JwZDBieHYrL0doNncwL01YUjZFTWk4UlNhVHpRbCtqeStCOEpBakswZDV5YTNvTTFuOW1ON0w1QXUwT2NYdm1VdVM4R0EzTXlHaXMxTWRjcXZyVDJCVmpyOHJxY3YyT055WUJ3QTVnYVhYYUdkNmYvK1VqZ0lYTm84bDZBVlFIOWhiaDZadlRSVnIwbXArQU5DdmlPRTM3VjhNRVQ2VUk5V1hhRVp4dlFINldWY0MzSjc2UGRsSkxBMDBxTHBXcUdSUmpYTHg4Uzd1K0tmeCsrOGlqM1JHeWtpaUNyd3QzeGVRZC9hYTBQdXgxUjhMK2VtOGtaUkVmN3ovQ0NiMFVTWjJHL0hzL1RlUWJRMklHVUtqK2x6QXZWZjBwdytieEs5STNmaG5mekloTldWOVRHd21pdlZXRWUvakpwazZ0cUtrMFF1dzYydzBBSXFMQytycEpDMjM0bjlLWUYrQXQ5cm1aUGdDcFJsZkR4Y0E2QUNmRTRwY0kvdGNFQnl5OFBMYnl2eHpTOGh2Y2JUNEg2Ym94K1FUc2NXS3NPMU5McEdLcGw5cCtYdTZEeUFRUVZzcGlpeGNkbzhXUzNzWnYrMW90MnExVndPMXJ5cEwxWGkwUGlYYTlqSmlYeUpGVkhWc051amUzeDcvcVdqaTZTayswNTduNWhxNkd4SllxajEvTS9rTkMwYjJNdWs5Z1lHd1RoYTVPZmpud3ZoN0hoM2hDUmx3c0t0bkhCN0QwWENuQ3FDbmlXeDB1WU45aGJaWm1rajVDa21LMk9aZVNwOHU0djdqOFhueisxKy9BeG1vbE9IbmhFZ3k3TmJja1IrcUxDSm9aS0JMYkVnbWoyd2J3NC9KSUw0NVpZa3FzeE1Ib1drK25POS9nd0g1QXNtMGFhR3hXcDZzMTdGQW96SkIzVHFlUVo0RWppTTFlbzVCeXRuMDFScUROY0l5a21kLzJjdWQwc2lqekY2NVFNU0VFYjR6RU0vNmlIOGpvRzRsbTZKL2hzT0R6MnRTZGhJUkVrbk5OKzNWaTZob3kwZzFyV0VyK2xnZG41MWlnSXN6R1hzQXpyaXYvY3VQeXc3TmNMMnJteDNUclM2ZTdpTHFJYmdkRFhsUHRtRmh1bkM2V0tJdkNaZ3VOc3djSktISjBOMHRIWWJTRHdhS3hoWTh2Wk5Dc283c0UvNnpUYTM3MlBDcGk0dkZ3eVpMSVlMMEFRVVRJQXhyMkVsZVc0azdwcUk5WjJjdGI3WUZpMm9BNGd5ZzBIUksyYUFJOFpVRWd6Y1puWUdnN0ZWNkpoVnp3Y3FaK0ZZb3ZGMVhDWitXbm5seUlkWFRHcWtYNnkzeVlwSHBUVkhRYkxMdDNPam9lUE9WaU8wNjZ5a0xTMmtYdHp2MXFJZFE1eXRLU3Q3NFN6RDZtZ1hTZXYyS2VaWTBMaUJYbVJOdTBlc2twZVRDWWw3VkdKU0lkZ1MwOHQrLzMyY2kvVnpQRHgxNjJXeC81Z05sWTBSRVNmV0lKV2FRY3NGQ0Y3V3VTTkpYTThaeVpocHlRZzhMbW9mSnE2U3dSU0FFQ0lIVVE0dDc4SjdndHlpc05YeWphMEsrM1U3SVdxMk5sQks2L2xPKzdFbWdVMXhWR1o1SmIvWUpwcVZkdmdmOStOWVMvOWpQM3FCV1Z1OE5hMDZpeEhTMVlIeFNmQW9mbTV5MUxyVXB0VFhxdk5sZ2dFbkZoYWxGTFhuaTRVd25yeVNoTS82OU53ajRyRnNGeWJHV2YrUjYzbVZNQkNuS3RTK0lYbXVvZGdRTS9WQS80VnRhQzhiUzlMNjByYUhVOVA3SmZQa05WUDVLTk4rZnJTY0dSSWwrMEJhQnhVZ3c2MnBSakJkMGFlWU9VNFhPWWgydyt6eUVhRVByOWk5WHp2VFhnckRuampXT2IyNjM2U0QxYStBSTlibDRNSlhmZlFoL3JQbXRrRHdrdGFLbWk2a0NDNFEyTXI3ZW1xUUlrU0RwQTd3YVg2cWxvQ3BJNlBabFB1WXlTMG10QytaMWtUalNsc2tBSzlkc0VjeGwyVUw1eHN5b2hLYTFYaFZHQVNzdUJoVjBPZkRTOUpiSTQzdTVlZlA1Z2VXdy9OVnN0NFlUODlmM1hrQnVpdnhkUlo2Z09iRmRaa2NxNW9MODdkeCtScXJGS2JyYWRIdGh1amFyWE5peGhZcWlBRjhzMWdObHdGNzZpZzd1Mnd1Smc0WnFHTkkxWk5idW9kSG05UFBYSzhZak85UUkxd21CMGo5bkJkN0FwZzBUcFJ3NjVBVG0vRDBDU3F3WUtaYmw3eXM4UXBzemRtbWUrU2FYR1IxTXhwMTBHYWpuUUZjaTlvZjlLSGw4b2pKdEpkdFpya1VkQitFSGtWcGNSQ09QdSsrMFJ4N1FzNEg5aDMwaFQ5eGYrWjVrc2JTdzA3c3NwNzVjaXZaUzNUeVZrVHZsdG1WSFJJUG5rOTRiWDdoN1g0TWtFL3hJcEtrNHBPQllHSXRydTVsRFNhRzQ5b1R6dXAweDhUTHRaSmYydmFLMnNTRHF1ejMzMEVCaUNiVnNFQjJ4MmJDeVFFTlA1N282Q01rN0lMY1NKbTJZZXdXR0hQeHFHVTJ4N21LNG0vdFR1N2QxNml4d0tqWXpNTUN4Y0h2L1haVEpNNFhWcEFHQXRzK1c2bDk2OTVRQU82Yi9lVXVVODNwVzNOZkROVXFoRDZWdG04bUgwSWpDMVJqQkhVMGt2akZ1NWN2NVV5VVp4U1J2ZENkRkR3RDQrVXFFaVZFbHVoWUxNcmRoVUxKcDYyRUxRdUVtZjNlRnd1dlk2VmVaUXRibTVabDJRZmhDNng2TU5kV0xma2t4aXUvY1E4SnpOOSs3RFdVNzREa3BBQU0zbFo5UVVkVWVYcTlubFRqM1BnL0FYNHdBOWFPZ1h5MjFmRm1XK2ptM3ZJMmZKU245a0dZWURMNE4xZXBPa0JGcitTMnBBekF3YVE0TE0zMCtGaG9JSFk5N05vWkEyeE41WUVkV3dvUUI0OE5IT2kwNVpaVmRrbFhiVmVPREU5ZzIzSlVnRnFBbXlyYzhVNzQ3cktnbk9BNzFuN3RmZGdrcFVPcndtcGEvMVU1Njh6RG9pM3krOXZEc2xsdUZaTGloT29qSWZCVFRuQzdQYnNreWZvendsNmQxUkl1VVA2Rzh3Ky90TGZUZVFibVIza0hXTy9CaENJSzVvOFBXSVJ0R2V3VVVKL0hrcEF5ZklPSXBHUGdvblhxQVVGSkRBaWY4alNHQmtId0lkQmpTTzVmcDhSQVR5VFAzdHl1RXZsRVFVandNNHJFNW9FSlEzLzB2MHZ3dERSekxidEZKMm5qK1ZwU2s3d0ZEb1FxMHhXYXpJSSt0RHhlZm9TRTEvRTVvL1d0T3VXaDFlSmxxbWg3UDBraWptVTNpRTJYclc5ZStyU1ZYMXh4YzZFTk40NFdMQWQwZlptSUdOOTg4bXE0UmdNSnNZaUpVMHlDd0kzaGJVbWFqVGQ1czZZRFhMeGhWLzg2NWJZdHcwN25QY0pScHJES1QxS0h3a2JqeTlGR3lZRFRtNTVJZG1vWDdIc0pNNm02MnFFcnZ1OU1PSXViQm9kWENaRGtYK3VaemhneU13NW5MRmNvSmNIZGJCVmVVRnhBL3BrOWwvbjVaR0g4eHF1TUduUXI4cm5TcDBCS3Q2ZWszT21rK2I4enFUQjY4b2VVeEw4elh1dWwwTTRyYnJtTGJKdDVMc0Y5U0l1WWdtaFFDdGc4TERtSkR1VmljSTVyenNMYnNvYnY0YWdWNU9ma1dzZ003dC9WWWpjdGZ4Zk9YOFU5WG9tNUtoRnhBb0ZXQVo1UDUvdEFhMlNuYWdzeGpXKzhHbzRWeFFrMWJqbit6Tko5NitZMVFBMWNXUTgzdndxc01XaEUvdngrN3RXb3V4aWlMVTc1bUFEUUJic3U5VHJaNXlhMGlvNS90cmxla0RiNnZIVDBHanZaVkxyYUxuOEhIQ21peEIxT0oram1sbEU4dmEvYUFrN28vQVVMSXFMK2k3cWFHOHJSUDV6d1c5YjZjTno5bmZQU3dSdnNVQkNPbU1zSEpENEExMUsrZWVJT2tvT0RrRGtXNTRLY3I0VkdPMEVlYXRoa0NZWFE2SWFYN2xoS1JIcWJvSjY2UGQ5VFRRdDYzdkEwVnZLbWpxS2RHMGZmVlVPNURwa3NlSDRKaXFZSjNMbE5SMkcraXlDZ0RlQ3dyL1FjY0ZpSW93Wm1XYkQvOHZSbTI2ZHhSc0VBaVM5L2xBdndNNW9rR0VLTDJ5MWxlMUFrS2tLUkVCTTZ4MVFIYU8zd1NyNnExSDM5dlZtcGZQMzhqS0Fmc0hvaVhHVmhidkZTRXJTcjljSVlTb2FvMy9aMTdUSzVsQ00welVUWE1RSno4SEhRelNzY1hoaXk1TkoyRUtJeG5PS3BYNjVSNkp1cVRxMXFvNzZsK3FoYzZQOHlCbHRKMll4aTJiOTZKa2lHSWFqZ2YxWW9oYlM5elNwRVRoSi9KeXBjR2xueVNjSkcrUzlJL3hXWncxOWhLU2paMkhXMTFnV1AxTG5wZXNkWWR1SE9keVAwNk5PTENtckFtaVNTT0JiNU40czhObG1DekVWZmYrUWxwL2U1QWZqeVBPWktkR2VtRVkrMjR3QzZFMW0rZkZBakZZL29WVkxmcEJzNzdSeDl2TTZjRnhXVWkrMkNidlE0YjRvUVluc1dhdnRwOEhvUjNuYjFEV0YwbW53dmRRdzQ3TXhwQ2NYbjJrMTBNSTdMd3JmMnZlTXNHU1BFbVdSRklncWozbHE5bEZmN1I5ZVVPaUswejJsd20yUFAxbStJNlI0UW5ZUDdENlJVZ3JpZS95ZE9uQWlZOHlsSnE0SEh4eW5LazdOck9aU2ZqMnFaTGxCdTZKZHo2NkNBVG5OSmtzVGhkTVNXN2RrUElvTnE5bGpGTHhpSVU3Y004U2FWMTUzcXhDQm95OS9hb0NMSlZPRkluMkJaeUgwYitJbjdESEU3bUlqU29NVnZBV01NNEwwRXpwVjArR0djUkJmallWNGVoNFJZaUNZU3lMaXdxckV0SjlkRnc2ckxmY0pOeDJubDJidld6QldtQ1RUUlVZVEtPZ1hsTHhSU1cxVEhRdnpZSHNkZEt5VERKN3JhdTlTb0RkN1lST3BiVVJtK2RMVXNXd1pYVGFRbTZWQ0VZcGNvZnFBdEpWSXVRNUdVc3l4U25jK1l2WG5TUzRibXBzd05TVndkN3EwUG1LWmxNUEUzcFArUTZNS01SdHduV0tQazFpVkN6djYwM0ZibjI1Ync4UWxkR2RyNEZNN0lrL3J2Z2hLQXBZS0JUb2I3RWZUUkh4S1hIQkl4UXBaR2E2emwyWHZMZ1ZPNXdsMmFGSDA0dlhvaytjNlErMlhvZDJiaG01ZGEyRTFER3FkcnIzWlJtaW1rQlZCR1NWQ3IyZUhFU01WaVVja0x1WVRaV0RYQisrUGhxTXdzTEJRaFFaNUhSUVMzTTdjZGxvS3ZNYjY0OEJWRGdZYS9VZ1RKenQ4Z2RoMkhZSVpONitKSldxK0xlQ05uVE8zRHFkeE1jQUNvMnp1c1JiblBzRFdqR2pLTEtyd2F2MzB6b0R0WFNGZEhWVkZWdGh6Y0VZVkhVNngxcXZ0dGlmbFU4VFlYTTAzSmRwV0k3WjF2REdmT3pESFZESkt2b0ZnRzBSd1V3NXUxdDFtaXZXdW4yMU42VFFvbS9kdGN5V05PTUVhUjErVURGNGF5UFd6cWwzcHR6RFhsVDdxZmwxTFJzY0pFc2lDV2hSM3M4R3hUdTlOUXRJSVkwR01ZSUM3bXl1QnhLSEhnZWd1SDNhUEcrWnZncEM5N1Q5S001bjg5WmZOK09POFJ3ekV5bWJSeEQwK0lFU3gxT3ByT1pBUUlUeGlONDJGV25HbkwwTnBQSWtGRnhlMm4wc281K1loNTBUMFlZSDA0ZkZma2cvQ3cwNmt2NnRaTEQxQ2U0QjVIVElwMzk1OXBIN2dFYi9PN01YMkt3SVhkYnZwbllpd1FDK0hzeUdySjdjTFhhU0wwbHJSSHNBZzUxTFVzT253R01PYmVnWmNVMWhnWW13T3NyTG43endRaGhmMUNJdHBrakRWeFNZNEdya21QelJtUFplWG5pRDFFWFJTZUM1NDNMdnVTTmQzeEZad21PNDI4WnlKTWJ4eTdjbkgxRC80SHlkV1czYkhPZ1ZSUWVFd01pcm5sTHIvYWxGUi9qejBvNUI2MkZiMHV1OEtCNHgrQ2dBcTZwbXRBQVR2NWdJc3phWHp0c0hpRy80Qk8zMldHeHgza20rRVA2N211TzBPYlhZV2g5MnpLZllKcFhqeUlld3R4N24wVk1SOWVpaS80QVJqbEt1WTJ4eDNIaHdPUE9SZzc0Vy9sQVNWdEFqQjNZQUZHMFRmd1RWbUJGWjQ4NDlMcDVETXBjY1RiMnFZeXNZSm5GaGJBUWZERzgybGVNS1lFVHk3d1JBdG1IZFNQNjc3NjNudmVpVFBQczd1dFRNVW94c1VFbXl4dFFjMkhkblBFbCtEQkk2YXV2MS9vR0FWdjl1ZitaZDRCSk1oTkpDeGZQQlg5NGJvMUNXMklWUnNoK0JCcnRTTFc4YjdIV2tiY0xvQkdycWhJSUx2U0hKSlhNRkJQa0psd0lYVkhGMCtuMitFVC8yQkErVXQ5WWZ4VThwOXlsU2lKVDI3bXFBVXJYQWpneDJaYUo5M3B2ai9TT3krUzRJbVdWV09jbUJicUFYSFlmUk5OMmxMdTNTVnU2NzZVUjlVbTk0aWRObnptNm4rajlReDRKbWRNMzVIOXVPU1c3MEJ6OHJLb0MwN1RYSTUrd0NhWTl4MlRZcU90eUY3b29UWG44RTdzRGRMTzlKZmNobVRyNHNUV25PWFNoSEo4L0ZFWE5LZkFob2Q3b1granUyc1FtejFMOGJzK1RmSUdkdnZVZ0c3MlpwZ29aZytiWmpMSkdnZkFKNHdscE1lQWtNUE04VEg5SHlGM3hUc3RlVTlOM1IyNkp0b1JDZlpNMTRSUndYd0JJWGh2KzN5RU5ZcS90UkpFTWNWaW1EVXh5QzRxTWFYTlpYcFpKVjZxNk1mcEUzNzZMZlRNVWc3YTl1Ky8zNDhpQ2NGbFB0YmplR05RRzVCNndIQ2JZaGlnZ29QbkFrRTNtZzAzRkNCbElWY3c2YVZCaitiMmdoR1Z0OGtCYUxPVUxyb2ZoZ3dPUkdkciswRUtJa3B3bmdOY0F4a29hNmE1N3VBa2d6ZlJWL2g5VUZSN2J5eEV1U29ZZUlWR2h2aXJIMUpnSGdsRzdlUU1nVG5JbTM2MTVNT1lzVEp3ZU1oaHJQeGd1R1RpR2x3RE1UNlVKQ3FKdUtaUjNmWFg4SmFiN1NpL0hueTBkWS9WUEt1SXlBbWlVZHpCNVF6QWRndjRtRDhQSk9EemdIemZValdBUEpURnViWkdLeExxV2lNaXBIMFY2SEFuRCtVMlg4c3pjTXBOZmxjMkw1NEllMFRzZnMyUjI4cjgzczZ6dEdOWVhTK2taRnczY2pkUzJMdSt0bkJIRldlUE9mbk03Q2Z1L3VsN25YaHMyWUhjNFFPTGZGdktvRFlVU3pwUHgwem5YdGVGVU9BYkZ4U1BxVitnVllJR1B1YnM3SmtMMXV5NGV6MGpOWjcxZ1c2NVl2Mkl4aXczME0vc0JxN0gzK3FCNkhpaVh5OE5jT2M3S21MWS9VM3VPZG11dlVGNWxmTURBalRId094Rml1V2cwWDlab1liL2ZXQjlaQjJrcWNlWGhpamI1YmJLWDhFVm1aQ0tmWmt5d1k5bC9pYW5rSzV4dG93Q1NuWFRkQUtjN1BKOHUxYW1kaVgrU0U5MjQvOGJRSllHQjU5ZWxKeUhsRWRxR3NRNDhVcDBITEVDVkdWZGpqM2VlWnBicVJuOHREdTJXY25WaS9CZ3N4L0IyZktNK0ZOSTYrYXJRUWFTdXJlc0x6WklTTVJhUGVvUDVKK1NScFNkNDJ0UGZUOWdRK215ODlFa0RMQnl2aWpKbitTR2Y2SXBYcHVsaHo4VUtWL0NjQlBGKzF1SDFjdnBra296LzB2SExkVmhyc2VjTTEweGlRZU4rdm9xeVFlMGhEdHcwYWZxWUUyRXpLQkN4ZTlOTG9tSndDVENCb1oxM3cwbURia1ViUmk2RzMzTWROanROQ3lUOHljYUlRNHRZWHpRTnZJMU9hTDdzTVdYMDdaQVU2cWJ2RUJOSVdNMVNWODNDOGZwS2VEVFUvWVBUZmR3YVFaQTdUUTFSQzAvN1pQWncxUjZ3L1FKeHpsREhmWEVGNlUySmVSY0hOU2sxSGZrQmFwNWhMYlB6YUI0NXVOZnl0eE1KSXNxTlBhWk5pRTM3Q3o1K3o1eTdyVWVlZC94WndwNWJGaE5pbktLY1NlSTYzWkVrc2FLa05CMEQzeElHUTFqYSt6SjdwZVJpSytCcnA5eDEyMDMwMy9rdGNJbVhMOHJ6bkdlSStkTFMwTnAwaWt1RWFMc2ZEUlgxVkkxcGRVY1ZMVEJFMG4velNMbGhrYXlhYnZGNm9VRmh3N2gzbncrb1dCeld4anEvVGVZVnRTRUxOelArQlZZcFlrWU92ZVQzaytJOWdadHJ4dzJ2UHo3YnpER1RIb1l5VkV2bXA4SkNndkZQOFJkT012ekVucVA0OEdIdjZ0b0c5MGVpaGl3K3BWVUZGa1BlYUtianl5YVdCNzdrTmFwbS91QWpNUFFJck5zL0diQ3pqYWdxUVFHcWFMQ1FrdHlUeUxJU0pyWHdrZ2xZQVVjbW9EQ1NaZkZhY0RIYi85V00xWFJaVlAvQmp5TzNPNk5zOWl1VExGZkpRc09Ec0toekd6L3lqZkFCeWFQY2VuSEczVXpTNEpBekNjeFNhTVIwb09tZzIzOHFKRzBaR0hsbFBwbzhOVGRTMDVPMFVHRkFwTkJCMG5mcVE0VWhueGR0RXhYTjJjMUxJUHhwdUxFaFZtcXBER095YU9PNE5KYXFyRnliY0MzbDJCMTlhek1EYWNUeFAvRzg5c1gyZG4vZVFuaEJ5b1RTaDd4Z1lOc1RrcHNvQ2NnWHlpZ3RIOHFNRi81MFlXdDVlZ0tNQ09DZnlBWmFRZkJGa2haTXJFaFJ0b1d0enlTSDFwZjI0bFFGckcvbHZ4NE5MZkFydExKSmxVOVI5QnNFRDBYMXFteFI3NXlhbGUyaG1QQkZ6WDVjd3ZuUW9nSkJqM2tTaGVSclNEaUZNV0Izc0pwcEg3WkZtVU0yeXhaZUlZeGxkSDhTSTVsVUx4a3VLbWNvMVRLWDBMM3k4OS9aQ3ZjWWtTNXVyQm5YQXFsTWoySkNXMy9mbTRham5kc0FvTjlScitLc0lKQ0RPcWJjczNUaE9jc0p4U2FQRmdwd1ZOcGZwVmZFQWVGZkt0TjVvUzdRT3pkMFNqVnhrdStvZUlDR0ZKeUlXTS9VRnNvbnpYWnE0aElBeVRhd2FpZ3lIWmhKZGt3VGdsVzRpL2E2amZtRVArcTZJMU53NHplQURLYk00MGtKbFBZUUdyTjdrUzFTQzVtQVFwUFRONnNKMGUzdDc2cDlUNHpiTW93SEVyOTU1b09FY0ZBZE05Y2ZHYWN3LzQ4MDkvNzNnZkJsNy91TXRkeFV4N0hvYjQ2ZHRZVGRDMHBwZGdBTXNiNVF2TnJHUUhtaW51VmppSGoxcUNUNDBwbmdNVzNxdjRTZnJxR0orWGhJNHZzWDA0L2FHVHlIMDhMalB2V0lzRk1SWVkyUFdzK3BBWnlWeFQ4eFdCWm1vbDNUcGl3cVd0YmRlRFgzS3FQaU1ITnVJM3Y4WlZyYXZYN0NtTytOM083THkwZXlYbEdVQjMwWStCL2pGQXFMdVVXL2FrOGZhbEtWM3g0M2tvcEFCK1ZZa0txcERzRkdqZCtibVZFbXFMR1JoZ0YyYUtPNjhOQyt3TURucmMyUlhHMzczb2hhV1ljcTVtM1VObVNkVGZlRUU0dHZydGowR0xtWmZ5UG1NMzRmV3VoUUN0bGZMcGNiRWdGZUJlRFJDQ1dDbm84cDZkWWNGQ1Avd05udkRHTjdLSkNuV3VhVjJyZHhzSjZNdGd4NDZOYlV5V01BYW5VWWNOTzlQTTd6UjlTSXJUVDJyemx5VHp4L3JKRWpyekk1ZWVLUEowRnV0eUF2djF6Um1IK2lkekk0aDhJR2FLeEluUUFjMmpZdE5QSXJ6ZG1HQlh0SUNPa08vNlZwQkFIZEVNMUh1VWpNaDlTb3VDZnJqTFhyR2VjQ3FaVERqT3NYWXZNaGErZUtPbi9oeUJ1Yy90NzlpcUpTUWlRdUQvaTNGQlhRUHl4STF1cTByUTdHVENESWp6aWJOK1N0VzhrRkJZRVJNcC9tWFN2NlRaa1Qzc0RsZUhuMGUxbmNQT0dLNG9Ua0JXTmgwMFNLY3U5Y2VQUm1MazMrNjhQK3pxSDFUTlVXeGQvSXdoWks3K3pnN2pXa2VZc3JhVi8zNVFldkg4cnFOcWRjTitrbHZtS1l1dUQwWjNHcFdwUmtGMkRINnNidEdPeXRoM0l1WDVLUUZIc3puVndhZWlMeUo0VllCWW5wZUNzYVFVRzNMa05WZG5GQ3pEb09DWmZoMVd2eDIwdFE2cHFZOGx6SWdsbDdjMlJLR2NlRVlZdXJwOEY3ZW5mYmd4c0VURHlmaEZJbUI2NmxQYVJzbmVRMGdocGhwWlplMVNrc29ZRTA4eVF4VTdnWU9BZmYvcnYzdlZWZkkrY3FnL3IvZUV4dDlPNmRPaGFJTUQ1ZjA1emxnRUMxUzlKUE83OCtKNldPR0k4WkQzdFZVaHE2OFZBZmJoMkIrYVdsUXFDNzF0aXA2QUVRUTh6R0hyNkFHelhGcEFSMm5tSk9tMWZVL2lpM3Z6aWF3MlJGRlhqRnVKc0dMb285bTh6WlNzam40bXFybXhrN29jVUt0a25jWTNEZG02Vkh0T2o3VmpxZXRRUHIyc0lqK2xPVjlNUnU4S09ZTFVLdjJxdUVJRT0iLCJtYWMiOiI5MjJhZDBkZTA1ODQ4ZTA1YmE4YWQ0YWRkNmE3ZGQzMzdlZGQxYjEzMzQ2N2I1NDJiNTAxZTVhNGZiNTdlODQzIiwidGFnIjoiIn0= \ No newline at end of file +eyJpdiI6Imh6NlFpdHNpU0FON3hVb2pRaVlNbnc9PSIsInZhbHVlIjoiQlkybVMzRnZESUxkQUNXejdsbjlsRW9GajVmZzRVWnlQRGlNemg0RXRUOWRvNHk1RXY3aDZZMzVXNjVURUJJQmZ0R1dXaVhYQ0VZbFlTTGRwM2w3S3ZCeW9zNStrbDRWdzhtSDh1ZWU3Nys0R2thQVZCRjB4ZVoyVnB0V1dyYmVTWm9RMFRkOEVyUVY2WnBCVVRKbVpXak5LNXIyVG1QZysyRGIyV0ZkU2szWlh5KzA0WmR1dTQ5WEl1a2ZVYUJUV2dOSGdGbTk1dGlvV2VVRDVCQW0zQ1hqcGRmNzJvRFl4dERlL2puc2ZlSGh2clJybkNiYXN4UUFOajZrSXIvYjdBajBmL2NJQVlTVE9lbU5ZaEl2VGI1NHZkTlBrRGswZGoxOFY3bytrM2dOamkzNnhJNVVYWHBJTkdsd2xuVTlxNGdzRUsreHpjNXJUWG9EZlNzZXo4V2drZlZ0VGJab2RPUnlNOVVZSVNPMG16Zk5pMGxjZEtrQThUa3pXd1hNY1pBN005aXQycjFOREFlS1hTVzlHaDhiTUo2ZzNhdzZQV2ZGVjlDUmp4ME9VY2ZMZWVoVjg2RDVZb0JzU3pnNTcwQytHUXNNQk5HT0JJMDNObGw1Mlp0cHlmakhhK3N5YTJ4dmZpRHp3aXBYL2d3QlNMZHJBdGVmOUpDcGVYa0ZIVzJnVFJ1TDZlQVZzTFJFeEVaYmM4OGtVNjdSaEdmUU1JSUZiYTZvNXpLYU03Q2dkTUtTZFV2d3NRRE1xZ0I2bzhVeitJVlFWcFhubHoyTnpxdTVKeVRjUXlmOVhEQ2xiQ29oVDVOaWtJcHIxWk9IODJjZGVqcHgwSER4WURzclZKSC9CM2Q3STYrSFVRR1lMcEowNkhWUk1vQy8xRG1kZGt3a3A4ZThRM25HVC80TTZZYW9aeTJWZkVnUnhOZ0daWHgzeEd6cXpFdmpQTE45M0lKUmNuSTdXU2RDUnVpcXpsaGxhQkRKa2F1QlhORDJ0eSs4aFZTV25SNWVob1dGamc3Yy9Id0dGdUJVcElQRFVxSUJvdnpvdFFibEdpMXJ3cFJ1UW5CRzRJV2w4UjVQVWI0ajQ4WVJqaVVqckE2Tjc2QVFwZURjeVBJaHZ1K202OXh0eHgyanZwM0RVVSs5Ym5IcTdXU0NkT2UvNHNKZU4zRVVPendWN1crdWpTbHJIZWxHZW5NZVlQNDRMbEk5Nnc0QkdXNWZKSG1wa2hPbXpJNTBZbTBNZXdtOVZVNzYvZnJmdTlQR1hlQnIrNnVvTXdWbFNkZG1mQitza0sybThkcmFWOExtb2JuZnNDb2Y0bnluU29PTVBlR3MyUk5DZ01Qc3dTRVoxVWJidFJhMDFUUDIzRGhvUkZQNHpRNGFKYTdCZjAwSHl6a3RhT0srOUZmQnFrS1VlTnRuNXZjWjdFbE1lREhieU9OOTR6SkV4L3RVUEpnZFVMVGJPck5ON3cvNHlLQ0lVS252MU5kOXd6Ym1SVTZHQXFxN2lLYXpZaGg4dCt0TkV1S0J0blRkZDVVS01kMkNmMWIyZnlUUmIvSmpUaFh6TGVFTHM3T2FRNlNRWkhtUURDaEQ1RHJTL0RHSW5pVStUNEQ4c1piVXduMG9JYktGS0M4THZkWHZhNHNXNEVUcDlLbTcyaEVTcFhMM0pMczE5Wkw2VDRhdU5KZlErV1AyRFRJbFB6UHlzZ0NmVzJGaWliYU1seC8rNkFHRElFNmhiODlsZmZyV01JSnhrdFFac0dFa0Fsd3JHeG9tQmY3cHpuUEd3MkJvSm9Xa2xSRjN2dUdvK0NHNkh2UURoRWJuSmhkRU93cjRMYklxSHBqbmNYR2packdaY2xLa29pTkpWRGRDWXY0WWlmRVZsR0d5bFpjSW5iaHAwNi9uSjFoRFdXTFliNXpaWVBjMUpnSkJQZ2JLMkVSMzlEZi9RQzZESklDOGJ5dGhVczg1V0phOGVwVU96aEppL3hhRlIrMGlnNFZHdVVhOXdXYTQ4UEphTzJTSVFVWUtNYzJ0SVVWVjFwVnVkbytuV3JCQzBmMWFHVTQ1TUJaNm8vU3JnZVRhbEVOZFQ0MWRnOEU1UDBja2F2RVRvZzU4VkxsUm1aNDcrVGMwUmV0MlEvVVI5bGVvQnN3eDNwR0RibTJ4Q3BSQ1cyT0M5elJKMXZnZTY4VnhPMURkUlEvNkl3V043MDUvVy9vWE1oQjY5bnVtMjdBZE1hVENzTWJpYXgzYUQvZzl5cy9ZRk5Ea1VaUXpjT2JMUTRGRG9HU29CNHNwWlJjNmZLMjBQSWVnWXhreFRVdnlaY1BTUVNaeUJwSlNUUnpLZFBVekxoS05WVmZCTUpnMkVLblVuaTNNWE5lZ0x6Q3FwVG9kb0tXTHRQdDRqb1JpUjFibHU0cnFmTG5iU2JmaTY1bVBOb0JSdkxGUEZMNmZpc2tWOFBSem9zU00xQ1ovYmJGaXdwYUdTSG5FSnZPWXpzQzQ4NXVSU3Y2YjdYY08vZkgxdnJyaGNzcGU4Sks5SDhnY2lKSURJdDFEazRhRU9YdVN0Skhwb0JvVmkvY29MRFQ1UmtyRCtmUkw4ZE85WmhUMW5yb3BmTzEwZXN1azViSEU1ZDF6cDRYL2VPQWFjb2diTjBZWHhTYUgyMzJ2YW9iOXp5WG9aTUxOK3RuNzRhZC9WTm10VStLeWRieHdkTUdYb1NZM0VhbWRZRTF2TmFlYnp3bUc5RVBOK0tMZlp6WXJkT2RhYlVTcXB4Q1FqRFU5Qmkzd3lrNnRqSzh0YTJmRXFEdzRCK2dSeDl5RXI2RmJRQ0hOaWRTbExoUVA4ZGNmRmwrNFF6M2p4cHp6MWxabTJlSjJMTFNETVBZbnB0cFJsemp4YmxJNzl6K2pPNDQ4YngwSkJXb2c3L01ENzhwN2FYU3FsQXlrWktvZ3RaUHhXbEpWM29LYmkwMFZ1MW1oT0hRRmxzdURTOENEbGU2aytzQS9nWG1mUFdOMkhqWkE0UFFWZ2l2V1RjZUhBblhFM3RDVytEcmphWG9DblNya296S09qZWlmM3hLd2FFRThvdENTeDl2VWpHRWV4TjFqZDNwN3RGQWozQzcxbWN6emd4RUlqMjhvSFJxekp2T1lMUG5qenVwelFUcmdiaDRRemV6VGpUTXMxVHhkUm10TG5DUlVmU2dnVnJPRUpCSTRmK0FGVGowZUdDUkJlWURhek5ISGtZdzRUMThtSFNlK1RnNzRBaU5qUVU2RjdFT05zMnF5VzhYMTZFbDR1WURJQWVQN2pGY2E1bXJxbUo2bjF3ejVOdFBkT2J2a2N3cUhETEtyTSttSloxQVVSTTRad2NRTERQQkdUeloycjVReWh6ZTV2ditVdjlaYlM1KzY2dFNpbStRQjVDR0RiRWIrTCtXTEcrRUlxTk1Xa3dxT2h2aVJmMS94WnBMQisvZ0pnTWljU2hhTXJ5Sk5MVU5DdXJWYnUwVUlkSzJ2UDZFdVIybW9ZeGpzc1dkWkRSNHFyenlqZWtmejlSRlloRnROVUhEYmpteklpQy90aWIrUzFUWGpmT1M2ZW9sVjBkVTR3VUtzK21lWTBXcUNXY2sva1BCc2NRUUlmT1QvTHhaSHE4WVg4M25SdE5EY2prak1UL2s1d1ZMVjFuR2V0VDV0b2JkcTliQWhLR3AzU3JmWWVWMTBYam8wZ0Eva1l2bDAwY3pVK2MyaWxKK0kwWHRZYjVlaDE0ZkQ5bm1NeFVkYnc2RDR1UDJlSHVKYWVnOE8vU3JjbjBkb1dBYWEwNHhXTlF5K2JLdmtNVVRjV3lOM2lpWStTUmNEZSs5TnNZczVCV0Q1VW1POTFsazlWWWlWK0R6OGMxamdUdmdhUUw0NFVEVjhmakliM2x5WUpFeWlkNnhkQnBMeEY0Wk9QN2hTVmFheXlTVDE4SkovSUluSXhMUkNhTHhLZTRDNkJkNjk0SGFZN0dEWnpPa0FReDBXVlN4bFcxQThacUt0dWJlSEQ2Mjd5emg1NjM0SWpaQWdJMWRxVGQ1azZ3aSs3QUxnREk3TStOczNPd3pwTjhYSjZJY3hvWnFHd3JuMGZIa2wwa2c0ZjBCMTVQU3NlM09IcVBGYjdxRjBTU0lTWC8zYXBJaWM0R2RBUlJuak9RaGNuTURuWlNGRnJqV2NEQW93SmRNa0s1S3o4VHc5amF0bFpjcG93Z3RNZVdlQVNmUlRKcGR5RDRxU09wWHBES2d0ZDFiSldwU2tpRC9adzlwZC9aQkltQUU0eGFzYTAyOFJ2ek5rVVZmK2lCQkhOb1U4SEE2aVFOL1ZCam1ZbzdOTGtkVUhtdU1DSCtuSzIzRllTNnlQZStxTXkwMWxHOGtDQUpCaUxKcE1mckxOMi94OE5tQ3FEem50d3FJaVRVMDdSWHBrcGs3L3FZSWx2UHFXVnJDbHRYMHdMcTRQMlR5SHZRWkFRcnZTczRLcXhsajcrd3BnMzV0RGljdHdVWmJyYTRxWTluZzVzcXBBNnZqQ1BFNXFoYmNiRmtBZUgrTktzNTBqVHVHdExpZEFUUFJxVy9TZXNiZXJQSmkyNDMrYzJaMG1YQUs3S1lvRGVRaStFbkxpNStEamtFcGJuSjE1b2V0UnVBaERZZ3AyQ2Zka3kzMnZKVTFFNHpuaEVXU0tjblVnMUtGQnkzcTBZQ0FVT1EycEVVMmdndFZlNHJzT1pUVjZaajlIMnR5ZDQzN0FTSHpSdkw0aXZ1Qk9GUnB1eDhmZlNoNjM3SlpBQXBEZFBZY2lYUFg4Q01ZU3E0ZzBhSkdIQ28zM1U2V2ttOHVBQW8zVWdyOGJCa0lEaklQZFMrRnBleklJTXdqL1g3T1BPS3QrcDZGT25NRHQrMjNMeWNWbHF4M3M5OER5WFFZbjBpSjFwT0wvRnBOa1Y5QjVoQVIvMXJ4TWJvUEdZYXNudXIwalBoRFBxVmhMVit2Wjl1VzJKT0FHd0NaR3dWMmxQK2hubE1tQnV2SVJQZXFuRzFYSGxYSG9jVDVzS1lHWXZFOTZnNGxsNkdQNzV5R2ZTeXVqQlY0Q2JxSUNBcVRPemVHQWdiaituVWc0Wkp1RjdWNWxETkpVSTRPdmh5d2ovZ29NbkRRWHo4b0Yxb091VG9QWnkrTy9QRUxUVmZSTFQ0aGxoYVphRittQ1kzSVVpbXBLYitKRldLUU03R1ZmMGFsZEhlWkNkNk8zc2JhLzlqM2gyb2wvbmJUZ0RnU2pIZFRzN1c5TEF0ZUVyaVVyUDE0dGQ0ajZhak5hcmhldXZVVWtDNHRCeGlvNUlHN3NYbnRMVGk3NjVudzVnOWtHYVpuK0JYUDZnOHdsT3pHVVZ6a2M1TTJUNXk0Rm1yUHdyQVY5c3Z3RVhJeFpYSHhBMzU2NnowZ0VEdUFXc1J5MzZxeFcvNFU4RlMrMGtWY0NpeWpkamRkRzZ1M2pYd0twVFZNdkNMeWN0T2tJa3pmcCtSZko1akdzaEtQWnNBem5ySHVrU0t2cjdteityeHB0NG5ubGpJc1BPTjdWNkFYV1VaalVrSEJzcWFVQTdnY2hHNU1LS2k5NEZxNUJLVGxCTWhia1VLUVdTTU5mcXIvaXRkdVF0NEFDQWVFcm9rSVVKYUJ4akxibThiTEF6UGZFVU10b1I0N1dxZ255Q1FTL1pUUTJTWitaWm1QRW80RFJFQ0k3Zm5zaUVCOFFvdGF3aEY5dlZzUkVHTTU3bnNOUEVVSDVPSThVT3ZNeUx2OU1GVi9KTE1VbjFhM2kxRUdSblg2WFdmbUl4ZVkyWjcxeWttM21FRSs4VHB3MVAxeEhlMi9MUW90NHQrZ0ltOFM2cjExN0Y2NHh1VllzaHFpVGJDVXh1S3BBRXVwU0NEM3ljNE1OaTVvejNhV0lzZVdRc240cFBGZHhRZVBWaFFsNTljMkpqWU1QeTVXdTFvcWg0UVhPZi83RnlBdVI1V2VVeGMyUTNxOEhKY051dGhySnhtZ0ljbGFQN2F4dldmSGNxQ2dOTDJPSFBXUWY1eG8vT05aU3V4MFlRc0l1NmxmWlRQS0tndmpXZVJJNnViQWpLYjB1a1doYmFETUpidGRIS0RXa2VOZE5TTzVQZ3VWZndkOFNPL01vUVhrUHRJdzlZV2lnYkJ5MnRCdjRLVGJKSVVuL3BOdGNUVHRGa1lBaXFvR2VSTGoyZ2FIT3J1NWUvSmFlaitGNlc0RTJkeFExdjhRM2FNU0FaNlozZW1CR3lKbUcwNmwxQXA5N292NjVJS0JiUzdPOFpRcUpwYnk3Z2JuMkREbTBScEl6cjBOclNSaEFzQ3haaFVyT0hpWjhYZm9EemNjZTc5RDIyeXRoK1JrNmZIemRUcGVPU29MYmRSOFZKa3BoeHpFUldmaWtKRWkrTDJ0VnErZjJjTXVSYU4yQ0xZd0NPTEJ5bUdZYzZvZ1BUSmtvZFVMTm9VeVM2UWdpaFFhZGVVZWxyNnRBaGwwSC9XSE8zVnlFblpHRW8yeVNvNkU4VkowcHhmY0ZTQ0c0U3cvSEwvdTM5TGJrc0RTRXZzS1hpMmlIelhmZmpHOW16K1dzUHc4cE1ka1cvVWRJTm9nOGxQalJxMHNWRHppend4aHE3RzZGR0hBdUtZLzM1WjJMeGpjaGZPY3c4T1FBR0lsU2dFRjJpczdjajAwblcvdi9BNUxoWXcyd0hPcGdoUjJZOW5ZdXdYaThmTUIyNXRsYVgzQmRWUEZBNFFWZlp6YjZBYmRBeVZZQWN4Y00yRkxITzBlRFdmdDJOZWplVXdRZS9hVGtDcGw3eEVhbW5vUlZNWDhzbU05ZXFNRlh6TU9YbVNSeDJLYmVlekFuY0xvZ1hiaWg4YTlHL1YzV3hVZEx0Y25Bc2lDK0NJVytzdlc5WTZTekFpMUxtWTAyN0h1S1k2T1VOVkpiNkpmWnV1SGVJSHpocU0vTnBVRWxiR3pDMUl1enZMVUVLQ2RWaFQ5Tjl0T2t1ajdQczBvdmQyNW16WXcrSUxkUmtMU3A3YU1zenpkNXpHRllhOFZwVUV0WVIyNEdza0J1SzA0aFlxOHBpbmNrcTFuV2dsZitSV0FlRG1PamhCWUpmYm53UXMxSUgyMEhjZTdNU0t0Z3JaTGQ1TmVtS0trV3ZXSzJsbHkwVHUyVTZkNmZmSFlDcC9ZUGlVT05JVGU0d2MrdnpMVkwwbStyRUZxa2RocEVkSno5cTFpYlFnVmxzZHJyb0tncUhRNENuNWF2Q0hCVmsrV0lzVVlIckhIck9teGpLZDdRQkxycWxpUGo1d29GRW1TdjZMMkpVVXZxMyt6RHRjYTI3c3NmMmVqWHpCNkQxOUY0QVFXMkFRcEYzM0t1UEcwMDhiOGxRNkZiUEN2c25VTDF2eGprSmxLbmRiYVZTTGNWaUtVV3pNKzZsdTFudTk3WmY0UXlkTVpCdDhmWURrNzVkOVRNcHFaZ1JwYXRNZzRuYWZxZ0FSV3ViSy9XLy9yb3RhcnRybko4R1pkNlBZNVp3a0ZFN1ZHU0YzYm4zemhZRVprUEd2cllLamRXSll3ekxSUUh6WGIyUVE1dlZnc2JBYzdkcklVVUlla25OaEVtcHBwbHlES1NKTm9wS0xWN1c1ZlVKN0FCeDViQkpqTnBOYlA4SEpUWHF0UEw1VmZmY21HNGhXblpUelAyTzYwcWVMVmdWR29Eam5wMmt4K3pqTzFRbEdTc0RBbzRrdE8xSlRCMlg5Q3BWNmtEZDRzNXEvekFQQTB1RXpPeHo5MmNPMlUvOW5WM0FPZHJFRm9BS083YVdYU21kd1VaWFJJZUowR1dPZWo4eUtYcDZyV2FuaXNmaHZPcHZZdTBHOHFhWTRJUWdSelRBVE9QMjU0TVJST05vbVhKWWxub2xEcE1QVUhoTVFxU1YxQ25CYkhrTzZUTkRWbEVUcXFsQ3FDVEQrNkEwVjBycmVQRlVFRTJGMGpFYUJUNWNaY3RoNnI2cjlQU3ZOUjNEcnhHSklvZTdUSm50V2w0b0Y0VTJRdkxxZXpBQnZneittMDFVYTNScnV0NVJoaDloYW92SmZKU3dGamRmQWJORHV0V1FDNUhLazdycVYrRnowRUgzWEVzUW5ZQW1IK1FCV2xNT3RkZmVpS1FVSUdYdlFmS1MrNm9XYVV3cVQwTkZ1RUppWkhSM0p6amY3cC9uTGdZRlVhZVYwUnAzazlsR0FBVUhQWERlSEZ5VjZLTDA4YWxudk1weC9TRDVUdFJ3a1FSRm5EdDdHQjJFUnArYXBYbjlWQ0RLNTcxRDRWYUZPcm9zd0Fub1k3bURqcm9Lb0o3eEx5bVZtVmVvZEpXeGE3VUpHejF6RHJoY3A5QjlIaGhQUldSNW5UdU5vVnJBQlFvdEJFcWFhZ05NanloZXEzcndYRkFWVVE5WEFoRVNyV0M2andiUld0ajFtay91U01QWG5xeXVrUEFHMUJaZDRKZENmUW1CRE1qQzR2bmF3b1FHS2VCL3dUdlBHMVplTzN5a0ZEWnVWSWFORTNtNGY3eDN4YWkvMmpqMG5DeUsyNXZxUzk0YzdCVlorVndWU3BTWVYzYS81L215SFcxU2h1WkVnSG9zVXdkem1oc1RuNlRQSFZLS2M1QStoUFZiY1V4TVdBdnFTMm54V01Da1VIejBpUjUyQlFVVmRjMUE3b2FvRUtKZjJxeTUrbk9oMFIwbDJ4amg0ZVZERzRCbzRsK09iSEYxTnh0VDRsaVVJMjh6SW5zNk4xOUdLYVcyZEs1L3NsZ0RHS2ZaZ1ZBQkwrK25NVVAxWURQWTdZalZaUU5CdmI4ZU9ycGhHaGRhWXAvTDFIYmFxMnpHQlNRenpvK3ZmWENLMjRpd3pCWmw0VlNGUU5LT2h3QlNzZjR1RVFHS3NwdGpKWXp4WHJ5TVB1NU9tbUNEVU1wdnU2TEc4d1FpM25vQUczZjkzb0l0cVZhU2UxcTcwbldsS0VSWkt1WGtnbXh5cUl1QXpVcG1XdHNJdUh0cnN6S3NPeFN2MXhtamVxSkNEZXJveEVnbGpqVXMrelpreEtlVWZWODJQcGtpU05veFRJV1czb2FMOGpYOGttdWsrU3Q2V010bUxzdWJaN29UM0M0VCtOZlNIT3VNUVJsYis1WXpUcEhYWEhXMG9RS0ZXU1UydkNjZW5CNkEwV1BSemZHdzNMS2QxZjdEQ1ErUGJESlJUR1V6bi9DaFJFQUw4YnowdW5SN2ZvVElibTNGbXg5MkNvY3lsaGpPMUNadjMxV0wycW90SVlhY2RnZTZiNFBCZUZlSklMaVV1SEF6VHdBcFplWDFEZTdjRUo1RFhxMnhMS3dYdE1aTGZveEZGc2ROcTFadk1uSmZHSUxBaHFOd0p2ZVVnbVVTRjJ3WXY1STJ4R0FmZnhzelFRakJOSXJrNnRJVUUvZ3kyNGExdEFJRG9HeGRibTFuWGhzSjlMWENxRkZndkFaVFBxQjllR0tQTm5jQ3FoQ3Z0VkJqcDZ3NVZUQU5RMVZGSkdUVEJzeXpXcWlPazVtVTNwWmNFVmhuU3A0OERYSTFwR2NNbkJoeWxjVnQ5U3NlNFNXU3ZyUDFuaTdzbXZlZDViMnJBR1loejNmVUZlbkg1cFU0SFVRcDI5WXR5VjIwQUJzRlgxbnZZb3JKK0hRWlhTMll3WFRFdVJLRXRtaE5DV2djdDlzM3RRNkRiTCtac3N0WE95K1hydDg3bzJxaWFQNFl2ZkcxV0o4U0dNMDc3cXh0aTFSK3dxTTd4bEYxMW54TW5BcDJIcUZtNVMzRTc1ZUZzbE9zS3dxZnY5WkRNVHA1VlIxRUJlOHlRSGlSQ2xqdHFTMG9rVUxrQnFsM3NhaVF4UDRsV2FQdFA5TUVRbHRPYllmZW1iMlZQUk1SYmlSbFY2d2NQNjM0RDd3TFFMbnZESnNIYmN3SmdJZE9XbmxIR2lLdkFrbFphRWhlR3VXckVNT25sQ2dSZy93K2d6eG5XRHYwZlVkQ0piSUFnSGZXU2dmWVZrMjh6S25GQ3hVTjFaOXlnVmxaUmhEU2lnOWd0eXRiOXlMbTBhWmxLK2RYandlR1QxUXVqMFFwakg4WnQzdmR5V3l6MWtDRyt1ZGVnVUpwSXJiK01iOGZjT0hiMm4yNUVyeWNsRWNHRnp5ZnFVRG9qQnovVkhUamUvNFA0YXRYcytYL2thbmhOWTl5S0lFb2ZUdXRHWXZEQlJFZUpDVElsU3QwdTc1OWN5MGdWcExIVk1WdHpacklvVmVRYkZZbDNFNU0zR0FYSUozNEFIZGlZL244VkRkZnVGNlhRc0VpMWNPUEt0SDVsV3U3ZithV01kSkpsZmJNUXhEU0pubVZ0QXRnK0tKcXVFaitUVUFzSzdmSVAwNjNmWVhERG9vcG9hRmFneUQ0T0w0ZVJTdDhYZ3hhdTBpYkM0cFptTHhUWm5NN3VFODFoenlJb3owOVE1NHlpelB3cFdDU0swMm1CZncrT3NsMERsV2J6NEZHdXdxYUM4QnIzREEreG5wY3NqanNDRkJucCtEWWZENnRXWTcwUXpZRDlSOXJzSjBFNHhLQmV4dUE2Y0I0VE1JaVF0eXlxYWdaRW43MEswZ05iOG5OZ1BSVFJJaVd2U05MUW50RTBvYk5pS1AwVHd3ak1aTGxNYTY3VXJidDZ1bHAwcGQxQmlUSGo2QmFBbGoycFBsaWhVamtCd2g1UE0wV2lUck5LZEVqbDRLN3c1OXY4ZXJuRkhVWWFSYlkvYnE1Ym9LamlHeVhnMWZncGtqc1ZCNVJ0enk4azRVdkRlVUxhaVFhT09xcVc0Q28rN2ppbW1Ic1pubXRGL3BaSENPWkEraUtGUEljTG9vSHREaEtITTBxeHdTUVNxa1NibnNyc2pEQmFqc25LMi81L3poa0kxTWx2SjJtWk1zYjZ0Q3R2VUsxdFoyQUo5RzNxYlZOODFDT3JPVzNSMVZZM3pvY2p6TGphRXc4N3lMNjlXeGpvbnI4SUFMd3VNNklBeCs2clBEaTA0Y2wxbE5UZjhaVUxtWTBadWhWelFHVWd3T0JPQTFEbXVBWGtnNnFKUXd5LzdtNmpTK21KVnoydzRJNk56RE5XTk40K25Bb2swRmJVQUJmZWc3eEUydnNUaHdIMm1RNVREMWV5d25ZNXAvZk5DdFhSUFNvMUxBM1JEMnNFZXllY0NuYVJ3UGhIRUU5a3p0RWhzdGZmNkRZRzRqaVhHdDc4ajF5emx2TmR6Tjl1VlhMcFhnbVh2bk5pOEsrZEQwNmV5R0kvaTBHNjRZZmRocExIQVJabkFaVGI0eFNHcFhPV1ZQQnoxR1Zzenc3OTZ2eEl4dXRuVEZBTnord0ZLK3ZoYUNjTHNHOFFzWFFJS1ppaWhlZXdFdEIwNXdBMlQ5cFNUdXM1QWU3aitBZENOUFRrSy9UaFhzSVhTTy9ZK2lmeUFDenBVWEVuZGx6U1VDVEtmLzNQNlR0RnZ3RmF0aEwxOGd1bzgwNWpTUFUwVmpKMTB0L1VrTGN0WFY2clVjYnAyTU04OFpKN3dUTi9HZ0U4WDNNSUVQOHJlU2RJMFdQa0U2TGxscko4aEpQaHI3ZDJDK2lXNlNYY2R2L1JhR2NWL01JZ2o1ZTdhdXZyTVdIYVIrQjhFUmtUT2FSUjIybG5YVmlISmtEOHZpS0QwS2lENStzMGVEQTNKWlZnS0l3R1Q1RXFlT2t2ZkFvME5YWTR4T3M2RUJNN3BGS1FQSTI5WTZxd3lDTCt4SENoUlJZYS83RU56M0lVM01uL205UTd5QkdXUzBKWXVtNzZscm85SmdvbGlVMm9yb1pFUElkTVpKTzJtdk4xeE9KSkxTZUVhbWllaUZiRUJMSWNhS0Z6TzhTNXZaRXloWXVWbjEzTnVLVGdlWnp1eHVHSzNZNzd3YkdIUFBhZUtMcEpwaHpIczBnNk94Wng2V3IrQU9VemRqR21HNzRQUzN6U2lWRDRQbGFoSThmTGhRbzFyRGpidmVCenFYQkpocDBPaEhraXdZLzhWUll1TnFZSFhyaXhkYnhEL1lKZkJ5Z293UTdNYzdUdi9sV3pQUlZNT2Y2THBzeEVxRU82VENpL2plNzE0S29EMzFKeUxkWFMyOEJmTkJOOVk0b2Y5OHpEYmFXVkNDeFFJWHc5VmQxMnhmT2xxZEpRTkEramFOb205VnFsTGpJMS9VYjAvT3FiTXFaNXJ3OU11NFdNUXNTV0Q5WnY4UnM1RGo2Zk9zandaYnVLcWxKK3RxWE5LS1hKL0FML0oraVNnSVhQRzBWT0lvUEFPNW9ZVFhDSnMzRElYZWQ2a0xDMnhyNkhTL3BWS0VaZEhuSVExdVh0Q2tncU9MbVpzTHFQUVpZU093cUhkb3hBUG9aMHZBYWJxRzVkT09wVDBJekRXdW1uWGFLZ3FqTVE3WEQrNXdEN2NWcWV4RTJFcTR2OTVNeFl0N1RXczFTLzc0VkdFMVl3R2R2dXRiV09vR3djUE8ydmtoV1NUQlNRbUJjN2JCNGZJUzdTYkFDcnlZVDkxZDl6T3lZZDdTUEtBUGdiZFdVK1dtanlwOXBTZUY4dlNCU3gxSU9oeE5XWGhHK3ozYjRMNHA2L0ljcmpZL0RhTTJqNGlZTnJjeDRHTXRNSWNCMGVFTUpzNEpPZ1FDZXkwREdEVFBuSVZZZXdXL3NuSTloYTRLaDJQd0ZnbDVKSFhKcVZUWkpVUm5FTzVzSDlsazBNUnI2RHp0cUlKd2FXVzFuZGdva3NZa1B3SmpxQmk1TEg3RGx4RzZMTndMUHpicmJ0eHBkUGtKRWlxUkhmVUlWMENqUDB2U2svK2pCTFZEcXIwVlZHWU92NlpZL2h4SHArcFJ1bTVOai9BMUFYUzBoWmdqUVlyaTRCVndmemUyTjgzTVVUbklVdDdsOUE5TVgvRXdRb2RMa1ZBSEY1UWlsR0x0ODVRc1dENEZQZGpza0JxeXo3SE1SRDZLaEJpTFRlSkZPQjBNQWpnSGczZDdJZWpuSDk0Sko0UEp5Q25uOEs5Zkh5MTc2L2dYWC9OcVkyaXhEdjlNRzV2SzQ4UWduZVpWSmJET0NTeFFHbGpSTjA1cGordTNPT0VNdkhTbXh0YyttZUNJZGNqSHcwRFNnN21uaGgrci82UDlRUzA2MUlxMWdjWGlaeFhtQjJXbGxZRlRpbHErZlFCc2ovaWxMOGhZRlB4ZkRYUkp3N2FYaDJ5ZVhsd0lYS3VTQldzQnRtbmRZU1FKOHIwWTBmbFBIeGErYk9yOTF2TVg1QmU0NitSWkNrOE1OU3YwUDV5WEoydm1nUTdSYjhrd1AzZGhuZkYvY1lHQThrL3VSSjZEcHA5aGM1YjlCS2VUOHVuZlozUVJpa2F6L29OK3YzMUVrbWJCOGVQMXRMUE5SOC9jZFB0SlljeG4vdEU4YXBZZmRTcE1YRkROeTFFR3NsUjI1c1JNdlpCNjlGYjlsclVFLzdETXBJd3l2azlPU3IvOXJhKzZ6SzNHNE9nbnRwcml3TnptMys5M3pXRWl4RCtRUlZjU1QzMHdSNlJDQXY1S1hWTWo3RXFIRkVRNjNXbGV0UT09IiwibWFjIjoiYmRkZGY0OGI4MGE4OTQwNGYyOTM1M2ViZGNlMTFiNTIwNTg0Njc5NjRlMGI0NGI2NmVjZWIwNDUyZWIzMWZiNiIsInRhZyI6IiJ9 \ No newline at end of file diff --git a/resources/views/email/template/client_premium.blade.php.enc b/resources/views/email/template/client_premium.blade.php.enc index 2d19b86dbc2e..1602f7253c66 100644 --- a/resources/views/email/template/client_premium.blade.php.enc +++ b/resources/views/email/template/client_premium.blade.php.enc @@ -1 +1 @@ -eyJpdiI6IlBsbENyOGN2em81MEVWa05EbUFJS1E9PSIsInZhbHVlIjoiVEFHaVExVUQrSjlYSjlCZVp6eHVONCsyWVdvZkdoM3g2RXhZREV6WENodjVaYjZDeW9lbjQyc3RvejlCNDdERXljbkFVL3NHTlZTM3VoZE1tWERreW5xdXZYQ2tkcHpHT0gwRjVEaWE3TmErUDJvMHp3amdQZ3o5ZmQ3RzhURjcyWnJHMzR1bElCMktKUzN0elphNnZTY2ZkRHhBL2VVaWppMnk1UkR3MVBPYWttSXZmYUdHdWlhbkdnZGdGQ01LbHFWeklwYklITVZOUDVIWE56dkpmSnR4U2ZDQVlZYTRiZ1FoYmlZK1NZMHZLeDJtcjYwQnBpREU2OHNISCs0MEZXRWl1Z3laSkN6dEpiQnI2blFZS3pjNE14VzRBYTVUc3l5SEpNenl4b0NBQVJidngrRTJXRWFCUXhyWkh4YlhrdjZ4dUt1UStFYm5qcjdDaGlpTGZzNU91THkwd1pxczY1dWdiWDcyTEhzK1NMekFCVnlWRDNOZHhaQ21tNGxOVk9CcmljQ0JkcDFudDRrYzgrREpXQzZXSnpGbUFaMWdYQWp3d25aSTc4ZGM4UjFwUXh1OFAzbHA2RHNxc3ZBbEpVTVM2MmRrVFVIUHZzRXJIeTFsYUpMS0FoaXl3VTJnSkcrZlB5MlF0cjN4anhWZlZwalJ2OENxODkwU0tjUkVXRzRuOHVVMCt1eWsxbGlRZFU1R2c1WkxWSXJWN2x6c3hUS2tjcHo2dHY2YU9MWHcvcE9mWWlSZHJhTzYxUDVRbjN1UjJjc2NXREFxeDlFOTdFSFhib1MvcEx5MVRKS0E3VWNhdlpsT2M5U3ZhZUoxNEM1a0ptcGZrR0VJWmxGUmhHMjh0VGlLVEhwU253eUQ4NUlHY2RVSDdud2taV1BnbkdLUG03QnhoT1VDYm92V2J4ai9rNXdqNWgzYVJyOG5SejhFUEpIM2J4R0NrMTUvUXJFRzh4NWh0aDBWL1pyOU96UFlJUE1ONFlSTFd2RmE2d0QyS2MzN2tuYU1FbkErNEJQUzhiOGhOTHlldU9VMXVNYlpNU01HeDNXVVVBeS9VQ05taTdYdCtwMWJvZVJ1aDk1RkNuVHR6V01VNERZQ3FIZGNYaGFvbWJMUE1iVjJJcDdEZ0RvekNLWERmSWliQkhJYkd1YjdVazlubWJXdEQ1b0EwWktxSGNXWFVOWDdiYlNPYVlQUzZtWTVUbDF5bjM1aFQxZTdyTkl3QkFJL0k5cUE5SXhUbEJOUlBYd3pyVVRRUFFVV1FRWjhnWFJWM25tS1pmcUR4SVloV1dwdC9IaEl6T0xXTUQvaXM1dUVnVjd1alkrYmNZM2NDT0ZOUHE5aFRTaENOKzdzaXlJOUdKbzFMbjJPVzd6VS9mTWZkVlkwUmFHVW5XRG9CQTFHL3hidEJHRCtUSCtsbGVyQmVFRXd4ZjhKM3Q5ZGxnODA4RWRwRlRUczRMamNMMVY4Vkd5MkN4K0hQNWk3Tm5Rdm9yN0J1WHJZcVNIdUtTOXlrN1BIV3VQZnp3djArRUxSWDVMUUJwS2k1K1ZTN2UrOVg3VzBXTjJzL3lTdVVsdWJwbnFQeDZpSWFmRVhqRTNvZklaVURFSi82L2drYnZTOGJZT1lYbXN0cFlGMTFnYk5saVpuMno3aFZCbUw2aWQ1Zmk5V1prTlY5NmM2My9YZXp5UVBodk95dTB2ZGNreTY2eG9idnhGOCtrNGozTVBRbWhuNG0wV1JFbzhPWlFHOTV5WEN1dDA4eTJjMk1PcDhrcUNtaVgxMkFLdXJrSFNlVmpsS04rODF6R2Z6RzJyLzR3K1pSUHo5a3BUTXBjbWl2N3BOUHpVcHh3SmMxb2o5MVlxU1VoV3B1a2ZmV3RqNXk5d0NpTXB6ZithSFQraml4VnE5T093dHZrdzVjTjkrNmc0YSthZGcyZnEzYnJBNm9Qd0x2bG1rRndhd3hienprMk4vK2M5b3lzcVZpY25KSTFGbnlManVJUXZKbWVUNHJKS0JEUlFUOXZMZnRUYWU3a1ZIcldxZUtwTFIwOUJqanM1RDlOaVhRN2RQK25NZG96UmxvcFNnL3liNnczQWw2K0VFQU5OWUt5Y3BkanhwbUIzZXFsVTBacVpRZTFFa3V4ZzJBRDMvZE1qL1BGeDBrUUg3KzBtOGVLUWlDdjJoZllzdUdtNk1GVWRqUDN5dTlHZGlONnlaNXhaUDV4YnRod3VMcGI2R1haU2FXek4wcXYxNzgzQXo1MkQ1M3dSWEpiMXh4YVAwZ0x3a05mODhZQnE3Q1ZucGV3UUpzYzFqUkdFbUh6ODlSNzJ3N0laVUYrQ1dUOENQNUNEbGQ4NFVmMzEyakJ5aTc1V0NpdGRKaC9iRmc2R25YYnVOUDZjc095WnQzbTdubVFkTmxnd1pwRVhCMDczQnMvbWZxZytwOVY2bzdUWVdkanRqUGs1MnA2bWZmREludHJxTlFVbi9uUS8zQ0lRb3BoMWV4ZVUxQkY2aTVZSHU5NXd2c2xZMkJHajBNanRxWU5FOG5MamV6MkRiYjRVRnlZVExhazJmM2pvVVhKYkFNdFBzMkUzQlZ6KzRZcFdpUEZBNGJNNG51djRyV1E2OHp2MlF1ZEw0UWZpSE9PVDdSNXdkaUUvUzEvMmIxMU1GaHBuUW5vSXZRSFp6Nkw3TWVqS1llK0N3RldLdVFTa0M4MXc4bVBFbklML29teG4zcjJSZU5ncjU2U1NVS1R2aHN1b0RaOXlXUGZFUHFkUStyWGFrSGFUUjVHcW5MTVFKOFpMT1BqMUNxR1ZSVVJrcUFxMkEvTXJLNkFqaDA3MG5ua09oUmMvNjJtRDRWUWxRQnk1bmZYTHZsYTVnaXJKVnkzbmovRDJ0T2RsN0Q5VWRndy81bEwwbEw1K2U5cmFESGkyRXFjbDBFRHc1ZVkrTC90b1hQR1ZsOGVGbUczRi9MR29CS25pNlVaeFBjM2htdEhJLzlmcFpYTkZ0RklscUNkYTR5YWdPUElicnhFOFYydndKUFJZaStvWWowU2pad2dZV21NamRqcmtyNGhGcUJOMUpjN0p4TzllY01vTldLcXNGTHpESk9USC9VL0VQVkRlSXJQZWRWVnFLa1BJSDRmVVRDSkwyOHhPM3JOMytjeWhWeTBjelg3aWhwV01LK1RzejVpQld2cjVibERxNDBIbUl4MEx2dzBVRElmSUxLdk9mVVV1YjJIZTdtdnVieVh6Uit0aGNRdDNNNHd1NzVJMG5PM0wxNXJGTWlaeE0zNXZBVzJvUXhyaXNBY1JndFdUeCtQSXNUNFhmN05jR1Fhbkcxa3lnMzE1RGVKMXYzM1VEN1ZBcC9GcThjNHd5RlFaVzZGQit6Ty9SMlAyZld2cnFHaVNMbFBTMkIvWFdTVkMyU0s4MnhSaXpWNFNRUmNzdVFocmJtaUtUMW0wNlMvZjdkdkVKNk96bzNnSm5OYTJzWWdXeFVpSGtKaWxmMWVKc0FWbUd1RHdsY3REUk1sYUdmNTRoME9KMGhwYm1GQlowSUF3Z0RmY2dNemFsdlJxTGpYUi9SWUhjNmwySFJDWHN2UFZRY1N2MGhuSE1pbERlUkNxTXVBSzJRWFFIR0RuTFBlOFAzbjNScEdLeDBHMnMzVGN5NThwYkpQTXo1N3VWMG03ajV5VTNBY09mKzlYRGZuWktGUElkNUwzeGZKRjBiQytpSzZvSzhMY2p2dUk0MHdnSVR1dWFmMWQ2MXlEUjlGeVJaVEFCU2xOeHNYbkV5RVNHNmJibFJTcGdaT0hlWWtGZDBrQXZUTmFvRmlBaWJlMTB1blI4SG1yNW1oNEJXNlJ1KzV5eGVpT0M1RmRZcmlCbU5IUUtCbFNqS0hRYUdDbXNVV3NoeXFab2VvanVrMDBIcE1JemZ3WUFsRGpJRys0clZYQURndStXUGNiZGdVNTQwbUpyQWtSdG9BanpwVFEwR0NXVEh0N0syem01cnVHM250MDBGTVhKbGdJVmJGQzNOZzlnMkt3RWVvS3JwMEFKMWQxRkRjY0hIYTJwbktLM2JhMXN3ak9qTDNpUjlBVkZjMUxPT1BpTDVqcExQbU9WUHRhMG9yNmdJbk9MMHQ3VlBYTnR0VVFHZ1pWdUp1VHdRblJ2bEtqS2xsNEhEc2RZMXhTdk1GMSt3YmFvemhnMC84Vmp3YllRNGxib29SQUtzbW1kc3lpd1lwOXhlczhxRDdpaDk5RGVjcFhUajJITkZYdGp2eTE3Z0F6U1RORHJVaGx3NUxjVE4zNFFFM0p0YXhxTEZJcHV4amxHTEN4a1orNjFGQWxLK3QrZVk4a2xweUFaVHJuaWdBaS9Ic1N3WWovWlVVL2I4MkU2c2YzMjBnYkVFTVV1RWlJRzZid1BOOWNGZXY0U3VWcTBwTmhhTmhIYyt1WE1adUtEcjIrbktVWllleU9vNEU3RHpzV1M2TXBTOUtXZEE2a1Y3MmtwNTZCOWt1a1MwNkx0USt3Q0tkbkp3ODJNdTRQWG41TnhUa3hGVXJaWHYyb2Z0d3l4dG95K0p4M3BjWDlyanN4MzZ4L0F4T2hsM1RNUThCZm9aRkdCWGxOdytQOTFkR1hoTy9YU2ltalZ1aGVXeElXeXlPYm9RR0hqbGdmWXAzaEJ2ZnBTWjlUeEJ5YmxISEZGemErdkUzcHlaVGVLU1dzaHBhNFdDMjMvVjRJR056MTVoOGt2anl5OUJvWWhta2t6RGNNL3hzNDVoeUQvOXA3N29EQUxoY1RCN0grMDJGREVFckxNWnhaOHdnS1BtZTU1dktvRmVENXdHWk9BSlNPaXZMa1ZTNU1zb1EzZ1MycitiTEJGWHpkZDlBRmdzams2a0ZlbUpiaXZrQ2E0dWpNaE84UlYyeENzS3RlWkVKQ1JhVDRHK3E3MmpOaGxzVWZBbE5QbWpZbHpvTDFEbmczbnE2T0pGc2xlOEh4d2VqMUdYZGoxcm1lM0Z0RUg2RTBhRkJFQ1NlZm5qdGxDL0UvRVljUlhuOFZXU0JkMThrYzdFOHZ1ZkpDWmg2Y2tZOW54dDU4MDdneFR2aWhJSDZ1WGNac3J4OFRnaHdhTzVQT0ltS2RQclpUdGJ2clB6QnpqS1NtcE8yWkQ2QXZ5QmZZUG9IY1h2N1pPTzRZRWV5NGprd0JQR3M4NEgrRDNJUmtqZlNSYUwxeEU3clV6MStod2I5N1hSanU2NkhwRUFEVGhycTVvakQ5bEQzWWVaQUZzeXJzS0tLaitoRnBUOUplNXlDYTByQ285ZXRiZHpZdjlRcW1DVnZuc1pLVW5WelNRbjFscFlzc1l0dHJIRmE0eFE0cWs5c0xQYlBLcWk5MzNhNlA4MkZaYTF3aktPZThlOFBQam4zTjFMZlltNnVwQXN5cThMUDlqdkFRdFBTWm1iQThmVjVTV1hRVG4zRkkrU1JFcEk4cHF3Wjc1WTFqRGY4R3c4ekVHem11WFVCOXF6NXhRRnJBejd5bXVXU29zZXhVWGtpejZmRENlZHBYK2k0T1Vsd2xtK3FCM1JDeGd1WmhFYnNldnp1cER2eitGNlE2QmpZS0lrb2xjNVZ6MnNtMUZXTW5BV2dsSEs0aFFRYmcvc2VqZ0xodGE4cVpvOGZMUTBkMW45S0R3SzI3SzM1TmtVd25ueVlvclI0QW13MnFEdzRxSmVaOUMzVVRSa1VUSEVKbTZaSisvQ0dURjloT1F6MGljekxVWHhBc1IvU2grUkMwbXltWW5TdTlWOFdMa0JwK1lkR1hmNjVVaEVHMFN1cDBnanVMaDQrTVJGS2tTUHNTR2VGSTZzdiszN1hmRUFoSU1rUVdIZTdkYkNjNzVVcytWT1RBd25ZbW1lcFNsWDBQOVMxdkZyWi92TVhvb24yYmxYZHoyTk1PaEpBVXV3UXNhUnMrTi83Qi9qMlB2WExPU3BZSUFwQlJlZnByUFpwaFpSVG1ZWURiWWtOWjRPQ1c2U1h4a3FxUmxkUzJydmRBKzh2ODBHVDdVV1h5RGdlSjFIL1JBd3FScVJWVkR2djNxbWMvMGRvQzhCQVdPOVBtSHgwdU5aS1RKY1RTcmYyTkhpTWh5VUtpVWl0RnY1dWhwZXBCYitwN2NSWitpdWpRWFptM0d2cHBESFVMZFh1cmFOMTZMS3JOMjY4VmJBN0lWYmZDQXRCRXU1dHluUTZqVC9vb0dVNVc2MzZKeWlyL2tIOTdvYklKOEJOZE5OUE9ENC9BU0pvOGlFUDNyWk1kbmF5bEY1MTV0ZXJXTW81N1lkb1RKa1NiZ3NBeDVRRHpYdTIxZlBkSGdOR0pkQXhkR2c0QzEvY3lub20zYW5jK0NDbm85ci9qNTdYdXNKL0pzMXdOb3pvZThYcFQ1NDM2UmtGV2VENFc0SEtubmVzTFpsWHd1eHFZSEZYWFU4QWpOeWZFZHF6MVIxeXdNaGozRjRmRWVsOWdzZllCSG1wM1FwMjRLd1k0R3VJNERPbU9YQkFFU1gzbUZ5cTljaUw3VE5BZlljM29UYWpBa1REN0ZSTDBCUWN4a0huRHgwR1RoRE1sSzZqUmRzZ2VGVjloWFRIMGpCdVNpQ2xBVW5aTUFsYkRqOVBHWVVDa2pydDVFdlRLTGxXWHpoZ0YxSWU3bDdWa0ppUnRhWXExNnFxbXl4aDZVZkhNRXRjRlE3QUZYU0JaVkU4OU9RM1hBT290bnJSVytrb2xhR0lKZFFhZ3o0clV1TFRqbTFaWG1FVFF5TmxUd1QxSW5nYUlEV1o4R0RLSjFvMEdyeUVUVHlqb0oyNXRuYlhYOFRYczE4NzNvMzkwZURBR1dkSHhVdnh1Zkk3ZXFvTzZDSUh4Tlk2Tks2Smx5SjF1ejRiWFViM3RTOTJSYnVPVkxPN3lIM1NVTkhzQVlKNXBpRVlabW5oSHAvT21zK2p6WmNnWTBZN29OdnRwWkhCZVVoNDZmbE84bkRyS1JxMXllbVpkV24yTWZGeTZYVFBkTUJXQ1cwa3QvYm94Wk4yRFU4K1k4blVwdnYxY0VEaHE4eWpINGlta3N3SkdXT3NhQWZKeFd2Rmdnem0yUUIrUW1mYzVZR2xoWkcvcUxCd05xWnRQQlhwaVFOcFY3amEyWXluQmd0eGVhNE1rSHAzeWt6VU5zcUVNSHg1QXdqdjhEclJJNndwU1FZRERyclB1ODhkWitESUdCWFhUMVpEUFgwZlBPclBiZS9wa1pjSE5YS1hNSTREQlJGUTl5YXdLekZGL3lNRTRlLzJneldaR0NSQXlQRSs1ZjMxRUN3aEVBOVcyTG1tcnFmamN1OEo2NTRIVkJLZzUrclV0MjZGdUlxMWpzM3pMQ1gvZkVmSFhhZWpzdTlWMlN6OWY3VXFEcUh5ZFJQSnMyYnNZWTNvZEVxSVRDWUROZ21tV2JNdlF0V2ZTbmVwS1lVRy9DakFaNGRPRGRNM3V1cUdWRFhSZE1qeHBzTVNCNGRzVHpXTnI2TXV6ZEJXSnNmZXhOOXRMem5vbHNsbkJTZExYNXNnT0czSVBVSXZNZHVxRjcyNFBTZWhYSHBHME9BNlRCZXhMT3hNem1nbFRSUUNmdzlQWEJUa2lKdFFuOGtVMGhPZDZhbU5Ydy9jZ2R4RkZJRkhMNFpnTzVzZVhESWNmZ2xTU01JV2srMWszSU4vcEd0TXNwZVdVZnREak5EMzQyRnBQTnd0emtBN0F1My91V1JSSGk2UmpXSjh0MDJQaTJtaWIrK2E3S2Q2Z1BiNnVLYkQxNEFUa2NuRFJaN1hOcHZrQnVPR0FIdXg2OG5ESU1jZUw1TVFMMVRyZFZUQTA1dlhGUHVUSzBPVFJVL2wrQjNJZ0QrQUhYNkVHaE94bzFIbGRSTXRzTHZOT1dTSGxGajJpWmM3Q215YngyTE1acDhSWENRKy9nV2xGa3E2MW9mVithVUp0dUwzc2ZlamduNC9OWXdnWE9yanoyOXpWUy9IS2VZdnY5S1RPS0lZYS9EY2hEeVNYaU1PMHA4dlY1Y3VJZ3crcjNKcXBkMXlhRG81VDR1a3kxbklyNUJCbi9ZZlY4VTlkWWQ5N2N6VDZURHBsUC9KK2RZUEtxZ29scXNzTS9jaUJqYzZOYjYvS0JvU0h5VkxuN3NlYXRpVU9PR3UrS3pBc2FUa3pOU041b2Y2YW8zVHVKRDJoS0g1d0ZaT0IrVDRuYU1Db0UwcWhuL1ZhZ3ROQzdmUGNPbnErMlNOVVY5T2QxcFlJMFRYODZ0eEZDcitIMkJyQjU3OEN4SXlCN29SZUhKQloxMjZ1aWxHT2tPV1pZY0h0Vit5ekhKREp6Njc4eWVENFJoWUdRRmJ1czh3cXY1NkFoR09TNzJoOURuM3dSbDBWSDVQbXM1MWFVUDhON1d3SWx0WlBQQWxEcGZGa0VpK3VnTWFaV3JpVkNxK1o5OUpTd2h3by8wSVNURVg5Ynk0MEh4ZEFpdTBDN0JYb1JQYk1kajhxUHFPM2x0ZDNBV2VjNGR6QVhyVXNsTm96ZGZXTXppdEVVdUVjVy8xWU1ZWEtIS0RObXMrZmFHckVEN2ZwSGhZSHZJYjh0TmNCNWRSemtrLyt5SVhzK0xJblFVOFlMVDVidmxwdktrNGhidW00REo2dnA1eWxZeEt5N2JvZzJoQVo0a2ZKT0Y5T0FuMTh5QUpNOEE2WndTWFdMV1hkMHRVVFd2NHJaMFpxeG9lWVBQVEV4NTA1N1BKR1FaY1ArRVlTTng4Tlc0Q3kxNVNkVTFGVTlubDR1aFRnUXBtb2ZhSk05WUc4b2lyRzFVeVJubkF3Tm92R2dEREJjdDZxOUVaVExjLzg1aG1JeWluTW9SWWgxNnQrazY4dDVQRUxuZ2U2a0FyN1F2UUh3TXYvMWJEWExxYzRpUUlBaFN3eWR0dlU0RjRmZDkrQWpYZFlBT0NlSWZ2MmVmdzhBZHZONnRCRmZRNi9MbEtKQjFOejNpZ0ZnVzRtZ1lFNTY0a0FmYVM0RXJMVG1QS3VxQzRTSzUyclJmdWNDNlJSQUNwc2FteURFb2p6WDRJSEx6aWpnaWUwTWVsakZYQzR1TytLbmpUT2Y5Y0c2OXFJQ2hkVGVGcjQzVURtYzl6bEE1S2RiZUxIT2hYTk00dW5ZQU1hbThhbzdNb01pQkNKY3RJTC91Rkk4c3JwOFpqYmQ5Q2RQOVRzY0hHUWxvY1pHVVRRUXd3UFJQMzJpeFlRRmVHd0dLK010UzBrQndLd2gyOGE1MU5rcjM2QjE4OXJES3Y2VElnVEVZNGE0TFFlVUZ4VVd1Tkx0cEYxUmhoN3hyZGhvR2U3RGtBN0NjQzZJTklMd29qek95R1crL0tZMGQzeitYS3o2Q1B6RU9Mclp5YVhzeGdKc25TLzEvcUFOQjhQUlZ0ZGpiSVNreGJJTVI5NjBNdUtBYmJFU2tvU1RQTXNVNXBteFhzd1pzVU9yUFF2UjE2Z2tMb25rZnVncENPOE1qemxhWkV2ekF2VHJXcGtTUVFwTnJYUUZqYXJ2V0RpZ2dKVzlTaXJ5R1ZpWkhrR1JGUEV4SXJjWHZka0N5R0tjcGhxOGJ2NWg3QjV2VUtpZTN1OGVuNUdCQnUwSk5oVHYrcUNySDVrN1VwQUpJQ0ErMCsvWlhhMHhCbWxuUzVDdWUvYTQ0bFRwdG5kZEpQdFN0Vmg1a1FTcUdXVDhDWUpIdmg5LzFVMERHRkZXdVlrZENiSzVtMC95ZnlDaXQ4a3RxNWhDZ05NRWFNbVpuRi9tMDVwdzQyTXFGRkt2MzBXZk1KbFBySmZYQ1dPc0xndENlVFpCVjZmdWlNL0VwQ0c5Z1Vab0c5VmE2TjFYMHBnZjNCbEg5N2lRbE42S2xIREtocUFGZm9NaW9sdytBR1QvRm1JcWZ6elVSay81QjJYYmhiNWJYMFdOTnZlNFMyMHYyaDNTd2IzczM1azJ2K2ZneFBTTlF4ZGc3d2ExZ2NIZXVIaENRWC8zcDEvQUNHQnBvR0s3QjV1Vm1UTE5Gb0xob0JLa1hkSGZhbFhYU0Y2VUd6MXhUck1uTElRUE9pazh3V0FBMy8rZ1YrUFdPeFRob1hhNTl4L2s0NUlZS1g4ZWVOY0E4RTUrWE91dkE0WFRBMVNKY0J4ZHJDeHBkeGVBN1FnNGVhUnYwd2s5QjNpcWlVZENjOTU5MnlDOGxsdjRwM0ZoM3Z5UmVBQ0g3OUh5a2tjcHhsQmx1S0lBRXRuV25XNFBjM0NCSitrdm9DY2ZRM2dpbXEvSVEvdUEyRFFUUmNhR2hYWUNvOTEwWEcxZWFyMU1EL05qbWxSZG5rS3VERDdrUDhyRk9OMkNyRTYvS0x4aGg3aE02bDBKekhGLzdObGNkM3ZmQWtDNHBOQnNpQnoxZ2lyOSt2amdJeXFGZkFCV2xvSFlacFR1SysyUDJzMmlYVjJ0R2NFcy90dHhjMGl3OGkrVzBlb2xvNG5KMDJmdGVWTVV4VHR0NTBvNUxnUlE4aTNmeFdGemxsZFBOK293WmVwelNKOElpMmhKYzB4VXEvZWxybHF5d3B4dTRkdENKMXhUcWRvd25OVkRSdmlvblhUcGU1c1ExejErZXVRU0l0WWFhL1VFRHRJRFg3bkN4dWVrbURHR3J4UVhtajZiVVhHTFRObDM1b0Evbi9ZczJzYTk5UTMvc2duYzBLekEyWlFTY01jTXhQazhoVWdDeUxYY0VrYytzd1JuNnlpaFhnUVk3OVNpaFpSa3d1bDRvR3ZIdGVHWkk5RDlGaHh1SC9UKytIWnZ3QkhUY3Vob2J6M3BVOUZMWEtzM0lqNENlb05Wc2lVVVhMV3NJMDNkTVFGRXpGckw5Sm5oOU9mVS82ekhPQWNIQUYrWEtraGlMQUJrK0R5NVlrdXp3bUluRXZZbjdzb2JvNUxSblFsL1ZpVWptYXJ1UGFGakhQZWl1Wk9zc09aQ0l3U01iTmdmSnVNclZaNFlNUXJhL21Qc2RaNVRFbEVOSkxsRDdwWnBSc05hamp2R29SNXF3ZHFicDErUFdUcCtQazBiNnZ2Y2w0NHRlZUFmazFWVkdmSjFkOEc1TThtVjdYeVF4L09UZU9mNHk4WEJoViswWlFFMzdFWHhaY3BUU05FMWw3RWtHMkNxUzVoR0RiN3BFSFpZbzlmdkV0WTRhaVQ0dHhQMHBjdGsvZXBOMDhveWN6QXRYM1lkNnVkM0U2L0JROEhQNHJuZnRQbXN5dytuMXNLWWR1YTJ4dFd1NVFPbkFBdGhDU3ZPU2t6bmtWeG84UVdHeDZCSEJxdlpSY3l3VHBtVGlrTnJsYlNFWmVuRElLZkR1YmRGUjh2Rms1ZEdFL2ljTG56cXduQTlTaU84THVTMjNmazBueTRFbXNxSjJXUDhGR3RLNE9ybm9HcjVzN1pwZFBXTm1DRFBybGZWNDh2QkdYVnZFa01SUGpzR2FvNm9WbUl4WWlBNksvd1M5Vk8xUlIzK2x2eVlPbnovOEtPTXN2d2drVEpkNnNnYTFsQ3Z2U3VMS1dOK2g4NlNGQzhKYjMyYlFKZmxHOUVRMTdlamlCMlZ3WHlIOXV5UzBCTXM3SUdZWDgralp0MGFCWXdjcDVsUDhGdnVVOVdZWkdxcThQdVBVa3pVMXdrZzNNYWtNRXpoTThyZEp1bXJLcmpLTG1DdkplRzFaNGJBcTNkdTQ5NUYydTkyNVp6Q0w1cHZtQjVaMG91dW9WSmRaa1dPSG9kUmQ1djFnRE93LzVmd3NHRXpXZkxYblIrOWdVU1V4bll5dGhMdEV5Y3hVM1hDeWEraVFQZVJxRTNVVWlLdjZSc253Y3FySU0xS2ZtMTEraHczeUNURHl4MFZIZHgxMk1ZQ0VlM3R1ZTRmT0dEYTZjSDJoSGxiVCs1WnBOL1B0QXl0ODlFVS9BT2t1b0Y5LzJpcDQ2UjhPcC9RU2IvVk9WUzhjanZZeEk5T2FRQ2xWU2FkelR6cjgyU3NSVy9GRWtKQXQwSTFKMGhBTitUTTlWL0pVL3l1TmdMNzRCa040TFZrOGt0cTlyMGRtbnRoRmhFajU5bmNWZU1CL0VQc1lCeHA3Q213WCtGZXZIcWc4eXNnWVg0RDJZaEloSFpxclB2T0FaTjVNY1BXWjJMZDJ0ZXJvbUlKaXVLUEZKbWVJb3c1NmcxZm9MRi9mM0s2YXNtM0FhRjhMTXZQZXhtOHk2M2FGSzZTQkVxMFB0dzJGcko1Z1orQlorM2IwajRSNnVuYnI1emNwa0Y5NTdQSEFTT1Y1c3pxM3dqRHlNL1dHLzNRZnBjVHBiUWVzaVBqNXo2endmSW00NFZzYzRwRzh1MzJUbjI5ZmEvNmgzUmZtZ2dWK0xjZnc5TnBIb2p6ck1KWGNwczZ2cHJyZXZVenRERnVZZVFtb2V3K0xTZkc3d2VmZlovaVh1a3ZhcVVsYnFTaVhyTUxOU3F2Y0Fma1FGL21GdVRYSDZXdEEzQzNIQkFFZ3BJRU13PT0iLCJtYWMiOiI3Y2MxMmQwNTk0ZjU2ZWJmYjgxNmRmZGFjOTUxMGQyZTZhNTE0MzMwMDgxZTkyOWY0ZTljMjFiNmI5ZjRjZTg3IiwidGFnIjoiIn0= \ No newline at end of file +eyJpdiI6Ik41eU1ZbHlFWERLNFdDeE9jZmhqMXc9PSIsInZhbHVlIjoieTBaUVZRbE9HZEJjQkV1ak5kY3ZSRmpZNzRGR0NQcVVEeDZ2WjhJZnlvVVBwRXc5Z0NGUEVOaWlQV25nUE9uRmdQM3BBcE13TmlVVnRWbEc2V0NIaHhSS3E2QzZHczV0YkRBeDRNMjNuQXlyRVdWRXVwM3pFZmRNSUhKbndXdVl4UXF1R3FZdWlzcWhGdWlYVnpBcWhFeU9lMHRnZ29jU1RJUzBpbEdKOGRWOTF0SGszREhEOUJNNGh5VlJ6U0p1NklvcEUxdndxZmdoMEhVZnQ1MHdsVGN5YXBaZzB2M25mUFBja1M2TnhONE50OW9ZZU1xOW5VVnUyR2FGSzhmbXNaN2ZtYTU1SUZ6bGVWRnhtdEo5OUhVSmd4Q3M3RnJTS1NxT1ZoWXFUcEpqVEU3dVBPZlU4MmNudm8wRW5jQkNGb1hZV3dxa0JjYWxHN2RITUNCYXlQS3lMdm8xS3ZGSVIvWHpiQ0kzVXoybjJZNURGa3I4R21ubUI3SW53U3ozU2psNExzRmFBYzRwYWd5QTNpZDdTbkhUd2VpRTB5QnVaQ1BjVzlucHJZT0h2L0xjNkRsOUZIVVlPc0N6OTNZM2pJS3ZFZWk1Qk5vVm1ndDlmNDhGcnM1cHlqQjl5RFhXN2QxbmtRRktveUpndFFmNEg5bVBUZ2k2YWROZ1EvU005SXpNSUFDV0R3MHhaSm85MGl0QkJSN2g2dTFDTVhNakExbXN6MzZENTM0ZjNzWm9oUWMxS3pleTQzcy9EQmZEMDhZcStHZE5TeHpTNEM5R0ZTOU1pWEt6T1daRTJWYlFTeVd6WUpPdUVCTDlNTGhrOE9sT1p3WWl5d0pKbkE2TzA2dWFSTmJ6MkExQmI2Und2KzJwNzVMbGtKTElrUThvTVRDL2htRG1TUnFBd0pOMkpjYTJXRzRHUDRvQ0xPVUV0S0JSRHNXZXB3M0g0dnB5ZWFEaUtaTlg3c3BYRDloa3ZUSXMrZ1pDTUNaK2JkM2RzTlBHeGZpQmVadDV4dCtyRW5XV1lyNTVlUFZyeHJiZDJzTmRUZ2toZnFUVVJZUVVSUXduTmFiME1NQk1GYS92VkF6aDc1K1RXSkpvb2pWZGo0VXUza2pKcDBPOGdRT2lUWjNCNS9uOGN4T1RsZGowYjR5WlRoY2NCVEJWRHAxYlNlT0dQOU1UTjhwcHVXR1hHTTdCaThRTGRvTXZDem9TK3FwbkwyREpraFhqd1BaSDFZS1BScytXK0FuVjVyb1A2dVV3WW45SWViVjZmRXYvelRnVURTajRCNURRejNUcUhHSzBkaitjR3pZNFJCSnMxQk1zdVlZZkt2U1pBOUlIOWllSGFSaVA2MVhSamlFa0NCUjZ4TmlxeEpKRWZRdlVyeEpjdTA3VUpFeHJYR2szbjE2eXB2WmNtNExpS1JCaEZGakdGRmF1SHdhQXJaM3ZrdmxQRXRka1dYbHBnWkZZUjVmb0x0TjZYQjRQK1A4YWJiWDBaQ1JOd29NUGp5d3BvU0Q4UWk2RzBPZFJBZmE4Q0RNRXd0UG1NMUhzNWtaK2FnWElacFFTY3lhNENkR0QrU3J3NkhGS0ZqNmEweDJ1OTd5Wmp1WnZLT25nb0t1U0pkVEtjelEzWlE5dzZtNllOYWZqeU10UFAxNFBEOG1IcVYyMmhneVdxOHpFM1pRZVpiRFFkMkl6STYwQ3Q3MUxjNnU1czUrUlcwOXprREZiVWthMzBqb2src1FLd2F1U3lXamhiUVUrRWdGSEJ5eWlTdWhqVTV5WnR3aGZGYlRTYW0wYklaWERnWmZheUxTNHVXclQzMmhzbExnMGdPOVlPSWZNMUp5c2M2Q3RUSVQxUjI0WHY1d2IxQ0JPd2VKbTVoZFFYNjdlK091bVhha0psQW85K2NubjBHTTFVdk1xWDZobDBlRml5a1kwUlNyQWN2TlJ2ZWRuZFhoSTdJMWJlWHI1U1FlUHNGRDNRT3dPZjRwVlVNcVJlM1poblhXWG9TemVHK3ZNZGcvbFRLa3I1NEM2d0JBWjdMeVVPSjF2bmxmTjJJRVlKWjRSTkhPZTBiZ1YwV1JmZlJHRnJoRmgvMC83NlVqaVlFOHFFZkt6SG5XQi9BQkFOMFVrL1YraitkSkQraXBHN0xnM1EvaE5GWTVXOG0rOWJ6eFFsbEpOWUY3NVdpeEd0YlFBbG4vSFVjS0taSUQrYTFlc0dNL0xxbi9YQXZ0T1hMVVRqakFsQ3RqejB5ZXJFbnNpdVhYRXU5NVVGWHdVZVpjS0VvNUVqYkZKYytabzVFSUFUa2VweGM0T0plL1U0WFJBQk1GSm8xcHU0S25QVVBhTFBpdE1oa0hRK2dzWFFiL0RQWHFDUVduSnhGZ2JmU0VQNE9oZGpzeDVTeFQ1OHE0VTIzL3Q3WUhGTDF0NVRrdGlVQkxmVXc1bnFoNE9aYnlUTjFSU0hCeWQ0eDVpMjdxbzI1cUdVRnFFTDgzU2ZpTExsdy90UXZuZXBRbzUvVEh1eG1SMFZJZW5seVdtSGtwWTJ2UE4rMVROTnhOckxmWDFRQjhnRDlVV0hVYjVFdXh2Q1IweEtqZjRqZjMvOTBuSERteURIc1NvRXlxNk8yQ2NLcit4RGpTKy9rQlNyZUVOTzhQbXZIdm9DQ1RVVWwzbWswOFpmeWFCZU1uRXNUMVQ0cWNwamRRZm1nT01wbnB4K3lOZ2h0T28vdzc0MmkrK2ZVWTFvOTJ5OGhPYXJTU3JoVWFRNUpZVG82ZHBtbzhLZlJsZTlHZFU2NFdkenRYd29yVmNYVmF6ZzQySHF5OXdwYmNPWkJ2aHo0Y28zalZLMWxwcjNlVlhoOXVkcm9BczRIQjBUN1JmemZjNERCMXFqVHJaZWR2YXZrcERNOUV3VU9yRUVWVlh1YysvUVYza1NSWHA2ZDZvb1VEVHF6QTZ5Z3hONEkwbWl1bGFNdnp4c1pqZVV3NWg5MXZOb0V6OEdRRy9iTFRtVUxERGNQWEdlS3REcHFqOGdHcGJ3OWp5azZZbWd3cVBZSVJHb2sxbmVJdGhhVk0vTEJDTTBVOExicisweGg5NU85elppQW9yMVNuVW9qMm9rczE0alFtYXJyc1UzZlRHTjF1QjloS2h4SVhFcHJmQnkrV2VJTEZjb1ZXNHozT091QXZxb25wMnBXU3pPSkpidFd5QXlLM0tlWmtiSDZuNGNMQXJ2OWt5OWxDK3g2VlVVQ3ArdnBoWTZ3MzZjYzdONkhBNGU0YTB5S2dTZ3ZoNU1ZaTkxcjFRbGVrNGZJSzZBempwNmV1Umt0WExSaHFWRGtLVnRhOWp6Wnc1aE5oV2FoeC9ianZ1bm54cnJ4Z285OVZ1QzMrbmZiVUtPU2NlSnBXYVdEcFVXa0lkRmE5Wm5hdEVnWlZMTEJYWE9iTnQ1RWJacG4zdGpya0dUcXIwcXNMN09QTXVvUXBoQnZOaUhkYzhMOXI0Tkd5VmJiRmFvMGJjK2xyODEvZjY1K0d3bHZHNGhDMGh0TUVIOVQrNEN2ZjJJUVZrVk9TQW5nUUdscW4vOVFpTm41WU5nWjRxdDZxK1VvbThRcmg3R1J4ME5kbXd0MDNPU05YZXRLL09IVGhLYjdHRUg1ZHQ1V3paNDNvVXF0UjlVUCszWFUzUWJyeStKemJtczZHc1pxNmc2b004RjBncm1HQ1JiRXVkL3VCZnBidkpvMzZwU2pUTWRQUVVRcVVOQm03MjZzWFdXYjRXRXpVenJiRzFjZHRva0tES0VZUXlLMi8xZ3VraXlqZ3QrUkpLN0htdkpMR3F0NjZpUXhHL0RuYUkvY1UrQ1VuRDBWRzNiSVRrTXNmTEsxTFJJZTRkcWwrOVozN09TZ2FjenMzL1ZRWVhjblNFdStFMElXYlBqUXJ3bmdLWlh6S2E1UUJjVmZJcjlhNVNyVmpoclFDUjhxZHYraU1tOVBaSkt6aVBWQUo2bUdRRUErOXIrR0lkdEpYY2xOVEpuRjl1UDBzOXhBTjBTd3VvamVGbUdnbGorU1o3bjdKRklJTXNmV0ZJM3JoQjdJWjl1NjVld1lDbFJwY0pva01teVhyQ2dHL0toc1pjaXhqZGQ0TlcxU2l3NWFKVUR6b1VqWEhQYlZpMDRPdGhnYmVvQnBkZ1RudDRWK1BxaXZLRU5sT3pBNFlBNTFJdUlobk9wOTNNcnBoTUxRaTBPTnhlMEU5VnEvMDZ4Y2ZBWjh1OHNLaDZKdTRoTzgwMWFoWU5najF1dW9GQzJFS3ArdHA3MHJpZEdMVC9zWEp1VVppM050dTBWOGhRdDZlOWVYbzhCMGMzem9tQUdNMTEzUnhMaStqbnZrRVV4dTNESmlrNzNQcjJhdERPNWttTXVOYXEyekRlMEw2U3NMSlZlNE1tNXJ6VmVoSGdITTZlZVZBWitOQU5SL1hrLyttOUJSVm4rZStMZEZKdmllSnZKOEFnbDdDY2pxdHc3UEc3dm1jN2Z2Z0lFcEpsUmZXQUt0TGU3RlphbVc2bnRxZzNBTDhrSXRFUk1jcFROenZvaXY0S3k1VXBuZU5wYTgxRk1LMW5uSEZPbHp2aWgwcTZLM2pURDhtZjNNa1QrWlA2NjZZT01MWFFPaThHcGJlcVdLUEVtWEk5aW8xMmNaK0VtODJ2UVI5Ni9JbkpWSktaM0lwdEkwOWdlcG9OMi96K3VsN2R4RC9Tc0xYYjlpL3ZXc2UrQ0FTK0JzMDl2Y2Y2djNiaFhERTVwVHQ1U0FqTFlPRmNiUnIyOXRQckJWQVN3RVR0WVk0YmlSbGNGY1lnY2FQTjZ4dytLMEt1RWpWako4UWwxbnlaNVVyTU5HdS95cndTeHJDVEs4Q3BoVzZ0bkRpanFDNUxnUlJVMENyTnBObWxKVTloUkxFYWoxR2p3alhvU1RWTVFVNTYvTk1wODZuaVJIQ0toOGRsSXlWd2grS01uTVFVK0dmdVVnR2xXOFl5a2JkTGJaSy9hVGNsdm82TGF5RHR3dUdNVzgxcHVIcjFmajFvZVFhSDlYSkZ2NDIwZ3NpenRKZ2IwME0ra2pYeUVPYnowTWRLS3hYYzlnc0ZPRi94YnVmZnRDQ3UwWTdVUEVWM2xLbVM2dGxHNU9vNnJtZFNya0xLY3FsckhFb0M5VGlBT0h0RVZKeHlmM0FhQUhNRzFGL1dRMVluZnR3NDZHbmxOMjZoM3FVbVM3YlFESmpmM2RocTN0YXpLOXM2QVJnUmZIV2tlbUVzWU5KTW03a1NEL0g5SlpkcFNpMVc5Zy9qWkxOSTdQSTNteXd5bmljdldKUnU2dy82T0drUm9xMnoxcVEzWUJRTkZSUG93Y3FTcUpHQ3c0SXZFc2U0ZUw2K1pEWkR4Yjk5VElkbGw1OVUzZXNIUFB4cjZ5YWNYQ1h2ZUQrZE10Z2NzYnFQTHY3UmgvMHpNL1RudTVFeW4vbFhEU3JkaHlKV2liWEhpOWdDcWZQMUw5ZHFtNDFWWlZMMHpDUlJaWmpqTWN1cEtYS2UrZFNDYWpVU3pocDhPYTNiM2Z6empSRjhvYnNzTFY0ekdxYnpuV2ZTMEFncXBmWkIyVDF3ZTZVY1U0RlNKelFNMGIxa0FWSXg4UkhjMEJYZFkwa0Vta0ZSelplV0FOR003SUZISFJRck1jUDJPSzhoYkgwQ2ZPNisxUHYxb3gwZXlyaWUrNTBFLzhJdDIwV0hnUDJuY2lJclk1aGdpZFU0Ymc1TmZGTituazF1aG5Ua0g0SkRKQVE0OEdqcXU4NkVuS2w5RzFXV3JhRkVKNXA3dFh3RWk5MTAwc201Vjg1VW5HZVVxdnMva2ZINmg3Q2Z0TkV3YzZhK0wxKzhLazdPdVJHNlB6cWF1MVpDajdQWXJTQXZDSFArQWpMRW5RaFZISmQzd3U0dXkvMHlQZ01TUlhMcWg2VW9pZjMrWWhlZHJhSHZBZ1d4aHpPdkdBRS9xWDg2OVVBTkFZZFdyWnBockdHQUJPSFdlbkY1RlJhVithK05wKzRTU2ROdmhwVDJFVUkwSVRSekNlVFdZaXB0eFlDYVk3WUcrY0lUOHFvdEE5TGFVd241bC9XQ2Zkbk9sZVJGbXJqSUo3azN2WEp3M2dmSnFudzhZZmViQ2FSL2ZhTi9MUk5raVRsaS8xSGhxNTFCNmhaT2N0VnAzRjBLcHRiWWFOeGY2akthb3B6WDNPQzZHVHdySCs4TXFKYTlLeHZnN3NoKzFVM29TbnFlcWxNN2JNT1piVkdCSzg3UXBML3VmTTZGOEdwbEtoa1JSdE5Ock53RzEzNWdnRUFUWHhTVWpzdTRKa1NrNWt4U0J1VWpueUVIK3B2Y3greTgydi92ZjBRVy9iRDU2cDFZS2xKYkwzeDY2V3FoclBYWU03MXJ2dSt2MWdNMWNjOEx4N0tXY1JmdjZIeHZWLzJ6bjJhOUlaTEVqSXZaWTBjQUF0Q2tkVTl3dHVKamJob3hxbDVOZFN5eXZvRURtWUJGTmZOTHFUSGQxa3Y4MjB2WEZwY2loTzVUOVBhbVVnZlpXL0p3Y0pMaTZMQTlaZlZMVGd6aVJVVWNGaXJXWlc1NVhrd0lhNThhdXl2MmpYTjdHdWljYVZwSTBFWUVvQjBLMGxQck5ReEI3eDVNL1BFRFJDNVc1Q0ZRWCtvbXY4WVJOd1FDTlZLMFZkeHQyYUZTNXpoWjF2bVo4bXFON1g1dUlrQVlTQUNMdDVPT1k2TDVhOElYQ0t0RVNCWS8vSEdtVnowYmsyblZBTVVJQzVmSmRNME02R0FKN1JhS0xMQkVFeFQxbDJWWEVNTXZqMmgwYkJDV2hPL3dDRzBuQzVjN0VpUDc4NHVWVVNTVFRwWUNsYUQ5SU9ucHJPQVVjcU9rQXR1TkVtck1WV3dMYkoyMWx5NE1QVGgxSWd5aHV3d2s5LzNNVTR6a2RCM29jSjV4ZldnOFFZL1lEYmcxUFFFb0RQUnliNTRKTXZLVGx3OVpDNWhDVU9Cd09TZFdYUk9WR1FwUnZjQStmRTZiTTBiQWVGWFJjM05WL0p1TnpLQXVoNnh3SkN4TGNUQ3BRWTJsQWVRZnI3TVg3S0tydHpBZ0FocElSRlE2bmNVMXhWWTloRkNVNytiRnNKc1VhZ2R1RlY0VHVKRXJnY0hEMHIrMlNIOTREblhCbktWVFZGbitDQUY0VDBpZ2pFV3VIUjlIYjZ6NnR4MU41QjFnbjFMRW5VbmJvb3BSR1BEQ3k5bXI0ZDJpWmEzc0FJd2ZBK2RPSlA4cm9sOUFwc21LT3NYRk1hdDdRcmVKd1RNU0IxL1BXenE4VURVQVFycEo2MmRlbjYvZkJ5clRyWTRIKzVCZUF0WWxFNGJjaGMrZ3dPa0MrdnpkZ285anYydzQyTW5VK0MySElkSWo1YVFvVzVzNzFIU0d1WjlVdGpuSE9vMlNVTDRKcmwxUW5RRjZNaU1VbGpPZDJNN2hFOS94eHZESkNRdWdGRGhQT3ZWemsrR0hBbUc3OEczandhR0hWSXJzQkdqOXVyK2QzN1dDQ1BxQlQ0WUMyMTh4bGNncTJIeDhCakE5bVVsNmt4MGw0K0hlSzZ1dzhoSXFhRzUxNEdyOWQxRWdFQXAwd3k3R29EcjhLVkwzdUtGT0R5TC9mQS85V296WEZ3QnlydVkvTFZ2S2lQSzBCK1ZoYS95SnhreXZNODdUcDR3RjNUUzlHM0oreGNKNlprWEZuaGtVZUhUcjZzbUpwakZBZEpxd0c3czRSTWRTalRLakFkaGVCdWkvQytKUlpybDRURHlBbHhmaTdSaEJSem91QlBFYzZvVFlTTFcrQTZJU0xGejYzTlMyU0QvL2tMSk0xQXlkWkNmQkRSR0pYN1NodUdEQ2hmMm9KSWdOSnlVbHM5MmJURWwzMmxwTEtuT0hraHAvbWpmaVpXOGxhSmk3RE55aDBGQWtvbU1iWVlaUnZJZWhBdmU2dk1yRS9qaXExZjVhRndxOEhFazBNZEhKYWowMUxqcmpzOXg5WFpqWUJBT0grOTdTN0NPZm0yYUpURnQ3YlBqQzNuaUpRbEkvdVp1U2V1dFhCaGQvbG5FOCtSRHBEUUoyRTJkRE9Tbkg4dnZxZDIrWkU0SFFPYldrbHQxL1VYUThhZTBBZllDSk10b2ZKL1FBNWRBUVp4Rmdsc0dUQ1lINW5tUEJ5YTFXcnU1VVR2MGJpVlRkMWpNVFJXbHJCZnlXVGVONllRT3djWFViM2ZiT1JxeDlnWUFaU09qYWp0a0RBOTRGbG1jYStsaVJTdzczcmRzV3JvTS91aGZzdGlEMlJMeXBuWDc3TWtvU05pRnNNR1h0UCthSUlZUURrT1dPVFovdkZMeDhRQ29UcDhHYUprcnpsazlGOS8xVkRWWUxONnBqc3N3a3l1Z1NKbHEzL0tnNXFnTTNoeUp1M0lVTUUvWVlNVm9CTnlORUZna2J1VlVIYjhoWmVaWTY0UWtIcWovV0xjdlJIMldvSXphOVlEYWNjSXd1ZzFWZHpLTjhsY0pXcVY3MG5Nd1pmTUM3b05oRVU1R25NdEZTS01zNzF0UkdDQkFYOHI5c2xTMnVzQ3BYeTJqclEyYXV5bkN1Tm53eWx2OElHMnE1R2ZTSEJBUHZ1Z2UvV244eHN5bEx0Mm91NGVWei8vS1NSU2lrZisrOWJDbGNLQUZmZEppU0owT25mcmY2UFAyV0lkYUY3NnZSWVlJOHlqcTlxdWdheEs4ci9tc1k2dWhMV2I4U01tQXdzQWFIeCtTRkVIQXZQTVlGQ1FlV0hMRzZiajFRdmF0S05GdGVkbWNLbys4KzJ3MG9EelExTGdpZ2c2amNMcnp6VDd6Z2ZGOXNUc09tYkp4QmJJV2MrQi9iOXBMdEU2T3Q4VzdGc1ZLV1F3YWYrcHRFMG85M0tONHJyNXh5My9KTW42NWNMS0hyalJGWGY1Ukh5eWdTVWdSMUlHY1BVRWlCNGJsT3F3YXNPZUtFSmNkQjVBQzRQc0pXcU5CcUcrY1Bjb3k3RkVqeUg3clFTK0lJUW4zc3EwSjVxdFlzakJ4bDVWbUNpZDJCVmF6RmRRS2Z6eFVCNUE1ZE4vSGVoR1pYVGpvaFRPU01UM0xkdTcvdEJ5Q1ZCZ0RzOWpDNzN3dTJvcUIzSnkxOUM3TzdBVUdLaWVBalFlUUx4RStWeW1heTIzcW15ZkFmQXBRWElId1NPcWJ4c1dub3JwR1lnam1ReFIvNitWV2VKQ0MxcWhGT091S0tWc2FJQ0RFRXlJY1dkYWUwNWN0SUdBM3BGWU41ZEVFaW4yWkl2VS9JUy85OVl2RDF1czJSeWxQZ0dnTm5sV3dDL1h4dUpKMHRqeFF2UXl0ZUpRazRtSEdPTDlrREpmUllHdFZTa3EvMXNWclE0SzV1NHpiQVhiTy90YUM3ZDhRdGs1bWo1MFBuR2V3TERHVHFsd2ZuOHcxUE9lT3AvWkMvTWYyTXMwdXFxcURjeEZuNDNCVnlkdnM1azJacUtPRWN1SUJVWTZtcVhab1lvVGp4aGMxMjJUTFpPSWVJbmF6WU5uWUlKR0xBQncyR3ZQVFFtOXViK2pyZHNkQ0RUMmhUQ2xud3dKclhWQ1VPeGNnQ09vTzZqeStsLzZzdC9DaDd3TFBrb1Byc1hsS0xockd0SVl1V1lUSHg3ZUxPU3hhckF2c1VVMmV2Q0hibFpsZ2VKeG15SlBuWlBFK3BtSGRTRmpzUnZrVGpDSTBheFRZT1hnbmxYWVAvMVI0L3UvVTB0alhWWW1uRGM1bFRYbUpkZFhHa3BMdGg3dHdtcXFWclhoVXhDZDVrS2ZIbTF2M2JWb3I0QUZHQ2EvcGU2SEpwdkJGVERqUFlSdWlkQnpQMWZmamJaYVFZL2VSdnU5WU9kNGhBSUJZd0laaUxKbFBLS0ljcmhZMWdpYnNpSzZmWm9sYWlGK2IwaXpETUxwaUhLN0thcTM1czhLc0J1YXJHcmUrSy9WZldZRDdCOFhKbFpLTTdSR3pGcE1aNlVzTVpEM3FDWS8rRzdDV1hvTzVMc1U4SklDOUNJUG9BeTl5c2lNLzEwZ0txUzFtVVAyOHQ2c1dyRTBVOXk1cmNqQ1VJd0VvR0pveXd6emdxbXRGWUtxbWxGMmpEM0lZZFdkTGxDRGN5NWgrVVdUYzllSFYwNXcrVC9Jb0dJdWJia1lxcDRNdmdtYXlNYVlSUFUwSVVGVE1ZWHVqaWlMZUJMWlU4UTgyQ3ZLeWhpNU01V1JpK05PYUoyRVpGdTM0UHlvSWFGMFdVcklkSDBDM3F6TlRTcXN1dk5uT3NoMkRCa1NwMnFYcFVZMGF0cDRvaXFVSWU1bWFhTlZmeEt5d3dlcGJrYzcrM0s3U0xwYnhYUjZ1MkRYSEc5aUo1WUNjZElydy9FZk9XQno3bDMybFMrQVplYXRRU3ZyYjdmK09XdjJ3WjRXMU11TGVFNURBV1dkRGt2S0tsTmN1blhPS2Z5dEdOUnc2QTJvSU5qeWNOS2dKQURXVGcvRFZGaUdBS0VScisvQkt4Z0VGeTYrVUtNdG1Vb1RnVmVKdkxQbC9uSE5RRGxBS3NBcDZDQTJzYUowa0RvcmxRT0txdXN5UVVxNlB6b25KMElHVW9jdTc0cmlURFp4Wm1JcUxPY3dPdHRoc0pxZnN0UjRpc3FqK2pGeTNOaUF3Q2xhR01XYnNTeGZXdFh3NmVQdDdIUUhwSkpFNFFXTW40end0SFM4R3NRTmlzMW9BeWxCUTZORkJvRlFxRzNST2M3R0Y1VzBpVkVUR08xZjZCejdvV2JLcVJGRFhlUjhFVzFxVVR5OWNNVFJjNkI1YmdQaC9VYnE3SnoxMklyQlJxYlZHVXhuQklkYkRsWnRMekh2Q0sxN2dvUXBqcThqME91ckE5eUdRcUFSdURNVkhYUkhYcnd0RytEQ2RYMUdxamp1S0NsU0hHVzkzTzU2SXFKcDNZNFZtQlE1bXBTK0o0UTNuWGtEeWFQRTg3VFFkUVNXY0FCb2NzQW0veEIyYytzUVBJVnVkaUcwdHlDRVE4QzlRUkd0MnJXZlQvaEJ0RmUrZlE1VUNtdm9ubmcwY0lBeFJZVXYyVDNnaE9yejFxUFpZOFpIYURiblNJZHV2S21sYjBHSWJnMXZBbVI0NHV2OTY2S01qL0lZalVhSll1NjdIS3l2T3ZaRGtHNjluQS9oWm1Vd0hVdENrMXNuejlqRUh1MUgvK0plM1hQYVRwK1lvNVBPV3NXYytIcUxUU091ZWx4YzlCK0tVd0NaL0k4ZHBNeERpa2xYaTBZV2JmVmpvaVFBOFVUYjlHbStoelpJL2NHcnptM1RPMVRVTTNzcDJGaUt4U3FYSzMwUEZhT2dPQ1g0ZHFKaW5rN1BYMWJvaVVkM2h4TTA4Q3R2U0hEbmx2TVk2aVRXVmNUaVhMc04yQUluSHB6bmxnZy9CZmFoUldOYWlLTEpsUXJDZ0lYQmJpdjczaTlWdEpEcG5vaHVuV01qeEV1VnlLRGF5Y3J0OC81SGlvam14TXlabEU5b3ZjQzFQcEsybC96a2NOMDdTb1hvdHJGZTdEVGNtVVJORU0yWHlzcUQzdVhBTUlONkgvQlZjNDVMYW1PU1RjTmZYTEZhamJXK1EyV01jcXZYUUNPbEZ3Nks0YzBtN1hsVjlXV1IzQ0wzRVYzVDNLWFFMNlpNTU1MdThvVWE3YS9Ub09PRzdlaFBIcStSbUR6VENRTEJySEFwakk2cGIvTmtkbEZtZUpBSlFyditJSFpyOXFxWHd6NWNHUHlBR0NGZzdneUtjdVp3Mld3U0pmUDM5amt2RmdlMGlieWYrak1EUGx1U2oydEM5UnV4ZXFiL1hyd1MrYXU5WUQrRWE0SDJWMGR5d1dmWkN0Y0l4NU56cURkbm80eFc5VU9HeWI3STJTYWVZRHdVSnVhcTJLa1pPd1ZPejQ5cTdTYkdtWkZVN2l0aHAxUi8vMGtOZ3BXTk9nQ05vTlRsRE9xdlBpZHBiYTV3WU5RRFcveXloZG5IcitnVmpTbkVkOHZHZVYzSmx3dTN1ZEpUWGpxeFl4amc0U1JRa2pHSnJ3MytGVG1tbFZxZXE0K1VFZE1Ob0FRWXNmMGtmdTlFdFNZRjhkQWxHUUx2RkhGSFZJWGtaMVhJKzB5YmtjRUxqaDNVT1ZyUnVYSGJjZ2JKYVE3UGp5Nk10YW1MYW9oSUNaNjhDaGYwUWE4UTdFbERHSk1SUUZRemNtMUNmNmZTRUJxOGJaZjl0RDdqZ1ZWZWZlcW83VCtIVUtUTm4rZFlyWElwT1IvY2lsWm50Rzd1bk5KWmFMak5iOTVCR2RZOXZObHNCcTFiOGFwcVdlaWdtbDhqdlh4NGpTWEw3WFlDeWo2YnRPa2h3LzdXZmlDOHNzUUJLcnB5eFJOZEF6d0FZRGI3Y21yeG5oT2lZZzdrL0hneGZ3cTBJWTAvYlhSVGtaTWRwZGNuVVg0U2NUdXhPRmF0ZFpYcG1ndmhpU0NxS1FCZzZvSk9GdFRPWmFlV0tiZjZMcFRuZUNyc3EvbG9JSHhic0lwc1NZYjJqUU5vRm5oSkNqYlFIY1UzZ1hwYWpEZzVaUzErMmFZL1hMR09Zc1BwQlpGYjVoc2Y0dFZJR2RhdHBwUXFSQTVjWjZ5blJLNTZJNUhhNllkYS9WSGVhRWl2SVh0eXV2c0VEN244UE9qcGpocXh3N2FUM0w2cTEyaUZ3M2pKdVdzUEZHOXdUczhzK3BBaVFEL3hlZ1QyWk5NeExURVBlU3laQys4TENiK3BPUVpCNVpWM042L1RpVldxN0JOTDg4Qi8yR1JkbmZ0MXd0cCtqVmNBbHlkeXdjM0JkdzQrdHpsNVhweUJvVCIsIm1hYyI6IjZkNDFhNjdhYmZlZjIyOTc1ZmVmY2Y3MTRlMzc0YjU2OGQ2NGMxNTJmMzdmMmMxZjgxZmQ4NzE1ZDBhMjk5NmQiLCJ0YWciOiIifQ== \ No newline at end of file From 25e75fbc524e01b01c869857d9001388da48bc2d Mon Sep 17 00:00:00 2001 From: David Bomba Date: Tue, 5 Mar 2024 16:30:54 +1100 Subject: [PATCH 7/9] Fixes for report exports --- app/Export/CSV/InvoiceExport.php | 6 +-- app/Export/CSV/InvoiceItemExport.php | 6 +-- app/Export/CSV/PurchaseOrderExport.php | 60 +++------------------- app/Export/CSV/PurchaseOrderItemExport.php | 38 +++++++++----- app/Export/Decorators/InvoiceDecorator.php | 1 - 5 files changed, 37 insertions(+), 74 deletions(-) diff --git a/app/Export/CSV/InvoiceExport.php b/app/Export/CSV/InvoiceExport.php index 9c81fadab634..e7b08a7ec3ac 100644 --- a/app/Export/CSV/InvoiceExport.php +++ b/app/Export/CSV/InvoiceExport.php @@ -151,9 +151,9 @@ class InvoiceExport extends BaseExport // $entity['invoice.status'] = $invoice->stringStatus($invoice->status_id); // } - // if (in_array('invoice.recurring_id', $this->input['report_keys'])) { - // $entity['invoice.recurring_id'] = $invoice->recurring_invoice->number ?? ''; - // } + if (in_array('invoice.recurring_id', $this->input['report_keys'])) { + $entity['invoice.recurring_id'] = $invoice->recurring_invoice->number ?? ''; + } if (in_array('invoice.auto_bill_enabled', $this->input['report_keys'])) { $entity['invoice.auto_bill_enabled'] = $invoice->auto_bill_enabled ? ctrans('texts.yes') : ctrans('texts.no'); diff --git a/app/Export/CSV/InvoiceItemExport.php b/app/Export/CSV/InvoiceItemExport.php index 54cfd22bc3ef..791bfeddad17 100644 --- a/app/Export/CSV/InvoiceItemExport.php +++ b/app/Export/CSV/InvoiceItemExport.php @@ -236,9 +236,9 @@ class InvoiceItemExport extends BaseExport // $entity['invoice.status'] = $invoice->stringStatus($invoice->status_id); // } - // if (in_array('invoice.recurring_id', $this->input['report_keys'])) { - // $entity['invoice.recurring_id'] = $invoice->recurring_invoice->number ?? ''; - // } + if (in_array('invoice.recurring_id', $this->input['report_keys'])) { + $entity['invoice.recurring_id'] = $invoice->recurring_invoice->number ?? ''; + } if (in_array('invoice.assigned_user_id', $this->input['report_keys'])) { $entity['invoice.assigned_user_id'] = $invoice->assigned_user ? $invoice->assigned_user->present()->name() : ''; diff --git a/app/Export/CSV/PurchaseOrderExport.php b/app/Export/CSV/PurchaseOrderExport.php index a43702b035fb..2a1a77956e44 100644 --- a/app/Export/CSV/PurchaseOrderExport.php +++ b/app/Export/CSV/PurchaseOrderExport.php @@ -31,51 +31,6 @@ class PurchaseOrderExport extends BaseExport private Decorator $decorator; - public array $entity_keys = [ - 'amount' => 'purchase_order.amount', - 'balance' => 'purchase_order.balance', - 'vendor' => 'purchase_order.vendor_id', - // 'custom_surcharge1' => 'purchase_order.custom_surcharge1', - // 'custom_surcharge2' => 'purchase_order.custom_surcharge2', - // 'custom_surcharge3' => 'purchase_order.custom_surcharge3', - // 'custom_surcharge4' => 'purchase_order.custom_surcharge4', - 'custom_value1' => 'purchase_order.custom_value1', - 'custom_value2' => 'purchase_order.custom_value2', - 'custom_value3' => 'purchase_order.custom_value3', - 'custom_value4' => 'purchase_order.custom_value4', - 'date' => 'purchase_order.date', - 'discount' => 'purchase_order.discount', - 'due_date' => 'purchase_order.due_date', - 'exchange_rate' => 'purchase_order.exchange_rate', - 'footer' => 'purchase_order.footer', - 'number' => 'purchase_order.number', - 'paid_to_date' => 'purchase_order.paid_to_date', - 'partial' => 'purchase_order.partial', - 'partial_due_date' => 'purchase_order.partial_due_date', - 'po_number' => 'purchase_order.po_number', - 'private_notes' => 'purchase_order.private_notes', - 'public_notes' => 'purchase_order.public_notes', - 'status' => 'purchase_order.status', - 'tax_name1' => 'purchase_order.tax_name1', - 'tax_name2' => 'purchase_order.tax_name2', - 'tax_name3' => 'purchase_order.tax_name3', - 'tax_rate1' => 'purchase_order.tax_rate1', - 'tax_rate2' => 'purchase_order.tax_rate2', - 'tax_rate3' => 'purchase_order.tax_rate3', - 'terms' => 'purchase_order.terms', - 'total_taxes' => 'purchase_order.total_taxes', - 'currency_id' => 'purchase_order.currency_id', - ]; - - private array $decorate_keys = [ - 'country', - 'currency_id', - 'status', - 'vendor', - 'project', - ]; - - public function __construct(Company $company, array $input) { $this->company = $company; @@ -169,7 +124,7 @@ class PurchaseOrderExport extends BaseExport if (is_array($parts) && $parts[0] == 'purchase_order' && array_key_exists($parts[1], $transformed_purchase_order)) { $entity[$key] = $transformed_purchase_order[$parts[1]]; } else { - // nlog($key); + nlog($key); $entity[$key] = $this->decorator->transform($key, $purchase_order); // $entity[$key] = ''; @@ -184,16 +139,13 @@ class PurchaseOrderExport extends BaseExport private function decorateAdvancedFields(PurchaseOrder $purchase_order, array $entity): array { - if (in_array('country_id', $this->input['report_keys'])) { - $entity['country'] = $purchase_order->vendor->country ? ctrans("texts.country_{$purchase_order->vendor->country->name}") : ''; + + if (in_array('purchase_order.currency_id', $this->input['report_keys'])) { + $entity['purchase_order.currency_id'] = $purchase_order->vendor->currency() ? $purchase_order->vendor->currency()->code : $purchase_order->company->currency()->code; } - if (in_array('currency_id', $this->input['report_keys'])) { - $entity['currency_id'] = $purchase_order->vendor->currency() ? $purchase_order->vendor->currency()->code : $purchase_order->company->currency()->code; - } - - if (in_array('vendor_id', $this->input['report_keys'])) { - $entity['vendor'] = $purchase_order->vendor->present()->name(); + if (in_array('purchase_order.vendor_id', $this->input['report_keys'])) { + $entity['purchase_order.vendor_id'] = $purchase_order->vendor->present()->name(); } if (in_array('purchase_order.status', $this->input['report_keys'])) { diff --git a/app/Export/CSV/PurchaseOrderItemExport.php b/app/Export/CSV/PurchaseOrderItemExport.php index a4f9cc5de795..358af941509f 100644 --- a/app/Export/CSV/PurchaseOrderItemExport.php +++ b/app/Export/CSV/PurchaseOrderItemExport.php @@ -192,23 +192,35 @@ class PurchaseOrderItemExport extends BaseExport private function decorateAdvancedFields(PurchaseOrder $purchase_order, array $entity): array { - if (in_array('currency_id', $this->input['report_keys'])) { - $entity['currency'] = $purchase_order->vendor->currency() ? $purchase_order->vendor->currency()->code : $purchase_order->company->currency()->code; + // if (in_array('currency_id', $this->input['report_keys'])) { + // $entity['currency'] = $purchase_order->vendor->currency() ? $purchase_order->vendor->currency()->code : $purchase_order->company->currency()->code; + // } + + // if(array_key_exists('type', $entity)) { + // $entity['type'] = $purchase_order->typeIdString($entity['type']); + // } + + // if(array_key_exists('tax_category', $entity)) { + // $entity['tax_category'] = $purchase_order->taxTypeString($entity['tax_category']); + // } + + // if($this->force_keys) { + // $entity['vendor'] = $purchase_order->vendor->present()->name(); + // $entity['vendor_id_number'] = $purchase_order->vendor->id_number; + // $entity['vendor_number'] = $purchase_order->vendor->number; + // $entity['status'] = $purchase_order->stringStatus($purchase_order->status_id); + // } + + if (in_array('purchase_order.currency_id', $this->input['report_keys'])) { + $entity['purchase_order.currency_id'] = $purchase_order->vendor->currency() ? $purchase_order->vendor->currency()->code : $purchase_order->company->currency()->code; } - if(array_key_exists('type', $entity)) { - $entity['type'] = $purchase_order->typeIdString($entity['type']); + if (in_array('purchase_order.vendor_id', $this->input['report_keys'])) { + $entity['purchase_order.vendor_id'] = $purchase_order->vendor->present()->name(); } - if(array_key_exists('tax_category', $entity)) { - $entity['tax_category'] = $purchase_order->taxTypeString($entity['tax_category']); - } - - if($this->force_keys) { - $entity['vendor'] = $purchase_order->vendor->present()->name(); - $entity['vendor_id_number'] = $purchase_order->vendor->id_number; - $entity['vendor_number'] = $purchase_order->vendor->number; - $entity['status'] = $purchase_order->stringStatus($purchase_order->status_id); + if (in_array('purchase_order.status', $this->input['report_keys'])) { + $entity['purchase_order.status'] = $purchase_order->stringStatus($purchase_order->status_id); } if (in_array('purchase_order.user_id', $this->input['report_keys'])) { diff --git a/app/Export/Decorators/InvoiceDecorator.php b/app/Export/Decorators/InvoiceDecorator.php index 8dd6d36e439d..5ce6d936c6ce 100644 --- a/app/Export/Decorators/InvoiceDecorator.php +++ b/app/Export/Decorators/InvoiceDecorator.php @@ -79,7 +79,6 @@ class InvoiceDecorator extends Decorator implements DecoratorInterface return $invoice->partial_due_date ?? ''; } - public function assigned_user_id(Invoice $invoice) { return $invoice->assigned_user ? $invoice->assigned_user->present()->name() : ''; From da518bad6e887bcf09ba2b58a5e86ba7cb131946 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Tue, 5 Mar 2024 16:31:20 +1100 Subject: [PATCH 8/9] v5.8.33 --- VERSION.txt | 2 +- config/ninja.php | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/VERSION.txt b/VERSION.txt index 577d1e25e9a9..723ac17de3a1 100644 --- a/VERSION.txt +++ b/VERSION.txt @@ -1 +1 @@ -5.8.32 \ No newline at end of file +5.8.33 \ No newline at end of file diff --git a/config/ninja.php b/config/ninja.php index 660b465a201b..a6e920678030 100644 --- a/config/ninja.php +++ b/config/ninja.php @@ -17,8 +17,8 @@ return [ 'require_https' => env('REQUIRE_HTTPS', true), 'app_url' => rtrim(env('APP_URL', ''), '/'), 'app_domain' => env('APP_DOMAIN', 'invoicing.co'), - 'app_version' => env('APP_VERSION', '5.8.32'), - 'app_tag' => env('APP_TAG', '5.8.32'), + 'app_version' => env('APP_VERSION', '5.8.33'), + 'app_tag' => env('APP_TAG', '5.8.33'), 'minimum_client_version' => '5.0.16', 'terms_version' => '1.0.1', 'api_secret' => env('API_SECRET', false), From 8b382199d4b5765cba709fdaf3c6b62a8a0acd37 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Tue, 5 Mar 2024 16:32:05 +1100 Subject: [PATCH 9/9] Add back throttle provider --- app/Providers/RouteServiceProvider.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php index 967858f658ef..75e6ac6a7241 100644 --- a/app/Providers/RouteServiceProvider.php +++ b/app/Providers/RouteServiceProvider.php @@ -36,11 +36,11 @@ class RouteServiceProvider extends ServiceProvider { parent::boot(); - // if (Ninja::isHosted() && !config('ninja.testvars.travis')) { - // app('router')->aliasMiddleware('throttle', ThrottleRequestsWithPredis::class); - // } else { + if (Ninja::isHosted() && !config('ninja.testvars.travis')) { + app('router')->aliasMiddleware('throttle', ThrottleRequestsWithPredis::class); + } else { app('router')->aliasMiddleware('throttle', ThrottleRequests::class); - // } + } Route::bind('task_scheduler', function ($value) { if (is_numeric($value)) {