diff --git a/CHANGELOG.md b/CHANGELOG.md
index 97a7c1667..21a39cbdc 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,8 +1,10 @@
# Changelog Fab-manager
- Display an asterisk on the phone input field, in the admin creation form, if the phone is configured as required
+- Keep the history of footprints data for verification purposes
- Fix a bug: unable to export reservations
- Fix a bug: unable to receive mails in development
+- [TODO DEPLOY] `rails fablab:maintenance:save_footprint_data`
## v4.5.3 2020 July 21
diff --git a/app/models/footprint_debug.rb b/app/models/footprint_debug.rb
new file mode 100644
index 000000000..9d7c4329a
--- /dev/null
+++ b/app/models/footprint_debug.rb
@@ -0,0 +1,2 @@
+class FootprintDebug < ApplicationRecord
+end
diff --git a/app/models/history_value.rb b/app/models/history_value.rb
index c4844433c..b62cf843f 100644
--- a/app/models/history_value.rb
+++ b/app/models/history_value.rb
@@ -12,12 +12,21 @@ class HistoryValue < ApplicationRecord
def chain_record
self.footprint = compute_footprint
save!
+ FootprintDebug.create!(
+ footprint: footprint,
+ data: FootprintService.footprint_data(HistoryValue, self, 'created_at'),
+ klass: HistoryValue.name
+ )
end
def check_footprint
footprint == compute_footprint
end
+ def debug_footprint
+ FootprintService.debug_footprint(HistoryValue, self)
+ end
+
def user
invoicing_profile.user
end
diff --git a/app/models/invoice.rb b/app/models/invoice.rb
index 49374aa77..efe5cb030 100644
--- a/app/models/invoice.rb
+++ b/app/models/invoice.rb
@@ -174,12 +174,21 @@ class Invoice < ApplicationRecord
def chain_record
self.footprint = compute_footprint
save!
+ FootprintDebug.create!(
+ footprint: footprint,
+ data: FootprintService.footprint_data(Invoice, self),
+ klass: Invoice.name
+ )
end
def check_footprint
invoice_items.map(&:check_footprint).all? && footprint == compute_footprint
end
+ def debug_footprint
+ FootprintService.debug_footprint(Invoice, self)
+ end
+
def set_wallet_transaction(amount, transaction_id)
raise InvalidFootprintError unless check_footprint
diff --git a/app/models/invoice_item.rb b/app/models/invoice_item.rb
index 54b4f45a6..28590005e 100644
--- a/app/models/invoice_item.rb
+++ b/app/models/invoice_item.rb
@@ -15,12 +15,21 @@ class InvoiceItem < ApplicationRecord
def chain_record
self.footprint = compute_footprint
save!
+ FootprintDebug.create!(
+ footprint: footprint,
+ data: FootprintService.footprint_data(InvoiceItem, self),
+ klass: InvoiceItem.name
+ )
end
def check_footprint
footprint == compute_footprint
end
+ def debug_footprint
+ FootprintService.debug_footprint(InvoiceItem, self)
+ end
+
def amount_after_coupon
# deduct coupon discount
coupon_service = CouponService.new
diff --git a/app/services/footprint_service.rb b/app/services/footprint_service.rb
index c5c584b1b..2ada8a376 100644
--- a/app/services/footprint_service.rb
+++ b/app/services/footprint_service.rb
@@ -3,19 +3,47 @@
# Provides helper methods to compute footprints
class FootprintService
# Compute the footprint
- # @param class_name Invoice|InvoiceItem|HistoryValue
+ # @param klass Invoice|InvoiceItem|HistoryValue
# @param item an instance of the provided class
# @param sort the items in database by the provided criterion, to find the previous one
def self.compute_footprint(klass, item, sort_on = 'id')
+ Checksum.text(FootprintService.footprint_data(klass, item, sort_on))
+ end
+
+ # Return the original data string used to compute the footprint
+ # @param klass Invoice|InvoiceItem|HistoryValue
+ # @param item an instance of the provided class
+ # @param sort the items in database by the provided criterion, to find the previous one
+ def self.footprint_data(klass, item, sort_on = 'id')
raise TypeError unless item.is_a? klass
previous = klass.where("#{sort_on} < ?", item[sort_on])
- .order("#{sort_on} DESC")
- .limit(1)
+ .order("#{sort_on} DESC")
+ .limit(1)
- columns = klass.columns.map(&:name)
- .delete_if { |c| %w[footprint updated_at].include? c }
+ columns = FootprintService.footprint_columns(klass)
- Checksum.text("#{columns.map { |c| item[c] }.join}#{previous.first ? previous.first.footprint : ''}")
+ "#{columns.map { |c| item[c] }.join}#{previous.first ? previous.first.footprint : ''}"
+ end
+
+ # Return an ordered array of the columns used in the footprint computation
+ # @param klass Invoice|InvoiceItem|HistoryValue
+ def self.footprint_columns(klass)
+ klass.columns.map(&:name).delete_if { |c| %w[footprint updated_at].include? c }
+ end
+
+ # Logs a debugging message to help finding why a footprint is invalid
+ # @param klass Invoice|InvoiceItem|HistoryValue
+ # @param item an instance of the provided class
+ def self.debug_footprint(klass, item)
+ columns = FootprintService.footprint_columns(klass)
+ current = FootprintService.footprint_data(klass, item)
+ saved = FootprintDebug.find_by(footprint: item.footprint, klass: klass)
+ puts "Debug footprint for Invoice [ id: #{item.id} ]"
+ puts '-----------------------------------------'
+ puts "columns: [ #{columns.join(', ')} ]"
+ puts "current footprint: #{current}"
+ puts " saved footprint: #{saved&.data}"
+ puts '-----------------------------------------'
end
end
diff --git a/db/migrate/20200721162939_create_footprint_debugs.rb b/db/migrate/20200721162939_create_footprint_debugs.rb
new file mode 100644
index 000000000..7cfdf5617
--- /dev/null
+++ b/db/migrate/20200721162939_create_footprint_debugs.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+# This table saves the original data used to create footprints, this allows
+# to debug invalid footprints
+class CreateFootprintDebugs < ActiveRecord::Migration[5.2]
+ def change
+ create_table :footprint_debugs do |t|
+ t.string :footprint
+ t.string :data
+ t.string :klass
+
+ t.timestamps
+ end
+ end
+end
diff --git a/db/structure.sql b/db/structure.sql
index eb2a7d80a..6ca27d22d 100644
--- a/db/structure.sql
+++ b/db/structure.sql
@@ -763,6 +763,39 @@ CREATE SEQUENCE public.exports_id_seq
ALTER SEQUENCE public.exports_id_seq OWNED BY public.exports.id;
+--
+-- Name: footprint_debugs; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.footprint_debugs (
+ id bigint NOT NULL,
+ footprint character varying,
+ data character varying,
+ klass character varying,
+ created_at timestamp without time zone NOT NULL,
+ updated_at timestamp without time zone NOT NULL
+);
+
+
+--
+-- Name: footprint_debugs_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+CREATE SEQUENCE public.footprint_debugs_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1;
+
+
+--
+-- Name: footprint_debugs_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
+--
+
+ALTER SEQUENCE public.footprint_debugs_id_seq OWNED BY public.footprint_debugs.id;
+
+
--
-- Name: friendly_id_slugs; Type: TABLE; Schema: public; Owner: -
--
@@ -3020,6 +3053,13 @@ ALTER TABLE ONLY public.events_event_themes ALTER COLUMN id SET DEFAULT nextval(
ALTER TABLE ONLY public.exports ALTER COLUMN id SET DEFAULT nextval('public.exports_id_seq'::regclass);
+--
+-- Name: footprint_debugs id; Type: DEFAULT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.footprint_debugs ALTER COLUMN id SET DEFAULT nextval('public.footprint_debugs_id_seq'::regclass);
+
+
--
-- Name: friendly_id_slugs id; Type: DEFAULT; Schema: public; Owner: -
--
@@ -3607,6 +3647,14 @@ ALTER TABLE ONLY public.exports
ADD CONSTRAINT exports_pkey PRIMARY KEY (id);
+--
+-- Name: footprint_debugs footprint_debugs_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.footprint_debugs
+ ADD CONSTRAINT footprint_debugs_pkey PRIMARY KEY (id);
+
+
--
-- Name: friendly_id_slugs friendly_id_slugs_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
@@ -5598,6 +5646,7 @@ INSERT INTO "schema_migrations" (version) VALUES
('20200622135401'),
('20200623134900'),
('20200623141305'),
-('20200629123011');
+('20200629123011'),
+('20200721162939');
diff --git a/lib/tasks/db.rake b/lib/tasks/db.rake
new file mode 100644
index 000000000..f2484654f
--- /dev/null
+++ b/lib/tasks/db.rake
@@ -0,0 +1,29 @@
+# frozen_string_literal: false
+
+namespace :db do
+ desc 'Convert development DB to Rails test fixtures'
+ task to_fixtures: :environment do
+ TABLES_TO_SKIP = %w[ar_internal_metadata delayed_jobs schema_info schema_migrations].freeze
+
+ begin
+ ActiveRecord::Base.establish_connection
+ ActiveRecord::Base.connection.tables.each do |table_name|
+ next if TABLES_TO_SKIP.include?(table_name)
+
+ conter = '000'
+ file_path = "#{Rails.root}/test/fixtures/#{table_name}.yml"
+ File.open(file_path, 'w') do |file|
+ rows = ActiveRecord::Base.connection.select_all("SELECT * FROM #{table_name}")
+ data = rows.each_with_object({}) do |record, hash|
+ suffix = record['id'].blank? ? conter.succ! : record['id']
+ hash["#{table_name.singularize}_#{suffix}"] = record
+ end
+ puts "Writing table '#{table_name}' to '#{file_path}'"
+ file.write(data.to_yaml)
+ end
+ end
+ ensure
+ ActiveRecord::Base.connection&.close
+ end
+ end
+end
diff --git a/lib/tasks/fablab/maintenance.rake b/lib/tasks/fablab/maintenance.rake
index af2d7eb72..8192de46e 100644
--- a/lib/tasks/fablab/maintenance.rake
+++ b/lib/tasks/fablab/maintenance.rake
@@ -91,5 +91,18 @@ namespace :fablab do
Sidekiq::Queue.new('default').clear
Sidekiq::DeadSet.new.clear
end
+
+ desc 'save the footprint original data'
+ task save_footprint_data: :environment do
+ [Invoice, InvoiceItem, HistoryValue].each do |klass|
+ klass.all.each do |item|
+ FootprintDebug.create!(
+ footprint: item.footprint,
+ data: FootprintService.footprint_data(klass, item, klass == 'HistoryValue' ? 'created_at' : 'id'),
+ klass: klass
+ )
+ end
+ end
+ end
end
end
diff --git a/test/fixtures/footprint_debugs.yml b/test/fixtures/footprint_debugs.yml
new file mode 100644
index 000000000..305b2379a
--- /dev/null
+++ b/test/fixtures/footprint_debugs.yml
@@ -0,0 +1,645 @@
+---
+footprint_debug_7:
+ id: 7
+ footprint: 8291cfc4cc4cf57eb63cb079ac952cd0ad8ca7b3e7f663f04d4c18a3c5c4ca68
+ data: 1Subscription1in_17wpf92sOmf47Nz9itj6vmJw100002012-03-12 12:03:31 +01001604001/VLtest333
+ klass: Invoice
+ created_at: '2020-07-21 17:15:14.138138'
+ updated_at: '2020-07-21 17:15:14.138138'
+footprint_debug_8:
+ id: 8
+ footprint: 1d8d62a39bd6e230043e60ffd0429c14414f5703a60b9cba71a81f6a9dcaf894
+ data: 2Subscription220002012-03-12 14:40:22 +01001604002test4148291cfc4cc4cf57eb63cb079ac952cd0ad8ca7b3e7f663f04d4c18a3c5c4ca68
+ klass: Invoice
+ created_at: '2020-07-21 17:15:14.144617'
+ updated_at: '2020-07-21 17:15:14.144617'
+footprint_debug_9:
+ id: 9
+ footprint: 8fb2c1105d24ac19096d5673b02ddea11c0c8578d818fad320c85c6005dda69b
+ data: 3Subscription330002015-06-10 13:20:01 +02001203001test7171d8d62a39bd6e230043e60ffd0429c14414f5703a60b9cba71a81f6a9dcaf894
+ klass: Invoice
+ created_at: '2020-07-21 17:15:14.149373'
+ updated_at: '2020-07-21 17:15:14.149373'
+footprint_debug_10:
+ id: 10
+ footprint: 4ed7cf862affb0b6e0be53cfd97da3373b51c555ef2f06c7fe2b354940f10b53
+ data: 4Reservation102016-04-05 10:35:52 +02001203002test7178fb2c1105d24ac19096d5673b02ddea11c0c8578d818fad320c85c6005dda69b
+ klass: Invoice
+ created_at: '2020-07-21 17:15:14.154327'
+ updated_at: '2020-07-21 17:15:14.154327'
+footprint_debug_11:
+ id: 11
+ footprint: 9aead7f5eb9411778d072279a058be0fe2da76eb12f6a22100cbec1f2b3f6e9d
+ data: 5Reservation215002016-04-05 10:36:46 +02001506031test3134ed7cf862affb0b6e0be53cfd97da3373b51c555ef2f06c7fe2b354940f10b53
+ klass: Invoice
+ created_at: '2020-07-21 17:15:14.159216'
+ updated_at: '2020-07-21 17:15:14.159216'
+footprint_debug_12:
+ id: 12
+ footprint: 931e8b6f5579f2e7eda625bdf5962da89892957abb25480603ae985e6e108059
+ data: 11sub_8DGB4ErIc2asOv100002012-03-12 12:03:31 +0100Sleede - standard, association
+ - month1
+ klass: InvoiceItem
+ created_at: '2020-07-21 17:15:14.185651'
+ updated_at: '2020-07-21 17:15:14.185651'
+footprint_debug_13:
+ id: 13
+ footprint: abbf95b8d506ed6207343edbf8ee63893cd02508de6d25347999d7dbc755c6fb
+ data: 2220002012-03-12 14:40:22 +0100Mensuel tarif réduit - étudiant, - de 25 ans,
+ enseignant, demandeur d'emploi - month2931e8b6f5579f2e7eda625bdf5962da89892957abb25480603ae985e6e108059
+ klass: InvoiceItem
+ created_at: '2020-07-21 17:15:14.192656'
+ updated_at: '2020-07-21 17:15:14.192656'
+footprint_debug_14:
+ id: 14
+ footprint: caf3b7e54e0191d8f262e01acc4e66f29f9d27abe52e595fb3b71724a32cfe90
+ data: 3330002015-06-10 13:20:01 +0200Mensuel - standard, association - month3abbf95b8d506ed6207343edbf8ee63893cd02508de6d25347999d7dbc755c6fb
+ klass: InvoiceItem
+ created_at: '2020-07-21 17:15:14.197393'
+ updated_at: '2020-07-21 17:15:14.197393'
+footprint_debug_15:
+ id: 15
+ footprint: 71d095aa4d49ebac39f7efdc5c9de2354ea8efeec7c35a6708143fb66dd66b0b
+ data: 4402016-04-05 10:35:52 +0200Formation Laser / Vinyle April 11, 2012 08:00
+ - 12:00 PMcaf3b7e54e0191d8f262e01acc4e66f29f9d27abe52e595fb3b71724a32cfe90
+ klass: InvoiceItem
+ created_at: '2020-07-21 17:15:14.202635'
+ updated_at: '2020-07-21 17:15:14.202635'
+footprint_debug_16:
+ id: 16
+ footprint: d4d856ee04f27b5e35f43056b46f139df73ffdfaad1716636f569164c52c5e5b
+ data: 5515002016-04-05 10:36:46 +0200Imprimante 3D June 15, 2015 12:00 - 01:00 PM71d095aa4d49ebac39f7efdc5c9de2354ea8efeec7c35a6708143fb66dd66b0b
+ klass: InvoiceItem
+ created_at: '2020-07-21 17:15:14.207404'
+ updated_at: '2020-07-21 17:15:14.207404'
+footprint_debug_17:
+ id: 17
+ footprint: 75245583332fa0add0a16e28985d7d59ed0e799e76f1b16be30f5576044fba7f
+ data: '11
Fab-manager est
+ outil de gestion des atelier de fabrication numérique, permettant de réserver
+ des machines de découpe, des imprimantes 3D, etc. tout en gérant simplement les
+ aspect financier, comptable et statistiques de votre espace.
Fab-manager est un projet libre: ouvert à tous, il offre la
+ possibilité de contribuer soi-même au code, de télécharger le logiciel, de l''étudier
+ et de le redistribuer. Vous n''êtes pas technicien ? Vous pouvez quand même participer
+ à traduire Fab-manager dans votre
+ langue.
Fab-manager favorise le partage de connaissances grâce au réseau
+ OpenLab: les projets que vous documentez sont partagés avec l''ensemble du réseau
+ des Fab-managers.
2018-12-17 12:23:01 +01001'
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.227681'
+ updated_at: '2020-07-21 17:15:14.227681'
+footprint_debug_18:
+ id: 18
+ footprint: a9a343e802ff6cd39abcd56bc6079e3ff82a6d0b566ead706eb80de4f0d03f1b
+ data: 22Imaginer, Fabriquer,
Partager au Fab Lab
de La Casemate2018-12-17
+ 12:23:01 +0100175245583332fa0add0a16e28985d7d59ed0e799e76f1b16be30f5576044fba7f
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.231746'
+ updated_at: '2020-07-21 17:15:14.231746'
+footprint_debug_19:
+ id: 19
+ footprint: 99092a004db5bc28acad559aaec377ed2dea977d64a9cf14cf0ad8114a5d52d7
+ data: 33- Contact commercial :
- contact@fab-manager.com
- Support
+ technique :
- Forum
- Feedback
- GitHub
+ Visitez le site de Fab-manager
2018-12-17
+ 12:23:01 +01001a9a343e802ff6cd39abcd56bc6079e3ff82a6d0b566ead706eb80de4f0d03f1b
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.236192'
+ updated_at: '2020-07-21 17:15:14.236192'
+footprint_debug_20:
+ id: 20
+ footprint: c9c1ae97e6f6cf1363f5d942419534c8f729752fa6c0d389b441caad9a7dbbc3
+ data: 44fab_manager2018-12-17 12:23:01 +0100199092a004db5bc28acad559aaec377ed2dea977d64a9cf14cf0ad8114a5d52d7
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.241427'
+ updated_at: '2020-07-21 17:15:14.241427'
+footprint_debug_21:
+ id: 21
+ footprint: 91e2d05f9ade92056bbfb95e33944219f8100e6b2714ef1c26aa72bf24250db2
+ data: 55Tout achat d'heure machine est définitif. Aucune annulation ne pourra être
+ effectuée, néanmoins au plus tard 24h avant le créneau fixé, vous pouvez en modifier
+ la date et l'horaire à votre convenance et en fonction du calendrier proposé.
+ Passé ce délais, aucun changement ne pourra être effectué.2018-12-17 12:23:01
+ +01001c9c1ae97e6f6cf1363f5d942419534c8f729752fa6c0d389b441caad9a7dbbc3
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.252785'
+ updated_at: '2020-07-21 17:15:14.252785'
+footprint_debug_22:
+ id: 22
+ footprint: 34af06c6a915d23c1c208de9c23f123f8de079dd8b64cad58f3e2c31a6955d0b
+ data: 66Toute réservation de formation est définitive. Aucune annulation ne pourra
+ être effectuée, néanmoins au plus tard 24h avant le créneau fixé, vous pouvez
+ en modifier la date et l'horaire à votre convenance et en fonction du calendrier
+ proposé. Passé ce délais, aucun changement ne pourra être effectué.2018-12-17
+ 12:23:01 +0100191e2d05f9ade92056bbfb95e33944219f8100e6b2714ef1c26aa72bf24250db2
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.258307'
+ updated_at: '2020-07-21 17:15:14.258307'
+footprint_debug_23:
+ id: 23
+ footprint: 69d6681ae22d81339f62b5fce96f43f01459e319de318763202d744c826657c3
+ data: '77Règle sur la date de début des abonnements
- Si vous êtes un nouvel utilisateur
+ - i.e aucune formation d''enregistrée sur le site - votre abonnement débutera
+ à la date de réservation de votre première formation.
- Si vous avez déjà une formation
+ ou plus de validée, votre abonnement débutera à la date de votre achat d''abonnement.
+
Merci de bien prendre ses informations en compte, et merci de votre compréhension.
+ L''équipe du Fab Lab.
2018-12-17 12:23:01 +0100134af06c6a915d23c1c208de9c23f123f8de079dd8b64cad58f3e2c31a6955d0b'
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.263926'
+ updated_at: '2020-07-21 17:15:14.263926'
+footprint_debug_24:
+ id: 24
+ footprint: eddfaaafe4dde25a3d3e0c2edbcfb72c44c39ad5022557241b32264db9518dca
+ data: 99iVBORw0KGgoAAAANSUhEUgAAAG0AAABZCAYAAAA0E6rtAAAACXBIWXMAAAsTAAALEwEAmpwYAAA57WlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxMzggNzkuMTU5ODI0LCAyMDE2LzA5LzE0LTAxOjA5OjAxICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNyAoV2luZG93cyk8L3htcDpDcmVhdG9yVG9vbD4KICAgICAgICAgPHhtcDpDcmVhdGVEYXRlPjIwMTctMDEtMDNUMTE6MTg6MTgrMDE6MDA8L3htcDpDcmVhdGVEYXRlPgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxNy0wNi0wNlQxNTo1NjoxMiswMjowMDwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXA6TWV0YWRhdGFEYXRlPjIwMTctMDYtMDZUMTU6NTY6MTIrMDI6MDA8L3htcDpNZXRhZGF0YURhdGU+CiAgICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2UvcG5nPC9kYzpmb3JtYXQ+CiAgICAgICAgIDxwaG90b3Nob3A6Q29sb3JNb2RlPjM8L3Bob3Rvc2hvcDpDb2xvck1vZGU+CiAgICAgICAgIDx4bXBNTTpJbnN0YW5jZUlEPnhtcC5paWQ6MmYwMTE5MTMtODI5NS0zOTQ0LWJmZjYtMTY5ZTNhZTQ5OThlPC94bXBNTTpJbnN0YW5jZUlEPgogICAgICAgICA8eG1wTU06RG9jdW1lbnRJRD5hZG9iZTpkb2NpZDpwaG90b3Nob3A6ZGU3ZGE1MmYtNGFiZi0xMWU3LTljODAtYWJjY2ZlM2JkNzdmPC94bXBNTTpEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06T3JpZ2luYWxEb2N1bWVudElEPnhtcC5kaWQ6YTE5NTAzOTAtOGQwOS0zMzQ3LWFkNGQtMzkyNDQ2YjRiNWJiPC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpIaXN0b3J5PgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+Y3JlYXRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOmExOTUwMzkwLThkMDktMzM0Ny1hZDRkLTM5MjQ0NmI0YjViYjwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNy0wMS0wM1QxMToxODoxOCswMTowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+c2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDoyZjAxMTkxMy04Mjk1LTM5NDQtYmZmNi0xNjllM2FlNDk5OGU8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTctMDYtMDZUMTU6NTY6MTIrMDI6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE3IChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICAgICA8dGlmZjpYUmVzb2x1dGlvbj43MjAwMDAvMTAwMDA8L3RpZmY6WFJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOllSZXNvbHV0aW9uPjcyMDAwMC8xMDAwMDwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6UmVzb2x1dGlvblVuaXQ+MjwvdGlmZjpSZXNvbHV0aW9uVW5pdD4KICAgICAgICAgPGV4aWY6Q29sb3JTcGFjZT42NTUzNTwvZXhpZjpDb2xvclNwYWNlPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+MTA5PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjg5PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz7jSvdMAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAACL8SURBVHja7J15nB5Ftfe/VdXLsy8zk5lM9hASsrDKImgiuyCL7ILgq4KKu9flivuCiKjoFeWqCCoKQpTLIsiOrBqI5Bo2IQsJ2ZPJZPZn7ae7q94/+kkyQzIhExKSwVufT08mz3RX91Onzjm/86tTp4Vh+9oKYCFQA/YlThaHB+jlBmxuIcdyesmQQVAixELjYOPRSo25KDoJMdQ4mjTLKNFInBUENOGzEoc4vphEYnwVe4KNPdmgJoMeKxAjDSYnEAnABgSgo0cxZQNdINYJ9CqfcJmAxQaWpulZW0GZEI9RJHgcRYDmEKCIxQbKOLhoYF9COrDoJsQGRpNhPj20U+Xs+g0Ha712jKXpRhwdsrObhcAIQ61apeZ7xJXiQa+IxRvQNo5yWP/dABpDI8nRAn/mQcTfHmJN82GqTTjGECLw61fp+tn9ezObfhcIQAIKGwlIA2JlmRELfbz5LvajFeSTEJ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-12-17
+ 12:23:01 +0100169d6681ae22d81339f62b5fce96f43f01459e319de318763202d744c826657c3
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.270769'
+ updated_at: '2020-07-21 17:15:14.270769'
+footprint_debug_25:
+ id: 25
+ footprint: ed23a2eb1903befc977621bc3c3b19aad831fe550ebaa99e9299238b3d93c275
+ data: 1010YYMMmmmX[/VL]R[/A]2018-12-17 12:23:01 +01001eddfaaafe4dde25a3d3e0c2edbcfb72c44c39ad5022557241b32264db9518dca
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.281378'
+ updated_at: '2020-07-21 17:15:14.281378'
+footprint_debug_26:
+ id: 26
+ footprint: e5ec7e2f724da59e251202a68b4bab101979b8328c9ad195e3944f42a8a2bff1
+ data: 1111true2018-12-17 12:23:01 +01001ed23a2eb1903befc977621bc3c3b19aad831fe550ebaa99e9299238b3d93c275
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.286715'
+ updated_at: '2020-07-21 17:15:14.286715'
+footprint_debug_27:
+ id: 27
+ footprint: 1291396a56454be64857a103fdcc9a0bcbf98ae9f5c76da5634fc209c900bd24
+ data: 1212INMEDFABLAB2018-12-17 12:23:01 +01001e5ec7e2f724da59e251202a68b4bab101979b8328c9ad195e3944f42a8a2bff1
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.291741'
+ updated_at: '2020-07-21 17:15:14.291741'
+footprint_debug_28:
+ id: 28
+ footprint: 871452c7d3d9102e3af11992402549f06a9c32bf3892589ec034f651a9924f21
+ data: 1313nnnnnn-MM-YY2018-12-17 12:23:01 +010011291396a56454be64857a103fdcc9a0bcbf98ae9f5c76da5634fc209c900bd24
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.296254'
+ updated_at: '2020-07-21 17:15:14.296254'
+footprint_debug_29:
+ id: 29
+ footprint: 5465cf9395ca87683e977f52754e2eddf1535383b1f7a345fe85d5f80d99731f
+ data: 1414false2018-12-17 12:23:01 +01001871452c7d3d9102e3af11992402549f06a9c32bf3892589ec034f651a9924f21
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.300673'
+ updated_at: '2020-07-21 17:15:14.300673'
+footprint_debug_30:
+ id: 30
+ footprint: 8d83e8e047857f7add3a6bf6dae8ed477df1792c049b2686ef034d5c5f982950
+ data: 151520.02018-12-17 12:23:01 +010015465cf9395ca87683e977f52754e2eddf1535383b1f7a345fe85d5f80d99731f
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.304827'
+ updated_at: '2020-07-21 17:15:14.304827'
+footprint_debug_31:
+ id: 31
+ footprint: 7fe2e034676632260cdb75f6b69c504430191599f1fe0cc9469d7d9a00362e3e
+ data: 1616Notre association n'est pas assujettie à la TVA2018-12-17 12:23:01 +010018d83e8e047857f7add3a6bf6dae8ed477df1792c049b2686ef034d5c5f982950
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.309387'
+ updated_at: '2020-07-21 17:15:14.309387'
+footprint_debug_32:
+ id: 32
+ footprint: 7e6ffbdf7e2421f14b975d9c3a91b7dd4f495e2350671887a651fcde798d2c86
+ data: '1717Fab-manager
41 rue du Colonel Moutarde, 21000 DIJON France
Tél.:
+ +33 1 23 45 67 98
Fax. : +33 1 23 45 67 98
SIRET : 237 082 474 00006
+ - APE 913 E2018-12-17 12:23:01 +010017fe2e034676632260cdb75f6b69c504430191599f1fe0cc9469d7d9a00362e3e'
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.314012'
+ updated_at: '2020-07-21 17:15:14.314012'
+footprint_debug_33:
+ id: 33
+ footprint: 5d3504df707a090b0cd720085dbf5768804c1fdb79666c137f1dd30727ddf3a8
+ data: 18181970-01-01 08:00:002018-12-17 12:23:01 +010017e6ffbdf7e2421f14b975d9c3a91b7dd4f495e2350671887a651fcde798d2c86
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.318306'
+ updated_at: '2020-07-21 17:15:14.318306'
+footprint_debug_34:
+ id: 34
+ footprint: b6b8b1039a886030e33fa6b4e2a36b00a1b7d39768a4717039a74da126440f16
+ data: 19191970-01-01 23:59:592018-12-17 12:23:01 +010015d3504df707a090b0cd720085dbf5768804c1fdb79666c137f1dd30727ddf3a8
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.322734'
+ updated_at: '2020-07-21 17:15:14.322734'
+footprint_debug_35:
+ id: 35
+ footprint: 84655b10bcdb2328008324d2a84eda4c82e997efdd2548c142e749671bff813b
+ data: 2020true2018-12-17 12:23:01 +01001b6b8b1039a886030e33fa6b4e2a36b00a1b7d39768a4717039a74da126440f16
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.32734'
+ updated_at: '2020-07-21 17:15:14.32734'
+footprint_debug_36:
+ id: 36
+ footprint: 56911ae1d9620890c8cd9a437d897e70dab8dbfca29ac9bda47d46ea88fcf041
+ data: 2121242018-12-17 12:23:01 +0100184655b10bcdb2328008324d2a84eda4c82e997efdd2548c142e749671bff813b
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.331955'
+ updated_at: '2020-07-21 17:15:14.331955'
+footprint_debug_37:
+ id: 37
+ footprint: f1d81764e08fc76a98e05e20a9f8133d326618f0603b62a34ed718e58c42b17f
+ data: 2222false2018-12-17 12:23:01 +0100156911ae1d9620890c8cd9a437d897e70dab8dbfca29ac9bda47d46ea88fcf041
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.336879'
+ updated_at: '2020-07-21 17:15:14.336879'
+footprint_debug_38:
+ id: 38
+ footprint: aaa4c192b537b06539f93f9121db2a741fc2afd33684a1442f41b67c3e79909c
+ data: 2323242018-12-17 12:23:01 +01001f1d81764e08fc76a98e05e20a9f8133d326618f0603b62a34ed718e58c42b17f
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.341659'
+ updated_at: '2020-07-21 17:15:14.341659'
+footprint_debug_39:
+ id: 39
+ footprint: 90b7f212f67fb46e19c9aed26b5a9d013dc5435c1204acd573415e19f3a83a69
+ data: 2424#cb11172018-12-17 12:23:01 +01001aaa4c192b537b06539f93f9121db2a741fc2afd33684a1442f41b67c3e79909c
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.346427'
+ updated_at: '2020-07-21 17:15:14.346427'
+footprint_debug_40:
+ id: 40
+ footprint: c04293a2f238379d56d2aedf9416bc4c30a01d4e0f270650ae60751fda3581b7
+ data: 2525#ffdd002018-12-17 12:23:01 +0100190b7f212f67fb46e19c9aed26b5a9d013dc5435c1204acd573415e19f3a83a69
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.351153'
+ updated_at: '2020-07-21 17:15:14.351153'
+footprint_debug_41:
+ id: 41
+ footprint: 4413b595bfbb0ec9ac2637997b1731eb06e516dea606e6a2f1acc4b9bf323f98
+ data: 2626Avant de réserver une formation, nous vous conseillons de consulter nos
+ offres d'abonnement qui proposent des conditions avantageuses sur le prix des
+ formations et les créneaux machines.2018-12-17 12:23:01 +01001c04293a2f238379d56d2aedf9416bc4c30a01d4e0f270650ae60751fda3581b7
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.355548'
+ updated_at: '2020-07-21 17:15:14.355548'
+footprint_debug_42:
+ id: 42
+ footprint: 15c5f76e7bad2d520d9a8bb278660fd15e6238c27166bfff9aa155c7c4124c3f
+ data: 2727Fab Lab de La Casemate2018-12-17 12:23:01 +010014413b595bfbb0ec9ac2637997b1731eb06e516dea606e6a2f1acc4b9bf323f98
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.359742'
+ updated_at: '2020-07-21 17:15:14.359742'
+footprint_debug_43:
+ id: 43
+ footprint: 3462a9ee7393704f8d643726e7fa1ed4842e52955638ee3867e55da64df75542
+ data: 2828male2018-12-17 12:23:01 +0100115c5f76e7bad2d520d9a8bb278660fd15e6238c27166bfff9aa155c7c4124c3f
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.363983'
+ updated_at: '2020-07-21 17:15:14.363983'
+footprint_debug_44:
+ id: 44
+ footprint: '0995b733e10693beffef7898aa6b39d7cb8c41fe7c855a67a55655bb5cfa9ef3'
+ data: 29292018-12-17 12:23:01 +010013462a9ee7393704f8d643726e7fa1ed4842e52955638ee3867e55da64df75542
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.368192'
+ updated_at: '2020-07-21 17:15:14.368192'
+footprint_debug_45:
+ id: 45
+ footprint: 868d09a6f3b6a461b2476b61f3e6ee0ae696332485d2c1f41fbfe9d142e2f1c9
+ data: 303032018-12-17 12:23:01 +010010995b733e10693beffef7898aa6b39d7cb8c41fe7c855a67a55655bb5cfa9ef3
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.372768'
+ updated_at: '2020-07-21 17:15:14.372768'
+footprint_debug_46:
+ id: 46
+ footprint: 99658592bc30b15633d1cad934bcfdf37f97700e5283856070855f78a6b926ef
+ data: 313112018-12-17 12:23:01 +01001868d09a6f3b6a461b2476b61f3e6ee0ae696332485d2c1f41fbfe9d142e2f1c9
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.377733'
+ updated_at: '2020-07-21 17:15:14.377733'
+footprint_debug_47:
+ id: 47
+ footprint: 1f3fe91aa7ef13d9f014a92375acd0957586af263d9be009845670c732dc8f64
+ data: 3232f2018-12-17 12:23:01 +0100199658592bc30b15633d1cad934bcfdf37f97700e5283856070855f78a6b926ef
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.38263'
+ updated_at: '2020-07-21 17:15:14.38263'
+footprint_debug_48:
+ id: 48
+ footprint: cb3e208a107ee13f4ef7ebb88cd12212acf442ef9d96f1623012c1827e891bac
+ data: 3333default2018-12-17 12:23:01 +010011f3fe91aa7ef13d9f014a92375acd0957586af263d9be009845670c732dc8f64
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.387081'
+ updated_at: '2020-07-21 17:15:14.387081'
+footprint_debug_49:
+ id: 49
+ footprint: 1d5b3e6fd1c8104a80a45b33bff31fdde6b02f95592263a7608b7ff3d5618f6d
+ data: 3434A propos de Fab-manager2018-12-31 11:22:25 +01001cb3e208a107ee13f4ef7ebb88cd12212acf442ef9d96f1623012c1827e891bac
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.391126'
+ updated_at: '2020-07-21 17:15:14.391126'
+footprint_debug_50:
+ id: 50
+ footprint: 5d0c759db1c4aad4bb9ad6f60eb7f7fb2f98f47edff7e69a03d0bf72aa2105f1
+ data: 3535* Tarif réduit si vous avez moins de 25 ans, que vous êtes étudiant ou
+ demandeur d'emploi.2018-12-31 11:22:25 +010011d5b3e6fd1c8104a80a45b33bff31fdde6b02f95592263a7608b7ff3d5618f6d
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.395007'
+ updated_at: '2020-07-21 17:15:14.395007'
+footprint_debug_51:
+ id: 51
+ footprint: ad0f2b743469450d84f688642b723a460dc42dbea43d1addd42fb07b4368bb34
+ data: 3636t2018-12-31 11:22:25 +010015d0c759db1c4aad4bb9ad6f60eb7f7fb2f98f47edff7e69a03d0bf72aa2105f1
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.398953'
+ updated_at: '2020-07-21 17:15:14.398953'
+footprint_debug_52:
+ id: 52
+ footprint: 804902f2126fab8cce46e299aba05c0797be45ae3581091e82b9ca2f531338bf
+ data: 3737242018-12-31 11:22:25 +01001ad0f2b743469450d84f688642b723a460dc42dbea43d1addd42fb07b4368bb34
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.402822'
+ updated_at: '2020-07-21 17:15:14.402822'
+footprint_debug_53:
+ id: 53
+ footprint: '085164a7288540c9beb0a6243856016fc36aae54bfb7d5d41af354650277d1ea'
+ data: '3838La présente politique de confidentialité définit et vous informe de
+ la manière dont _________ utilise et protège les informations que vous nous transmettez,
+ le cas échéant, lorsque vous utilisez le présent site accessible à partir de l’URL
+ suivante : _________ (ci-après le « Site »).
Veuillez noter que cette politique
+ de confidentialité est susceptible d’être modifiée ou complétée à tout moment
+ par _________, notamment en vue de se conformer à toute évolution législative,
+ réglementaire, jurisprudentielle ou technologique. Dans un tel cas, la date de
+ sa mise à jour sera clairement identifiée en tête de la présente politique et
+ l''Utilisateur sera informé par courriel. Ces modifications engagent l’Utilisateur
+ dès leur mise en ligne. Il convient par conséquent que l’Utilisateur consulte
+ régulièrement la présente politique de confidentialité et d’utilisation des cookies
+ afin de prendre connaissance de ses éventuelles modifications.
2018-12-31 11:22:25
+ +01001804902f2126fab8cce46e299aba05c0797be45ae3581091e82b9ca2f531338bf'
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.407478'
+ updated_at: '2020-07-21 17:15:14.407478'
+footprint_debug_54:
+ id: 54
+ footprint:
+ data: 39395302019-09-20 13:02:32 +02001085164a7288540c9beb0a6243856016fc36aae54bfb7d5d41af354650277d1ea
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.41201'
+ updated_at: '2020-07-21 17:15:14.41201'
+footprint_debug_55:
+ id: 55
+ footprint:
+ data: 404058012019-09-20 13:02:32 +02001
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.416333'
+ updated_at: '2020-07-21 17:15:14.416333'
+footprint_debug_56:
+ id: 56
+ footprint:
+ data: 4141Client card2019-09-20 13:02:32 +02001
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.428825'
+ updated_at: '2020-07-21 17:15:14.428825'
+footprint_debug_57:
+ id: 57
+ footprint:
+ data: 424258022019-09-20 13:02:32 +02001
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.433717'
+ updated_at: '2020-07-21 17:15:14.433717'
+footprint_debug_58:
+ id: 58
+ footprint:
+ data: 4343Client wallet2019-09-20 13:02:32 +02001
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.438971'
+ updated_at: '2020-07-21 17:15:14.438971'
+footprint_debug_59:
+ id: 59
+ footprint:
+ data: 444458032019-09-20 13:02:32 +02001
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.443855'
+ updated_at: '2020-07-21 17:15:14.443855'
+footprint_debug_60:
+ id: 60
+ footprint:
+ data: 4545Client other2019-09-20 13:02:32 +02001
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.448199'
+ updated_at: '2020-07-21 17:15:14.448199'
+footprint_debug_61:
+ id: 61
+ footprint:
+ data: 464640912019-09-20 13:02:32 +02001
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.452333'
+ updated_at: '2020-07-21 17:15:14.452333'
+footprint_debug_62:
+ id: 62
+ footprint:
+ data: 4747Wallet credit2019-09-20 13:02:32 +02001
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.456568'
+ updated_at: '2020-07-21 17:15:14.456568'
+footprint_debug_63:
+ id: 63
+ footprint:
+ data: 48484452019-09-20 13:02:32 +02001
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.460895'
+ updated_at: '2020-07-21 17:15:14.460895'
+footprint_debug_64:
+ id: 64
+ footprint:
+ data: 4949VAT2019-09-20 13:02:32 +02001
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.465768'
+ updated_at: '2020-07-21 17:15:14.465768'
+footprint_debug_65:
+ id: 65
+ footprint:
+ data: 505070612019-09-20 13:02:32 +02001
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.470277'
+ updated_at: '2020-07-21 17:15:14.470277'
+footprint_debug_66:
+ id: 66
+ footprint:
+ data: 5151Subscription2019-09-20 13:02:32 +02001
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.474733'
+ updated_at: '2020-07-21 17:15:14.474733'
+footprint_debug_67:
+ id: 67
+ footprint:
+ data: 525270622019-09-20 13:02:32 +02001
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.479249'
+ updated_at: '2020-07-21 17:15:14.479249'
+footprint_debug_68:
+ id: 68
+ footprint:
+ data: 5353Machine reservation2019-09-20 13:02:32 +02001
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.483978'
+ updated_at: '2020-07-21 17:15:14.483978'
+footprint_debug_69:
+ id: 69
+ footprint:
+ data: 545470632019-09-20 13:02:32 +02001
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.488467'
+ updated_at: '2020-07-21 17:15:14.488467'
+footprint_debug_70:
+ id: 70
+ footprint:
+ data: 5555Training reservation2019-09-20 13:02:32 +02001
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.492972'
+ updated_at: '2020-07-21 17:15:14.492972'
+footprint_debug_71:
+ id: 71
+ footprint:
+ data: 565670642019-09-20 13:02:32 +02001
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.497436'
+ updated_at: '2020-07-21 17:15:14.497436'
+footprint_debug_72:
+ id: 72
+ footprint:
+ data: 5757Event reservation2019-09-20 13:02:32 +02001
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.501746'
+ updated_at: '2020-07-21 17:15:14.501746'
+footprint_debug_73:
+ id: 73
+ footprint:
+ data: 585870652019-09-20 13:02:32 +02001
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.506227'
+ updated_at: '2020-07-21 17:15:14.506227'
+footprint_debug_74:
+ id: 74
+ footprint:
+ data: 5959Space reservation2019-09-20 13:02:32 +02001
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.510588'
+ updated_at: '2020-07-21 17:15:14.510588'
+footprint_debug_75:
+ id: 75
+ footprint:
+ data: |-
+ 60602020-03-25 10:24:09 +01001
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.514679'
+ updated_at: '2020-07-21 17:15:14.514679'
+footprint_debug_76:
+ id: 76
+ footprint:
+ data: 6161602020-05-22 17:22:08 +02001
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.519091'
+ updated_at: '2020-07-21 17:15:14.519091'
+footprint_debug_77:
+ id: 77
+ footprint:
+ data: 6262true2020-06-01 13:12:21 +02001
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.523373'
+ updated_at: '2020-07-21 17:15:14.523373'
+footprint_debug_78:
+ id: 78
+ footprint:
+ data: 6363true2020-06-01 13:12:21 +02001
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.527996'
+ updated_at: '2020-07-21 17:15:14.527996'
+footprint_debug_79:
+ id: 79
+ footprint:
+ data: 6464once2020-06-01 13:12:21 +02001
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.533115'
+ updated_at: '2020-07-21 17:15:14.533115'
+footprint_debug_80:
+ id: 80
+ footprint:
+ data: 6565noreply@fab-manager.com2020-06-01 13:12:21 +02001
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.538187'
+ updated_at: '2020-07-21 17:15:14.538187'
+footprint_debug_81:
+ id: 81
+ footprint:
+ data: 6666t2020-06-08 19:12:16 +02001
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.542746'
+ updated_at: '2020-07-21 17:15:14.542746'
+footprint_debug_82:
+ id: 82
+ footprint:
+ data: 6767pk_test_aScrMu3y4AocfCN5XLJjGzmQ2020-06-08 19:12:16 +02001
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.547235'
+ updated_at: '2020-07-21 17:15:14.547235'
+footprint_debug_83:
+ id: 83
+ footprint:
+ data: 6868sk_test_mGokO9TGtrVxMOyK4yZiktBE2020-06-08 19:12:16 +02001
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.551532'
+ updated_at: '2020-07-21 17:15:14.551532'
+footprint_debug_84:
+ id: 84
+ footprint:
+ data: 6969usd2020-06-08 19:12:16 +02001
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.555503'
+ updated_at: '2020-07-21 17:15:14.555503'
+footprint_debug_85:
+ id: 85
+ footprint:
+ data: 7070FabManager_invoice2020-06-15 12:04:06 +02001
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.560357'
+ updated_at: '2020-07-21 17:15:14.560357'
+footprint_debug_86:
+ id: 86
+ footprint:
+ data: 7171f2020-06-15 12:04:06 +02001
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.565096'
+ updated_at: '2020-07-21 17:15:14.565096'
+footprint_debug_87:
+ id: 87
+ footprint:
+ data: 7272t2020-06-15 12:04:06 +02001
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.569921'
+ updated_at: '2020-07-21 17:15:14.569921'
+footprint_debug_88:
+ id: 88
+ footprint:
+ data: 7373t2020-06-17 12:48:19 +02001
+ klass: HistoryValue
+ created_at: '2020-07-21 17:15:14.574885'
+ updated_at: '2020-07-21 17:15:14.574885'