From 98e5fab5ca6c21bcd6a7414abc598a4a42016ce7 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Fri, 28 May 2021 17:29:12 +0200 Subject: [PATCH 001/146] Fix search highlighting --- lib/note_item.dart | 9 +++++++-- lib/note_list.dart | 2 +- lib/storage.dart | 2 ++ 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/lib/note_item.dart b/lib/note_item.dart index f4325eb..6b407b1 100644 --- a/lib/note_item.dart +++ b/lib/note_item.dart @@ -66,13 +66,18 @@ class AbstractNoteItem extends StatelessWidget { Widget highlightSectionText( BuildContext context, String text, String highlight, {int maxLines = 9}) { + if (highlight != null) { + highlight = highlight.toLowerCase(); + } + List spans = []; if (highlight == null) { spans.add(TextSpan(text: text)); } else { List sections = text.split("\n"); - int start = text.indexOf(highlight); + + int start = text.toLowerCase().indexOf(highlight); if (start == -1) spans.add(TextSpan(text: text)); @@ -129,7 +134,7 @@ class AbstractNoteItem extends StatelessWidget { String sectionText() { String text = ""; for (Section section in note.sections) { - text += section.content + '\n'; + text += resolveRichContent(section.content) + '\n'; } return text; } diff --git a/lib/note_list.dart b/lib/note_list.dart index 91b2716..312a7a6 100644 --- a/lib/note_list.dart +++ b/lib/note_list.dart @@ -36,7 +36,7 @@ class NoteListState extends State { } List processList(List data, bool even) { - List returns = new List(); + List returns = []; for (int i = 0; i < data.length; i++) { if (even && i % 2 == 0) returns.add(data[i]); diff --git a/lib/storage.dart b/lib/storage.dart index 30c4682..5d7991d 100644 --- a/lib/storage.dart +++ b/lib/storage.dart @@ -1,4 +1,5 @@ import 'package:flutter_flux/flutter_flux.dart'; +import 'package:sound/utils.dart'; import 'local_storage.dart'; import 'file_manager.dart'; import 'model.dart'; @@ -287,6 +288,7 @@ class StaticStorage extends Store { return true; if (note.sections.any((s) => s.content.toLowerCase().contains(search) || + resolveRichContent(s.content).toLowerCase().contains(search) || s.title.toLowerCase().contains(search))) return true; } return false; From 6fb4c0f6b5fd378a952044b1356a7fb7267495dd Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sat, 5 Jun 2021 14:44:42 +0200 Subject: [PATCH 002/146] Add collection models and db tables - add collection menu entry --- lib/collection_editor_store.dart | 112 ++++++ lib/collections.dart | 599 ++++++++++++++++++++++++++++ lib/collections_store.dart | 85 ++++ lib/db.dart | 15 + lib/dialogs/choose_note_dialog.dart | 95 +++++ lib/dialogs/text_import_dialog.dart | 1 - lib/local_storage.dart | 194 +++++++-- lib/menu.dart | 7 +- lib/model.dart | 64 +++ 9 files changed, 1137 insertions(+), 35 deletions(-) create mode 100644 lib/collection_editor_store.dart create mode 100644 lib/collections.dart create mode 100644 lib/collections_store.dart diff --git a/lib/collection_editor_store.dart b/lib/collection_editor_store.dart new file mode 100644 index 0000000..6239ec0 --- /dev/null +++ b/lib/collection_editor_store.dart @@ -0,0 +1,112 @@ +import 'package:flutter/material.dart' show Color; +import 'package:flutter_flux/flutter_flux.dart' show Action, Store, StoreToken; +import '../local_storage.dart'; +import '../file_manager.dart'; +import '../model.dart'; +import 'package:tuple/tuple.dart'; + +class CollectionEditorStore extends Store { + NoteCollection _collection; + NoteCollection get collection => _collection; + + Tuple2 _lastDeletion; + + void setCollection(NoteCollection c) { + _collection = c; + } + + CollectionEditorStore() { + editorSetCollection.listen((c) { + _collection = c; + trigger(); + }); + + removeNoteFromCollection.listen((note) async { + int index = _collection.notes.indexOf(note); + _collection.notes.removeAt(index); + _lastDeletion = Tuple2(index, note); + await LocalStorage().syncCollection(_collection); + + trigger(); + }); + + undoRemoveNoteFromCollection.listen((_) async { + _collection.notes.insert(_lastDeletion.item1, _lastDeletion.item2); + await LocalStorage().syncCollection(_collection); + trigger(); + }); + + moveNoteUp.listen((Note note) async { + int index = _collection.notes.indexOf(note); + + if (index >= 1) { + print("move up with index $index"); + _collection.notes.removeAt(index); + _collection.notes.insert(index - 1, note); + await LocalStorage().syncCollection(_collection); + trigger(); + } + }); + moveNoteDown.listen((Note note) async { + int index = _collection.notes.indexOf(note); + + if (index != (collection.notes.length - 1) && index >= 0) { + print('move down with index: $index'); + _collection.notes.removeAt(index); + _collection.notes.insert(index + 1, note); + await LocalStorage().syncCollection(_collection); + } + trigger(); + }); + + changeCollectionTitle.listen((t) async { + _collection.title = t; + print('chaning title...'); + await LocalStorage().syncCollection(_collection); + trigger(); + }); + + changeCollectionDescription.listen((t) async { + _collection.description = t; + print('chaning description...'); + await LocalStorage().syncCollection(_collection); + trigger(); + }); + + updateCollectionEditorView.listen((_) { + trigger(); + }); + + toggleCollectionStarred.listen((event) async { + _collection.starred = !_collection.starred; + await LocalStorage().syncCollection(_collection); + trigger(); + }); + + addNoteToCollection.listen((Note note) async { + _collection.notes.add(note); + await LocalStorage().syncCollection(_collection); + trigger(); + }); + + setNotesOfCollection.listen((List notes) async { + _collection.notes = notes; + await LocalStorage().syncCollection(_collection); + trigger(); + }); + } +} + +Action editorSetCollection = Action(); +Action removeNoteFromCollection = Action(); +Action> setNotesOfCollection = Action(); +Action changeCollectionDescription = Action(); +Action changeCollectionTitle = Action(); +Action moveNoteDown = Action(); +Action moveNoteUp = Action(); +Action addNoteToCollection = Action(); +Action undoRemoveNoteFromCollection = Action(); +Action toggleCollectionStarred = Action(); +Action updateCollectionEditorView = Action(); + +StoreToken collectionEditorStoreToken = StoreToken(CollectionEditorStore()); diff --git a/lib/collections.dart b/lib/collections.dart new file mode 100644 index 0000000..e6aa835 --- /dev/null +++ b/lib/collections.dart @@ -0,0 +1,599 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_flux/flutter_flux.dart'; +import 'package:sound/collection_editor_store.dart'; +import 'package:sound/db.dart'; +import 'package:sound/dialogs/choose_note_dialog.dart'; +import 'package:sound/local_storage.dart'; +import 'package:sound/model.dart'; +import 'package:sound/collections_store.dart'; +import 'package:sound/utils.dart'; + +class NoteCollectionItemModel { + final NoteCollection collection; + final bool isSelected; + + const NoteCollectionItemModel({this.collection, this.isSelected}); +} + +class NoteCollectionList extends StatelessWidget { + final bool singleView; + final ValueChanged onTap; + final ValueChanged onLongPress; + final List items; + + NoteCollectionList(this.items, this.onTap, this.onLongPress, + {this.singleView = true}); + + List processList( + List data, bool even) { + List returns = []; + + for (int i = 0; i < data.length; i++) { + if (even && i % 2 == 0) returns.add(data[i]); + if (!even && i % 2 != 0) returns.add(data[i]); + } + return returns; + } + + _getItem(double width, int index, {double padding = 8}) { + if (!singleView) { + return Padding( + padding: EdgeInsets.all(padding), + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Flexible( + flex: 1, + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Wrap( + direction: Axis.vertical, + alignment: WrapAlignment.spaceBetween, + crossAxisAlignment: WrapCrossAlignment.start, + children: processList(items, true) + .map((i) => SmallNoteCollectionItem( + i.collection, + i.isSelected, + () => onTap(i.collection), + () => onLongPress(i.collection), + width / 2 - padding, + EdgeInsets.only(left: 0))) + .toList(), + ) + ])), + Flexible( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Wrap( + direction: Axis.vertical, + alignment: WrapAlignment.spaceEvenly, + children: processList(items, false) + .map((i) => SmallNoteCollectionItem( + i.collection, + i.isSelected, + () => onTap(i.collection), + () => onLongPress(i.collection), + width / 2 - padding, + EdgeInsets.only(left: 0))) + .toList(), + ) + ])) + ])); + } else { + var item = items[index]; + + return Padding( + padding: EdgeInsets.only( + left: 0, + right: 0, + top: index == 0 ? padding : 0, + bottom: index == items.length - 1 ? padding : 0), + child: NoteCollectionItem(item.collection, item.isSelected, + () => onTap(item.collection), () => onLongPress(item.collection), + padding: 0)); + } + } + + _body(BuildContext context) { + double width = MediaQuery.of(context).size.width; + int childCount = (singleView) ? items.length : 1; + + return SliverList( + delegate: SliverChildBuilderDelegate((context, index) { + return _getItem(width, index); + }, childCount: childCount)); + } + + @override + Widget build(BuildContext context) { + return _body(context); + } +} + +class NoteCollectionItem extends StatelessWidget { + final NoteCollection collection; + final bool isSelected; + final Function onTap, onLongPress; + final double padding; + + const NoteCollectionItem( + this.collection, this.isSelected, this.onTap, this.onLongPress, + {this.padding = 0, Key key}) + : super(key: key); + + @override + Widget build(BuildContext context) { + return Padding( + padding: EdgeInsets.all(padding), + child: ListTile( + onTap: onTap, + onLongPress: onLongPress, + title: Text(this.collection.title), + trailing: Text(this.collection.notes.length.toString()), + tileColor: isSelected ? getSelectedCardColor(context) : null, + subtitle: this.collection.description == null + ? Container() + : (Text(this.collection.description)), + )); + } +} + +class SmallNoteCollectionItem extends StatelessWidget { + final NoteCollection collection; + final bool isSelected; + final EdgeInsets padding; + final Function onTap, onLongPress; + final double width; + + const SmallNoteCollectionItem(this.collection, this.isSelected, this.onTap, + this.onLongPress, this.width, this.padding, + {Key key}) + : super(key: key); + + bool get empty => ((collection.title == null || + collection.title.trim() == "") && + (collection.description == null || collection.description.trim() == "")); + + @override + Widget build(BuildContext context) { + Widget child = Card( + color: null, + child: Container( + decoration: isSelected ? getSelectedDecoration(context) : null, + child: Padding( + padding: EdgeInsets.all(8.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Padding( + padding: EdgeInsets.only(bottom: 10), + child: Text(collection.title)), + Padding( + child: Text( + collection.notes.length.toString(), + textScaleFactor: 2.0, + ), + padding: EdgeInsets.only(top: 16)) + ])))); + List stackChildren = []; + stackChildren.add(child); + + return GestureDetector( + onTap: onTap, + onLongPress: onLongPress, + child: Container( + width: this.width, + height: (empty) ? 50 : null, + padding: this.padding, + child: Stack(children: stackChildren))); + } +} + +class CollectionEditor extends StatefulWidget { + final NoteCollection collection; + final bool allowEdit; + + const CollectionEditor(this.collection, {this.allowEdit = true, Key key}) + : super(key: key); + + @override + _CollectionEditorState createState() => _CollectionEditorState(); +} + +class _CollectionEditorState extends State + with StoreWatcherMixin { + CollectionEditorStore store; + Map dismissables = {}; + + @override + void initState() { + super.initState(); + store = listenToStore(collectionEditorStoreToken); + store.setCollection(widget.collection); + } + + _edit({initial, title, hint, onChanged, maxlines = 1}) { + return TextFormField( + initialValue: initial, + decoration: InputDecoration( + labelText: title, border: InputBorder.none, hintText: hint), + enabled: widget.allowEdit, + onChanged: (v) => onChanged(v), + maxLines: maxlines); + } + + floatingActionButtonPressed() async { + // add a note to this collection + var notes = await LocalStorage().getNotes(); + showAddNotesDialog( + context: context, + notes: notes, + preselected: store.collection.notes, + onImport: (notes) async { + setNotesOfCollection(notes); + }); + } + + @override + Widget build(BuildContext context) { + var notes = []; + for (var i = 0; i < store.collection.notes.length; i++) { + if (!dismissables.containsKey(store.collection.notes[i])) + dismissables[store.collection.notes[i]] = GlobalKey(); + + bool showMoveUp = (i != 0); + bool showMoveDown = (i != (store.collection.notes.length - 1)); + notes.add(CollecitonNoteListItem( + globalKey: dismissables[store.collection.notes[i]], + note: store.collection.notes[i], + moveDown: showMoveDown, + moveUp: showMoveUp)); + } + + var titleEdit = Padding( + padding: EdgeInsets.only(left: 10, top: 10), + child: Wrap(runSpacing: 1, children: [ + _edit( + initial: store.collection.title, + title: "Title", + hint: "Title...", + onChanged: changeCollectionTitle), + _edit( + initial: store.collection.description, + title: "Description", + hint: "Description...", + onChanged: changeCollectionDescription, + maxlines: 1), + Padding( + padding: EdgeInsets.only(top: 16), + child: Row(children: [ + Text("Notes", style: Theme.of(context).textTheme.caption) + ])), + ...notes + ])); + + List items = [ + titleEdit, + ]; + + List stackChildren = []; + + stackChildren.add(Container( + padding: EdgeInsets.all(16), + child: ListView.builder( + itemBuilder: (context, index) => items[index], + itemCount: items.length, + ))); + + List actions = [ + IconButton( + icon: + Icon((store.collection.starred) ? Icons.star : Icons.star_border), + onPressed: toggleCollectionStarred), + ]; + + return WillPopScope( + onWillPop: () async { + if (store.collection.title.trim() == "" && + store.collection.description.trim() == "") { + print("delete collection"); + LocalStorage().deleteCollection(store.collection); + } else { + print("sync collection"); + LocalStorage().syncCollection(store.collection); + } + return true; + }, + child: Scaffold( + floatingActionButton: FloatingActionButton( + onPressed: floatingActionButtonPressed, + foregroundColor: Colors.white, + backgroundColor: Theme.of(context).accentColor, + child: IconButton( + icon: Icon(Icons.add), + onPressed: floatingActionButtonPressed, + ), + ), + appBar: AppBar( + //backgroundColor: store.note.color, + actions: actions, + title: Text("Edit Set"), + ), + body: Container(child: Stack(children: stackChildren)))); + } +} + +class CollecitonNoteListItem extends StatelessWidget { + // Section section, bool moveDown, bool moveUp, GlobalKey globalKey) { + final Note note; + final bool moveDown, moveUp; + final GlobalKey globalKey; + + const CollecitonNoteListItem( + {this.note, this.moveUp, this.moveDown, this.globalKey, Key key}) + : super(key: key); + + @override + Widget build(BuildContext context) { + List trailingWidgets = []; + if (moveDown) + trailingWidgets.add(IconButton( + icon: Icon(Icons.arrow_drop_down), + onPressed: () => moveNoteDown(note))); + + if (moveUp) + trailingWidgets.add(IconButton( + icon: Icon(Icons.arrow_drop_up), + onPressed: () => moveNoteUp(note), + )); + + Widget trailing = Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: trailingWidgets); + + Card card = Card( + child: Container( + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + Expanded( + child: Container( + padding: EdgeInsets.all(10), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding( + padding: EdgeInsets.only(bottom: 10), + child: Text(note.title, + style: Theme.of(context).textTheme.subtitle1)), + ]))), + trailing + ], + ))); + + return Dismissible( + child: card, + onDismissed: (d) { + removeNoteFromCollection(note); + showUndoSnackbar(Scaffold.of(context), + note.hasEmptyTitle ? "Note" : note.title, note, (_) { + undoRemoveNoteFromCollection(note); + }); + }, + direction: DismissDirection.startToEnd, + key: globalKey, + background: Card( + child: Container( + color: Colors.redAccent, + child: Row(children: [Icon(Icons.delete)]), + padding: EdgeInsets.all(10))), + ); + } +} + +class Collections extends StatelessWidget { + final Function onMenuPressed; + + Collections(this.onMenuPressed); + + _floatingButtonPress(BuildContext context) { + NoteCollection collection = NoteCollection.empty(); + LocalStorage().syncCollection(collection); + Navigator.push( + context, + new MaterialPageRoute( + builder: (context) => CollectionEditor(collection))); + } + + @override + Widget build(BuildContext context) { + LocalStorage() + .getCollections() + .then((value) => LocalStorage().collectionController.sink.add(value)); + + var builder = StreamBuilder>( + stream: LocalStorage().collectionStream, + initialData: [], + builder: (context, snap) { + print(snap); + if (snap.hasData) { + print("DB Set collections ${snap.data.length}"); + DB().setCollections(snap.data); + return CollectionsContent(onMenuPressed: this.onMenuPressed); + } else { + return CircularProgressIndicator(); + } + }, + ); + return Scaffold( + floatingActionButton: FloatingActionButton( + foregroundColor: Colors.white, + backgroundColor: Theme.of(context).accentColor, + onPressed: () => _floatingButtonPress(context), + child: IconButton( + onPressed: () => _floatingButtonPress(context), + icon: Icon(Icons.add), + ), + ), + //bottomSheet: RecorderBottomSheet(), + body: builder); + } +} + +class CollectionsContent extends StatefulWidget { + final Function onMenuPressed; + final EditorView view; + + CollectionsContent( + {Key key, this.onMenuPressed, this.view = EditorView.double}) + : super(key: key); + + @override + _CollectionsContentState createState() => _CollectionsContentState(); +} + +class _CollectionsContentState extends State + with StoreWatcherMixin, SingleTickerProviderStateMixin { + CollectionsStore storage; + + @override + void initState() { + super.initState(); + storage = listenToStore(collectionsStoreToken); + } + + bool get singleView => true; + + _sliverNoteSelectionAppBar() { + return SliverAppBar( + pinned: true, + leading: IconButton( + icon: Icon(Icons.clear), onPressed: () => clearCollectionSelection()), + title: Text(storage.selectedCollections.length.toString()), + actions: [ + IconButton( + icon: Icon(Icons.delete), + onPressed: () => removeAllSelectedCollections()), + IconButton( + icon: Icon((storage.selectedCollections + .where((e) => e.starred) + .toList() + .length + .toDouble() / + storage.selectedCollections.length.toDouble()) < + 0.5 + ? Icons.star + : Icons.star_border), + onPressed: () { + if ((storage.selectedCollections + .where((e) => e.starred) + .toList() + .length + .toDouble() / + storage.selectedCollections.length.toDouble()) < + 0.5) { + starAllSelectedCollections(); + } else { + unstarAllSelectedCollections(); + } + }), + ], + ); + } + + _sliver() { + onTap(NoteCollection collection) { + if (storage.isAnyCollectionSelected()) { + triggerSelectCollection(collection); + } else { + Navigator.push( + context, + new MaterialPageRoute( + builder: (context) => CollectionEditor(collection))); + } + } + + onLongPress(NoteCollection collection) { + triggerSelectCollection(collection); + } + + List noteList = []; + + if (storage.isAnyCollectionStarred()) { + print("notes are starred"); + List items = storage.filteredCollections + .where((n) => !n.starred) + .map((n) => NoteCollectionItemModel( + collection: n, isSelected: storage.isSelected(n))) + .toList(); + + List starrtedItems = storage.filteredCollections + .where((n) => n.starred) + .map((n) => NoteCollectionItemModel( + collection: n, isSelected: storage.isSelected(n))) + .toList(); + + noteList = [ + SliverList( + delegate: SliverChildListDelegate([ + Padding( + padding: EdgeInsets.only(left: 16, top: 16), + child: Row(children: [ + Text("Starred", style: Theme.of(context).textTheme.caption), + Padding( + padding: EdgeInsets.only(left: 8, bottom: 0), + child: Icon(Icons.star, size: 16)) + ])) + ])), + NoteCollectionList(starrtedItems, onTap, onLongPress, + singleView: singleView), + SliverList( + delegate: SliverChildListDelegate([ + Padding( + padding: EdgeInsets.only(left: 16), + child: Text("Other", style: Theme.of(context).textTheme.caption)) + ])), + NoteCollectionList(items, onTap, onLongPress, singleView: singleView) + ]; + } else { + List items = storage.filteredCollections + .map((n) => NoteCollectionItemModel( + collection: n, isSelected: storage.isSelected(n))) + .toList(); + + noteList = [ + NoteCollectionList(items, onTap, onLongPress, singleView: singleView) + ]; + } + + SliverAppBar appBar = storage.isAnyCollectionSelected() + ? _sliverNoteSelectionAppBar() + : _sliverAppBar(); + + return CustomScrollView( + slivers: [appBar]..addAll(noteList), + ); + } + + _sliverAppBar() { + return SliverAppBar( + titleSpacing: 5.0, + leading: + IconButton(icon: Icon(Icons.menu), onPressed: widget.onMenuPressed), + title: Center( + child: Align(child: Text("Sets"), alignment: Alignment.centerLeft)), + floating: false, + pinned: true, + ); + } + + @override + Widget build(BuildContext context) { + return _sliver(); + } +} diff --git a/lib/collections_store.dart b/lib/collections_store.dart new file mode 100644 index 0000000..fb0d1e6 --- /dev/null +++ b/lib/collections_store.dart @@ -0,0 +1,85 @@ +import 'package:flutter_flux/flutter_flux.dart'; +import 'package:sound/db.dart'; +import 'package:sound/model.dart'; +import 'package:sound/local_storage.dart'; + +class CollectionsStore extends Store { + List _selectedCollections; + List get selectedCollections => _selectedCollections; + + List get filteredCollections => + DB().collections.where((NoteCollection collection) { + return true; + // if (_filters.length == 0 && (_search == null || _search == "")) + // return true; + + // if (_search != null && search != "") { + // if (_filters.length == 0) { + // return _isSearchValid(note); + // } else { + // return _isSearchValid(note) && _isAnyFilterValid(note); + // } + // } else { + // return _isAnyFilterValid(note); + // } + }).toList(); + + bool isAnyCollectionSelected() => _selectedCollections.length > 0; + bool isAnyCollectionStarred() => filteredCollections.any((n) => n.starred); + + bool isSelected(NoteCollection collection) => + this._selectedCollections.contains(collection); + + CollectionsStore() { + _selectedCollections = []; + + triggerSelectCollection.listen((NoteCollection collection) { + if (!_selectedCollections.contains(collection)) { + _selectedCollections.add(collection); + trigger(); + } else { + _selectedCollections.remove(collection); + trigger(); + } + }); + + clearCollectionSelection.listen((_) { + _selectedCollections.clear(); + trigger(); + }); + + removeAllSelectedCollections.listen((_) { + for (NoteCollection collection in _selectedCollections) { + LocalStorage().deleteCollection(collection); + } + _selectedCollections.clear(); + trigger(); + }); + + starAllSelectedCollections.listen((_) { + for (NoteCollection collection in _selectedCollections) { + collection.starred = true; + LocalStorage().syncCollection(collection); + } + _selectedCollections.clear(); + trigger(); + }); + + unstarAllSelectedCollections.listen((_) { + for (NoteCollection collection in _selectedCollections) { + collection.starred = false; + LocalStorage().syncCollection(collection); + } + _selectedCollections.clear(); + trigger(); + }); + } +} + +Action triggerSelectCollection = Action(); +Action clearCollectionSelection = Action(); +Action removeAllSelectedCollections = Action(); +Action unstarAllSelectedCollections = Action(); +Action starAllSelectedCollections = Action(); + +StoreToken collectionsStoreToken = StoreToken(CollectionsStore()); diff --git a/lib/db.dart b/lib/db.dart index be16b2d..9ccdbdf 100644 --- a/lib/db.dart +++ b/lib/db.dart @@ -8,10 +8,25 @@ class DB { List _notes = []; List get notes => _notes; + List _collections = []; + List get collections => _collections; + void setNotes(List l) { _notes = l; } + void setCollections(List l) { + _collections = l; + } + + void addCollection(NoteCollection collection) { + _collections.add(collection); + } + + void removeCollection(NoteCollection collection) { + _collections.remove(collection); + } + void addNote(Note note) { _notes.add(note); } diff --git a/lib/dialogs/choose_note_dialog.dart b/lib/dialogs/choose_note_dialog.dart index e69de29..0c45701 100644 --- a/lib/dialogs/choose_note_dialog.dart +++ b/lib/dialogs/choose_note_dialog.dart @@ -0,0 +1,95 @@ +import 'package:flutter/material.dart'; +import 'package:sound/model.dart'; +import 'package:sound/utils.dart'; + +typedef FutureNoteImportCallback = Future Function(List); + +showAddNotesDialog( + {@required BuildContext context, + @required List notes, + @required List preselected, + @required FutureNoteImportCallback onImport, + String title = 'Add Notes', + String newButtonText = 'Import as NEW', + String importButtonText = "Import", + String cancelButtonText = "Cancel"}) { + // trigger note selection / deselection via button press + + showDialog( + context: context, + builder: (BuildContext context) { + // if selected is null (use empty new note) + + List selected = []; + + _import() async { + // sync and pop current dialog + await onImport(selected); + Navigator.of(context).pop(); + } + + bool isSelected(int index) { + return selected.contains(notes[index]); + } + + bool emptyTitle(Note note) { + return (note.title == null || note.title.trim() == ""); + } + + return StatefulBuilder(builder: (context, setState) { + var width = MediaQuery.of(context).size.width; + return AlertDialog( + title: new Text(title), + content: Builder(builder: (context) { + return ListView.builder( + padding: EdgeInsets.zero, + shrinkWrap: true, + itemBuilder: (context, index) { + return ListTile( + leading: ConstrainedBox( + constraints: + BoxConstraints(maxHeight: 16, maxWidth: 160), + child: Text( + emptyTitle(notes[index]) + ? "Empty" + : notes[index].title, + overflow: TextOverflow.clip, + )), + onTap: () { + setState(() { + if (isSelected(index)) { + selected.remove(notes[index]); + } else { + selected.add(notes[index]); + } + }); + }, + trailing: isSelected(index) + ? IconButton( + icon: Icon( + Icons.check, + color: getSelectedCardColor(context), + )) + : null, + ); + }, + itemCount: notes.length); + }), + actions: [ + new TextButton( + child: Text(cancelButtonText), + onPressed: () { + Navigator.of(context).pop(); + }, + ), + // usually buttons at the bottom of the dialog + new TextButton( + child: new Text(importButtonText), + onPressed: (selected != null) ? _import : null, + ), + ], + ); + }); + }, + ); +} diff --git a/lib/dialogs/text_import_dialog.dart b/lib/dialogs/text_import_dialog.dart index cae277b..5d6ca3e 100644 --- a/lib/dialogs/text_import_dialog.dart +++ b/lib/dialogs/text_import_dialog.dart @@ -4,7 +4,6 @@ import 'dart:io'; import 'package:flutter/material.dart'; import 'package:sound/dialogs/import_dialog.dart'; -import 'package:sound/local_storage.dart'; import 'package:sound/model.dart'; import 'package:sound/utils.dart'; import 'package:uuid/uuid.dart'; diff --git a/lib/local_storage.dart b/lib/local_storage.dart index 5d7c8f4..f05465a 100644 --- a/lib/local_storage.dart +++ b/lib/local_storage.dart @@ -12,23 +12,24 @@ import 'package:sqflite/sqflite.dart'; final String noteTable = 'notes'; final String sectionTable = 'sections'; final String audioFileTable = 'audiofiles'; -final String noteSetTable = 'sets'; +final String collectionTable = 'collections'; +final String collectionMappingTable = 'collectionmapping'; // up and downgrades of the database final migrations = { - 4: { - 5: [ + 1: { + 2: [ //upgrade - "CREATE TABLE $noteSetTable(id TEXT PRIMARY KEY, title TEXT, description TEXT, createdAt TEXT, lastModified TEXT);", - "ALTER TABLE $noteTable ADD setId TEXT;" + "CREATE TABLE $collectionTable(id TEXT PRIMARY KEY, title TEXT, description TEXT, createdAt TEXT, lastModified TEXT, starred INTEGER);", + "CREATE TABLE $collectionMappingTable (noteId TEXT, collectionId TEXT);" ] }, - 5: { - 4: [ + 2: { + 1: [ // downgrade - "DROP TABLE $noteSetTable;", - "ALTER TABLE $noteTable DROP COLUMN setId;" - ] + "DROP TABLE $collectionTable;", + "DROP TABLE $collectionMappingTable;", + ], } }; @@ -39,9 +40,16 @@ class LocalStorage { final StreamController> _controller = StreamController>.broadcast(); + final StreamController> _collectionController = + StreamController>.broadcast(); + StreamController> get controller => _controller; + StreamController> get collectionController => + _collectionController; Stream> get stream => _controller.stream.asBroadcastStream(); + Stream> get collectionStream => + _collectionController.stream.asBroadcastStream(); factory LocalStorage() { return _singleton; @@ -53,29 +61,35 @@ class LocalStorage { Future getDatabase() async { return openDatabase( - // Set the path to the database. Note: Using the `join` function from the - // `path` package is best practice to ensure the path is correctly - // constructed for each platform. - join(await getDatabasesPath(), 'sketchord.db'), - // When the database is first created, create a table to store dogs. - onCreate: (db, version) { - // Run the CREATE TABLE statement on the database. - createDatabase(db); - }, - onUpgrade: (Database db, int oldVersion, int newVersion) async { - print("performing upgrade from $oldVersion to $newVersion"); - migrations[oldVersion][newVersion] - .forEach((script) async => await db.execute(script)); - }, - onDowngrade: (Database db, int oldVersion, int newVersion) { - print("performing downgrade from $oldVersion to $newVersion"); - migrations[oldVersion][newVersion] - .forEach((script) async => await db.execute(script)); - }, - // Set the version. This executes the onCreate function and provides a - // path to perform database upgrades and downgrades. - version: 1, - ); + // Set the path to the database. Note: Using the `join` function from the + // `path` package is best practice to ensure the path is correctly + // constructed for each platform. + join(await getDatabasesPath(), 'sketchord.db'), + // When the database is first created, create a table to store dogs. + onCreate: (db, version) async { + // Run the CREATE TABLE statement on the database. + await createDatabase(db); + + if (version != 1) { + for (int i = 2; i <= version; i++) { + int oldVersion = i - 1; + int newVersion = i; + migrations[oldVersion][newVersion] + .forEach((script) async => await db.execute(script)); + } + } + }, onUpgrade: (Database db, int oldVersion, int newVersion) async { + print("performing upgrade from $oldVersion to $newVersion"); + migrations[oldVersion][newVersion] + .forEach((script) async => await db.execute(script)); + }, onDowngrade: (Database db, int oldVersion, int newVersion) { + print("performing downgrade from $oldVersion to $newVersion"); + migrations[oldVersion][newVersion] + .forEach((script) async => await db.execute(script)); + }, + // Set the version. This executes the onCreate function and provides a + // path to perform database upgrades and downgrades. + version: 2); } Future createDatabase(Database db) async { @@ -177,6 +191,103 @@ class LocalStorage { return notes; } + Future> getCollections() async { + final List> maps = + await (await getDatabase()).query(collectionTable); + + if (maps == null) return []; + List collections = []; + + for (var map in maps) { + String collectionId = map['id']; + NoteCollection collection = NoteCollection.fromJson(map); + // add notes by id + collection.notes = await getNotesByCollectionId(collectionId); + collections.add(collection); + } + + return collections; + } + + Future syncCollection(NoteCollection collection) async { + collection.lastModified = DateTime.now(); + var data = collection.toJson(); + data.remove('notes'); + + var db = await getDatabase(); + + var query = await db + .query(collectionTable, where: "id = ?", whereArgs: [collection.id]); + if (query == null || query.length == 0) { + int row = await db.insert(collectionTable, data, + conflictAlgorithm: ConflictAlgorithm.replace); + print("Insert into row $row"); + } else { + print(query); + print("update table"); + _updateTable(collectionTable, data); + } + + var noteIds = await _getNoteIdsByCollectionId(collection.id, db); + print("note ids: $noteIds"); + + for (var note in collection.notes) { + if (!noteIds.contains(note.id)) { + // add setId / noteId pair + Map pair = { + "noteId": note.id, + "collectionId": collection.id + }; + + int row = await db.insert(collectionMappingTable, pair, + conflictAlgorithm: ConflictAlgorithm.replace); + print( + "insert noteId ${note.id} into collection ${collection.id} | row: $row"); + } else { + noteIds.remove(note.id); + } + } + // if any noteId left in list, remove entry from table + for (var noteId in noteIds) { + print("delete noteId: $noteId | collectionId: ${collection.id}"); + await db.delete(collectionMappingTable, + where: "collectionId = ? AND noteId = ?", + whereArgs: [collection.id, noteId]); + } + + var collections = await getCollections(); + print("collections: ${collections.length}"); + _collectionController.sink.add(collections); + } + + Future> getNotesByCollectionId(String collectionId) async { + final List> maps = await (await getDatabase()).query( + collectionMappingTable, + where: "collectionId = ?", + whereArgs: [collectionId]); + + if (maps == null) return []; + + List notes = []; + + for (var map in maps) { + Note note = await getNote(map); + if (note != null) notes.add(note); + } + return notes; + } + + Future> _getNoteIdsByCollectionId( + String collectionId, Database db) async { + final List> maps = await (db.query( + collectionMappingTable, + where: "collectionId = ?", + whereArgs: [collectionId])); + + if (maps == null) return []; + return maps.asMap().values.map((value) => value['noteId']).toList(); + } + Future _deleteAudioFile(AudioFile audioFile) async { FileSystemEntity e = await audioFile.file.delete(); return !e.existsSync(); @@ -197,6 +308,23 @@ class LocalStorage { _controller.sink.add(await getNotes()); } + Future deleteCollection(NoteCollection collection) async { + final db = await getDatabase(); + + await db.delete( + collectionTable, + where: 'id = ?', + whereArgs: [collection.id], + ); + + await db.delete( + collectionMappingTable, + where: 'collectionId = ?', + whereArgs: [collection.id], + ); + _collectionController.sink.add(await getCollections()); + } + Future _updateTable(String table, Map data, {String where = 'id = ?'}) async { final db = await getDatabase(); diff --git a/lib/menu.dart b/lib/menu.dart index 4cdeec9..0b1522f 100644 --- a/lib/menu.dart +++ b/lib/menu.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:sound/home.dart'; import 'package:sound/intent_receive.dart'; +import 'package:sound/collections.dart'; import 'package:sound/settings.dart'; import 'package:sound/trash.dart'; @@ -13,7 +14,7 @@ class Menu extends StatefulWidget { } } -enum MenuItem { HOME, SETTINGS, TRASH } +enum MenuItem { HOME, SETTINGS, TRASH, SETS } class MenuOption { MenuItem item; @@ -35,6 +36,8 @@ class _MenuState extends State with SingleTickerProviderStateMixin { var options = [ MenuOption(icon: Icons.dashboard, name: "Home", item: MenuItem.HOME), + MenuOption( + icon: Icons.list_alt_outlined, name: "Sets", item: MenuItem.SETS), MenuOption(icon: Icons.delete_sweep, name: "Trash", item: MenuItem.TRASH), MenuOption(icon: Icons.settings, name: "Settings", item: MenuItem.SETTINGS), ]; @@ -104,6 +107,8 @@ class _MenuState extends State with SingleTickerProviderStateMixin { return Settings(this._onMenuPressed); case MenuItem.TRASH: return Trash(this._onMenuPressed); + case MenuItem.SETS: + return Collections(this._onMenuPressed); default: return Container(); } diff --git a/lib/model.dart b/lib/model.dart index bafab72..10f6308 100644 --- a/lib/model.dart +++ b/lib/model.dart @@ -135,6 +135,7 @@ String serializeDuration(Duration d) { } DateTime deserializeDateTime(String s) { + if (s == null) return null; List params = s.split("-"); List t = params.map((i) => int.parse(i)).toList(); return DateTime(t[0], t[1], t[2], t[3], t[4], t[5], t[6], t[7]); @@ -173,6 +174,10 @@ class Note { double scrollOffset; double zoom; // text scaling factor + bool get hasEmptyTitle { + return this.title == null || this.title.trim() == ""; + } + factory Note.empty() { return Note( title: "", @@ -339,3 +344,62 @@ class Settings { json["audioFormat"] == "aac" ? AudioFormat.AAC : AudioFormat.WAV); } } + +class NoteCollection { + String id; + List notes; + String title, description; + bool starred; + + DateTime lastModified, createdAt; + + NoteCollection( + {this.id, + this.notes, + this.title, + this.starred, + this.description, + this.createdAt, + this.lastModified}); + + factory NoteCollection.empty() { + return NoteCollection( + id: Uuid().v4(), + notes: [], + title: "", + description: "", + starred: false, + createdAt: DateTime.now(), + lastModified: DateTime.now()); + } + Map toJson() { + return { + "id": id, + "notes": notes.map((e) => e.toJson()).toList(), + "title": title, + "description": description, + "starred": starred ? 1 : 0, + "createdAt": createdAt == null ? null : serializeDateTime(createdAt), + "lastModified": + lastModified == null ? null : serializeDateTime(lastModified), + }; + } + + factory NoteCollection.fromJson(Map json) { + return NoteCollection( + id: json.containsKey("id") ? json['id'] : Uuid().v4(), + notes: json.containsKey("notes") + ? json['notes'].map((n) => Note.fromJson(n, n['id'])).toList() + : [], + title: json.containsKey("title") ? json['title'] : "", + description: json.containsKey("description") ? json['description'] : "", + starred: json.containsKey("starred") ? json['starred'] == 1 : false, + lastModified: json.containsKey("lastModified") + ? deserializeDateTime(json['lastModified']) + : DateTime.now(), + createdAt: json.containsKey("createdAt") + ? deserializeDateTime(json['createdAt']) + : DateTime.now(), + ); + } +} From 8897bcc11514879615d11487bf52b08ee8925fd6 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sat, 5 Jun 2021 14:44:47 +0200 Subject: [PATCH 003/146] Disable initial start --- lib/home.dart | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/home.dart b/lib/home.dart index 5534616..f961ce4 100644 --- a/lib/home.dart +++ b/lib/home.dart @@ -32,6 +32,7 @@ class Home extends StatelessWidget { Widget build(BuildContext context) { Future.delayed(Duration(milliseconds: 1000), () async { bool initialStart = await LocalStorage().isInitialStart(); + initialStart = false; if (initialStart) { showInitialImportDialog(context, (_) { LocalStorage().setInitialStartDone(); @@ -340,7 +341,9 @@ class HomeContentState extends State _searchView() { return SearchTextView( toggleIsSearching: _toggleIsSearching, - onChanged: searchNotes, + onChanged: (s) { + searchNotes(s); + }, controller: _controller); } } From 591be64735f6a6f8fddc8c0c65c5b56a9a39d849 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sat, 5 Jun 2021 14:44:54 +0200 Subject: [PATCH 004/146] Cleanup --- lib/editor_store.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/editor_store.dart b/lib/editor_store.dart index 5e4d4b6..de43027 100644 --- a/lib/editor_store.dart +++ b/lib/editor_store.dart @@ -68,6 +68,7 @@ class NoteEditorStore extends Store { await LocalStorage().syncNoteAttr(_note, 'sections'); trigger(); }); + moveSectionUp.listen((s) async { int index = _note.sections.indexOf(s); if (index >= 1) { From 852d7d8114d1c84a2c0773370c2317d6d04d0453 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Tue, 8 Jun 2021 23:48:01 +0200 Subject: [PATCH 005/146] Change colors --- lib/editor_views/audio.dart | 9 ++++++--- lib/editor_views/section.dart | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/lib/editor_views/audio.dart b/lib/editor_views/audio.dart index a66b17a..5554a04 100644 --- a/lib/editor_views/audio.dart +++ b/lib/editor_views/audio.dart @@ -30,7 +30,10 @@ class AudioFileListItem extends StatelessWidget { dense: true, visualDensity: VisualDensity.comfortable, contentPadding: EdgeInsets.all(2), - leading: IconButton(icon: Icon(Icons.play_arrow), onPressed: onPressed), + leading: IconButton( + icon: Icon(Icons.play_arrow), + onPressed: onPressed, + color: Theme.of(context).iconTheme.color), title: Text(file.name), ); } @@ -137,12 +140,12 @@ class AudioFileView extends StatelessWidget { key: GlobalKey(), background: Card( child: Container( - color: Colors.greenAccent, + color: Theme.of(context).highlightColor, child: Row(children: [Icon(Icons.share)]), padding: EdgeInsets.all(10))), secondaryBackground: Card( child: Container( - color: Colors.redAccent, + color: Theme.of(context).accentColor, child: Row( mainAxisAlignment: MainAxisAlignment.end, children: [Icon(Icons.delete)]), diff --git a/lib/editor_views/section.dart b/lib/editor_views/section.dart index b7e672a..790b5b7 100644 --- a/lib/editor_views/section.dart +++ b/lib/editor_views/section.dart @@ -171,7 +171,7 @@ class SectionListItem extends StatelessWidget { key: globalKey, background: Card( child: Container( - color: Colors.redAccent, + color: Theme.of(context).accentColor, child: Row(children: [Icon(Icons.delete)]), padding: EdgeInsets.all(10))), ); From 8bf30d1a2f4942139aef18b6d3f34c94907d49b3 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Tue, 8 Jun 2021 23:49:07 +0200 Subject: [PATCH 006/146] Fix getNote and getNoteById --- lib/local_storage.dart | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/lib/local_storage.dart b/lib/local_storage.dart index f05465a..9fe392f 100644 --- a/lib/local_storage.dart +++ b/lib/local_storage.dart @@ -166,7 +166,7 @@ class LocalStorage { return maps.map((s) => AudioFile.fromJson(s)).toList(); } - Future getNote(Map data) async { + Future parseNote(Map data) async { String noteId = data['id']; if (noteId == null) return null; @@ -176,6 +176,16 @@ class LocalStorage { return note; } + Future getNoteById(String id) async { + final List> maps = await (await getDatabase()) + .query(noteTable, where: "id = ?", whereArgs: [id]); + + if (maps == null || maps.length == 0) + return null; + else + return parseNote(maps[0]); + } + Future> getNotes() async { final List> maps = await (await getDatabase()).query(noteTable); @@ -185,7 +195,7 @@ class LocalStorage { List notes = []; for (var map in maps) { - Note note = await getNote(map); + Note note = await parseNote(map); if (note != null) notes.add(note); } return notes; @@ -269,9 +279,10 @@ class LocalStorage { if (maps == null) return []; List notes = []; + print("found ${maps.length} results"); for (var map in maps) { - Note note = await getNote(map); + Note note = await getNoteById(map['noteId']); if (note != null) notes.add(note); } return notes; From 240dec33d7fd9c8b2d9958356f79565adb014471 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Tue, 8 Jun 2021 23:49:13 +0200 Subject: [PATCH 007/146] Add empty text --- lib/model.dart | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/model.dart b/lib/model.dart index 10f6308..ac42f7d 100644 --- a/lib/model.dart +++ b/lib/model.dart @@ -3,6 +3,8 @@ import 'package:flutter_audio_recorder/flutter_audio_recorder.dart'; import 'package:uuid/uuid.dart'; import 'dart:io'; +const EMPTY_TEXT = "Empty"; + RangeValues deserializeRangeValues(String c) { if (c == null) return null; From 9825ddc7a7aebd6154d25a748739ee352c1dc5f9 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Tue, 8 Jun 2021 23:49:40 +0200 Subject: [PATCH 008/146] Add "Add To collection" dialog --- lib/dialogs/add_to_collection_dialog.dart | 123 ++++++++++++++++++++++ lib/note_editor.dart | 16 +-- 2 files changed, 133 insertions(+), 6 deletions(-) create mode 100644 lib/dialogs/add_to_collection_dialog.dart diff --git a/lib/dialogs/add_to_collection_dialog.dart b/lib/dialogs/add_to_collection_dialog.dart new file mode 100644 index 0000000..3f5adba --- /dev/null +++ b/lib/dialogs/add_to_collection_dialog.dart @@ -0,0 +1,123 @@ +import 'package:flutter/material.dart'; +import 'package:sound/collections.dart'; +import 'package:sound/main.dart'; +import 'package:sound/model.dart'; +import 'package:sound/local_storage.dart'; + +typedef FutureNoteCollectionCallback = Future Function(); +typedef FutureAddNoteToCollectionCallback = Future Function( + NoteCollection); + +showAddToCollectionDialog(BuildContext context, Note note) { + Future onNew() async { + return NoteCollection.empty(); + } + + Future onAdd(NoteCollection collection) async { + if (!collection.notes.any((element) => element.id == note.id)) { + collection.notes.add(note); + } + return collection; + } + + _showAddToCollectionDialog(context, "Add To Collection", onNew, onAdd, + importButtonText: 'Add'); +} + +_showAddToCollectionDialog(BuildContext context, String title, + FutureNoteCollectionCallback onNew, FutureAddNoteToCollectionCallback onAdd, + {String newButtonText = 'Import as NEW', + String importButtonText = "Import", + bool openCollection = true, + bool syncCollection = true}) async { + List collections = await LocalStorage().getCollections(); + + showDialog( + context: context, + builder: (BuildContext context) { + // if selected is null (use empty new note) + NoteCollection selected; + + _open(NoteCollection col) { + if (openCollection) { + Navigator.push( + context, + new MaterialPageRoute( + builder: (context) => CollectionEditor(col))); + } + } + + _import() async { + // sync and pop current dialog + NoteCollection collection = await onAdd(selected); + if (syncCollection) { + LocalStorage().syncCollection(collection); + } + Navigator.of(context).pop(); + _open(collection); + } + + _onNew() async { + NoteCollection newCollection = await onNew(); + if (syncCollection) { + LocalStorage().syncCollection(newCollection); + } + + Navigator.of(context).pop(); + _open(newCollection); + } + + return StatefulBuilder(builder: (context, setState) { + return AlertDialog( + title: new Text(title), + content: Builder(builder: (context) { + double width = MediaQuery.of(context).size.width; + return Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + Flexible( + child: ElevatedButton( + child: Text(newButtonText), onPressed: _onNew)), + SizedBox(height: 10), + Row(mainAxisAlignment: MainAxisAlignment.center, children: [ + Container(child: Text("-- or select a collection --")) + ]), + SizedBox(height: 15), + Row(mainAxisSize: MainAxisSize.max, children: [ + new DropdownButton( + value: selected, + isDense: true, + items: collections + .map((e) => DropdownMenuItem( + child: SizedBox( + width: width - 152, + child: Text( + "${collections.indexOf(e)}: ${e.title}", + overflow: TextOverflow.ellipsis)), + value: e)) + .toList(), + onChanged: (v) => setState(() => selected = v)), + ]) + ]); + }), + actions: [ + new TextButton( + child: Text("Cancel"), + onPressed: () { + Navigator.of(context).pop(); + }, + ), + // usually buttons at the bottom of the dialog + new ElevatedButton( + child: new Text( + importButtonText, + ), + onPressed: (selected != null) ? _import : null, + ), + ], + ); + }); + }, + ); +} diff --git a/lib/note_editor.dart b/lib/note_editor.dart index 2dc1639..b34f259 100644 --- a/lib/note_editor.dart +++ b/lib/note_editor.dart @@ -1,12 +1,9 @@ -import 'dart:io'; - -import 'package:audioplayers/audio_cache.dart'; import 'package:audioplayers/audioplayers.dart'; import 'package:clipboard_manager/clipboard_manager.dart'; import 'package:flushbar/flushbar.dart'; import 'package:flutter/material.dart'; import 'package:flutter_flux/flutter_flux.dart' show StoreWatcherMixin; -import 'package:flutter_share/flutter_share.dart'; +import 'package:sound/dialogs/add_to_collection_dialog.dart'; import 'package:sound/dialogs/color_picker_dialog.dart'; import 'package:sound/dialogs/import_dialog.dart'; import 'package:sound/editor_views/additional_info.dart'; @@ -46,7 +43,8 @@ class NoteEditorState extends State RecorderBottomSheetStore recorderStore; NoteEditorStore store; GlobalKey _globalKey = GlobalKey(); - List popupMenuActions = ["share", "copy"]; + List popupMenuActions = ["share", "copy", "add"]; + List popupMenuActionsLong = ["Share", "Copy", "Add To Collection"]; Map dismissables = {}; @@ -141,6 +139,9 @@ class NoteEditorState extends State case "copy": _copyToClipboard(context); break; + case "add": + showAddToCollectionDialog(context, store.note); + break; default: break; } @@ -258,7 +259,10 @@ class NoteEditorState extends State onSelected: _runPopupAction, itemBuilder: (context) { return popupMenuActions.map>((String action) { - return PopupMenuItem(value: action, child: Text(action)); + int index = popupMenuActions.indexOf(action); + + return PopupMenuItem( + value: action, child: Text(popupMenuActionsLong[index])); }).toList(); }, ); From 64d953b718d99b7a37b1f9dcc9c024f5a440beb6 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Tue, 8 Jun 2021 23:49:50 +0200 Subject: [PATCH 009/146] Remove f.e. --- lib/editor_views/additional_info.dart | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/editor_views/additional_info.dart b/lib/editor_views/additional_info.dart index 72863f6..da4b5ba 100644 --- a/lib/editor_views/additional_info.dart +++ b/lib/editor_views/additional_info.dart @@ -57,22 +57,22 @@ class NoteEditorAdditionalInfo extends StatelessWidget { _edit( initial: note.tuning == null ? "" : note.tuning, title: "Tuning", - hint: "f.e. Standard, Dadgad", + hint: "Standard, Dadgad ...", onChanged: changeTuning), _edit( initial: note.capo == null ? "" : note.capo.toString(), title: "Capo", - hint: "f.e. 7, 5", + hint: "7, 5 ...", onChanged: changeCapo), _edit( initial: note.key == null ? "" : note.key.toString(), title: "Key", - hint: "f.e. C Major, A Minor", + hint: "C Major, A Minor ...", onChanged: changeKey), _edit( initial: note.label == null ? "" : note.label.toString(), title: "Label", - hint: "f.e. Rock, Pop...", + hint: "Idea, Rock, Pop...", onChanged: changeLabel), _edit( initial: note.artist == null ? "" : note.artist.toString(), From 2005c577692dd707748aeab81ec4518f7727abe3 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Tue, 8 Jun 2021 23:51:18 +0200 Subject: [PATCH 010/146] Add AroundText --- lib/collections.dart | 87 +++++++++++++++++++++++++++++++++----------- 1 file changed, 66 insertions(+), 21 deletions(-) diff --git a/lib/collections.dart b/lib/collections.dart index e6aa835..8feb352 100644 --- a/lib/collections.dart +++ b/lib/collections.dart @@ -248,6 +248,7 @@ class _CollectionEditorState extends State bool showMoveUp = (i != 0); bool showMoveDown = (i != (store.collection.notes.length - 1)); notes.add(CollecitonNoteListItem( + idx: i + 1, globalKey: dismissables[store.collection.notes[i]], note: store.collection.notes[i], moveDown: showMoveDown, @@ -269,7 +270,7 @@ class _CollectionEditorState extends State onChanged: changeCollectionDescription, maxlines: 1), Padding( - padding: EdgeInsets.only(top: 16), + padding: EdgeInsets.only(top: 16, bottom: 8), child: Row(children: [ Text("Notes", style: Theme.of(context).textTheme.caption) ])), @@ -327,14 +328,53 @@ class _CollectionEditorState extends State } } +class AroundText extends StatelessWidget { + final String text; + final double radius; + final BoxShape shape; + const AroundText( + {this.text, this.radius = 30, this.shape = BoxShape.rectangle, Key key}) + : super(key: key); + + @override + Widget build(BuildContext context) { + Color background = Theme.of(context).appBarTheme.backgroundColor; + background = Theme.of(context).accentColor; + return Container( + width: this.radius, + height: this.radius, + decoration: BoxDecoration( + border: Border.all(width: 1, color: background), + shape: BoxShape.rectangle, + // You can use like this way or like the below line + //borderRadius: new BorderRadius.circular(30.0), + //color: Theme.of(context).appBarTheme.backgroundColor, + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text(this.text), + ], + ), + ); + } +} + class CollecitonNoteListItem extends StatelessWidget { // Section section, bool moveDown, bool moveUp, GlobalKey globalKey) { final Note note; + final int idx; final bool moveDown, moveUp; final GlobalKey globalKey; const CollecitonNoteListItem( - {this.note, this.moveUp, this.moveDown, this.globalKey, Key key}) + {this.note, + this.idx, + this.moveUp, + this.moveDown, + this.globalKey, + Key key}) : super(key: key); @override @@ -357,24 +397,29 @@ class CollecitonNoteListItem extends StatelessWidget { Card card = Card( child: Container( + padding: EdgeInsets.zero, child: Row( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisSize: MainAxisSize.min, - children: [ - Expanded( - child: Container( - padding: EdgeInsets.all(10), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Padding( - padding: EdgeInsets.only(bottom: 10), - child: Text(note.title, - style: Theme.of(context).textTheme.subtitle1)), - ]))), - trailing - ], - ))); + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + Padding( + padding: EdgeInsets.only(left: 10, top: 10), + child: AroundText(text: idx.toString())), + Expanded( + child: Container( + padding: EdgeInsets.all(15), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + note.hasEmptyTitle + ? EMPTY_TEXT.toUpperCase() + : note.title, + style: Theme.of(context).textTheme.subtitle1), + ]))), + trailing + ], + ))); return Dismissible( child: card, @@ -389,9 +434,9 @@ class CollecitonNoteListItem extends StatelessWidget { key: globalKey, background: Card( child: Container( - color: Colors.redAccent, + color: Theme.of(context).accentColor, child: Row(children: [Icon(Icons.delete)]), - padding: EdgeInsets.all(10))), + padding: EdgeInsets.all(8))), ); } } From 20f75a80fab41d62273a46cdde9cb937d3744e5b Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Wed, 9 Jun 2021 00:29:43 +0200 Subject: [PATCH 011/146] Fix choose simple note dialog --- lib/dialogs/choose_note_dialog.dart | 68 +++++++++++++++-------------- 1 file changed, 36 insertions(+), 32 deletions(-) diff --git a/lib/dialogs/choose_note_dialog.dart b/lib/dialogs/choose_note_dialog.dart index 0c45701..6778efd 100644 --- a/lib/dialogs/choose_note_dialog.dart +++ b/lib/dialogs/choose_note_dialog.dart @@ -38,42 +38,46 @@ showAddNotesDialog( return StatefulBuilder(builder: (context, setState) { var width = MediaQuery.of(context).size.width; + return AlertDialog( title: new Text(title), content: Builder(builder: (context) { - return ListView.builder( - padding: EdgeInsets.zero, - shrinkWrap: true, - itemBuilder: (context, index) { - return ListTile( - leading: ConstrainedBox( - constraints: - BoxConstraints(maxHeight: 16, maxWidth: 160), - child: Text( - emptyTitle(notes[index]) - ? "Empty" - : notes[index].title, - overflow: TextOverflow.clip, - )), - onTap: () { - setState(() { - if (isSelected(index)) { - selected.remove(notes[index]); - } else { - selected.add(notes[index]); - } - }); + return Container( + width: width, + height: 400, + child: ListView.builder( + shrinkWrap: true, + itemBuilder: (context, index) { + return ListTile( + leading: ConstrainedBox( + constraints: + BoxConstraints(maxHeight: 16, maxWidth: 160), + child: Text( + emptyTitle(notes[index]) + ? "Empty" + : notes[index].title, + overflow: TextOverflow.clip, + )), + onTap: () { + setState(() { + if (isSelected(index)) { + selected.remove(notes[index]); + } else { + selected.add(notes[index]); + } + }); + }, + trailing: isSelected(index) + ? IconButton( + icon: Icon( + Icons.check, + color: getSelectedCardColor(context), + ), + onPressed: () {}) + : null, + ); }, - trailing: isSelected(index) - ? IconButton( - icon: Icon( - Icons.check, - color: getSelectedCardColor(context), - )) - : null, - ); - }, - itemCount: notes.length); + itemCount: notes.length)); }), actions: [ new TextButton( From 9379f8c82e78d13e60f831da7999e92ef844b52b Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Wed, 9 Jun 2021 00:30:03 +0200 Subject: [PATCH 012/146] Encapsulate themes --- lib/main.dart | 131 +++++++++++++++++++++++++++----------------------- 1 file changed, 71 insertions(+), 60 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 0597f64..34523bb 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -15,67 +15,10 @@ void main() { // ffe57c73 Color mainColor = Colors.red.shade300; Color appBarColor = Colors.grey[900]; +Color secondaryColor = Colors.grey[900]; class App extends StatefulWidget { // This widget is the root of your application. - final ThemeData dark = ThemeData.dark().copyWith( - indicatorColor: mainColor, - primaryColor: mainColor, - accentColor: mainColor, - textSelectionTheme: ThemeData().textSelectionTheme.copyWith( - selectionColor: mainColor, - cursorColor: mainColor, - selectionHandleColor: mainColor), - highlightColor: Colors.black54, - cardColor: Colors.grey.shade800, - selectedRowColor: mainColor, - appBarTheme: ThemeData.dark() - .appBarTheme - .copyWith(color: appBarColor, textTheme: ThemeData.dark().textTheme), - buttonTheme: - ThemeData.dark().buttonTheme.copyWith(buttonColor: mainColor), - chipTheme: ThemeData.dark().chipTheme.copyWith(selectedColor: mainColor), - sliderTheme: ThemeData.dark().sliderTheme.copyWith( - trackHeight: 5, - showValueIndicator: ShowValueIndicator.always, - activeTrackColor: mainColor, - valueIndicatorColor: mainColor, - activeTickMarkColor: mainColor, - thumbColor: mainColor, - valueIndicatorTextStyle: ThemeData.dark().primaryTextTheme.bodyText1, - - //overlayColor: mainColor - inactiveTrackColor: Colors.white), - visualDensity: VisualDensity.adaptivePlatformDensity, - floatingActionButtonTheme: - FloatingActionButtonThemeData(backgroundColor: mainColor)); - - final ThemeData light = ThemeData.light().copyWith( - primaryColor: mainColor, - textSelectionTheme: ThemeData().textSelectionTheme.copyWith( - selectionColor: mainColor, - cursorColor: mainColor, - selectionHandleColor: mainColor), - cardColor: Colors.grey.shade200, - appBarTheme: ThemeData.light().appBarTheme.copyWith( - color: appBarColor, textTheme: ThemeData.light().accentTextTheme), - chipTheme: ThemeData.light().chipTheme.copyWith(selectedColor: mainColor), - indicatorColor: mainColor, - accentColor: mainColor, - highlightColor: mainColor, - sliderTheme: ThemeData.light().sliderTheme.copyWith( - trackHeight: 4, - thumbColor: mainColor, - showValueIndicator: ShowValueIndicator.always, - valueIndicatorTextStyle: ThemeData.light().primaryTextTheme.bodyText1, - //overlayColor: mainColor, - valueIndicatorColor: mainColor, - activeTickMarkColor: mainColor, - activeTrackColor: mainColor, // inactive loop area - inactiveTrackColor: appBarColor), - visualDensity: VisualDensity.adaptivePlatformDensity, - floatingActionButtonTheme: - FloatingActionButtonThemeData(backgroundColor: mainColor)); @override State createState() { @@ -101,7 +44,7 @@ class AppState extends State with StoreWatcherMixin { // setState(() { // print("shared media: $value"); // _sharedFiles = value; - // print("Shared:" + (_sharedFiles?.map((f) => f.path)?.join(",") ?? "")); + // print("Shared:" + (_sharedarkdFiles?.map((f) => f.path)?.join(",") ?? "")); // }); // }, onError: (err) { // print("getIntentDataStream error: $err"); @@ -120,10 +63,78 @@ class AppState extends State with StoreWatcherMixin { @override Widget build(BuildContext context) { + final ThemeData dark = ThemeData.dark().copyWith( + indicatorColor: mainColor, + primaryColor: mainColor, + accentColor: mainColor, + buttonColor: mainColor, + colorScheme: ColorScheme.light().copyWith( + primary: mainColor, + secondary: Colors.white, + background: Colors.white, + surface: Colors.white), + textSelectionTheme: ThemeData.dark().textSelectionTheme.copyWith( + selectionColor: mainColor, + cursorColor: mainColor, + selectionHandleColor: mainColor), + highlightColor: Colors.black54, + cardColor: Colors.grey.shade800, + selectedRowColor: mainColor, + appBarTheme: ThemeData.dark().appBarTheme.copyWith( + color: appBarColor, textTheme: ThemeData.dark().textTheme), + buttonTheme: + ThemeData.dark().buttonTheme.copyWith(buttonColor: mainColor), + chipTheme: + ThemeData.dark().chipTheme.copyWith(selectedColor: mainColor), + sliderTheme: ThemeData.dark().sliderTheme.copyWith( + trackHeight: 5, + showValueIndicator: ShowValueIndicator.always, + activeTrackColor: mainColor, + valueIndicatorColor: mainColor, + activeTickMarkColor: mainColor, + thumbColor: mainColor, + valueIndicatorTextStyle: + ThemeData.dark().primaryTextTheme.bodyText1, + + //overlayColor: mainColor + inactiveTrackColor: Colors.white), + visualDensity: VisualDensity.adaptivePlatformDensity, + floatingActionButtonTheme: + FloatingActionButtonThemeData(backgroundColor: mainColor)); + + final ThemeData light = ThemeData.light().copyWith( + primaryColor: mainColor, + textSelectionTheme: ThemeData().textSelectionTheme.copyWith( + selectionColor: mainColor, + cursorColor: mainColor, + selectionHandleColor: mainColor), + cardColor: Colors.grey.shade200, + appBarTheme: ThemeData.light().appBarTheme.copyWith( + color: appBarColor, textTheme: ThemeData.light().accentTextTheme), + chipTheme: + ThemeData.light().chipTheme.copyWith(selectedColor: mainColor), + indicatorColor: mainColor, + accentColor: mainColor, + highlightColor: mainColor, + sliderTheme: ThemeData.light().sliderTheme.copyWith( + trackHeight: 4, + thumbColor: mainColor, + showValueIndicator: ShowValueIndicator.always, + valueIndicatorTextStyle: + ThemeData.light().primaryTextTheme.bodyText1, + //overlayColor: mainColor, + valueIndicatorColor: mainColor, + activeTickMarkColor: mainColor, + activeTrackColor: mainColor, // inactive loop area + inactiveTrackColor: appBarColor), + visualDensity: VisualDensity.adaptivePlatformDensity, + floatingActionButtonTheme: + FloatingActionButtonThemeData(backgroundColor: mainColor)); + return MaterialApp( //debugShowCheckedModeBanner: false, title: 'SketChord', - theme: store.theme == SettingsTheme.dark ? widget.dark : widget.light, + theme: store.theme == SettingsTheme.dark ? dark : light, home: Menu()); } } From 32bcbe980ea769629f3de4ba433e4a15711d99d4 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Thu, 10 Jun 2021 22:57:09 +0200 Subject: [PATCH 013/146] Larger radius --- lib/recorder_bottom_sheet.dart | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/recorder_bottom_sheet.dart b/lib/recorder_bottom_sheet.dart index 1bd3cc2..ced8f52 100644 --- a/lib/recorder_bottom_sheet.dart +++ b/lib/recorder_bottom_sheet.dart @@ -205,12 +205,12 @@ class _RecorderBottomSheetState extends State return Container( decoration: BoxDecoration( color: Theme.of(context).bottomAppBarColor, - borderRadius: BorderRadius.all(Radius.circular(5)), + borderRadius: BorderRadius.all(Radius.circular(15)), boxShadow: [ BoxShadow( color: Theme.of(context).appBarTheme.color, - spreadRadius: 1, - blurRadius: 15, + spreadRadius: 5, + blurRadius: 10, ), ]), height: 300, From c58c55435fa0714a96da7e9ff5816932df99f97f Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Thu, 10 Jun 2021 22:58:23 +0200 Subject: [PATCH 014/146] Lower spreadRadius --- lib/recorder_bottom_sheet.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/recorder_bottom_sheet.dart b/lib/recorder_bottom_sheet.dart index ced8f52..8ef7309 100644 --- a/lib/recorder_bottom_sheet.dart +++ b/lib/recorder_bottom_sheet.dart @@ -209,7 +209,7 @@ class _RecorderBottomSheetState extends State boxShadow: [ BoxShadow( color: Theme.of(context).appBarTheme.color, - spreadRadius: 5, + spreadRadius: 2, blurRadius: 10, ), ]), From f17ad97018719c12f19c6c3d68eea5c5a491ae60 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Thu, 10 Jun 2021 23:06:37 +0200 Subject: [PATCH 015/146] Use box like design --- lib/recorder_bottom_sheet.dart | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/lib/recorder_bottom_sheet.dart b/lib/recorder_bottom_sheet.dart index 8ef7309..73b8354 100644 --- a/lib/recorder_bottom_sheet.dart +++ b/lib/recorder_bottom_sheet.dart @@ -107,6 +107,16 @@ class _BottomInfoState extends State } return Container( + // decoration: BoxDecoration( + // color: widget.color, + // borderRadius: BorderRadius.vertical(top: Radius.circular(15)), + // boxShadow: [ + // BoxShadow( + // color: Theme.of(context).appBarTheme.color, + // spreadRadius: 2, + // blurRadius: 10, + // ), + // ]), color: widget.color, height: widget.height, child: Row( @@ -203,16 +213,17 @@ class _RecorderBottomSheetState extends State if (showLooper) { return Container( - decoration: BoxDecoration( - color: Theme.of(context).bottomAppBarColor, - borderRadius: BorderRadius.all(Radius.circular(15)), - boxShadow: [ - BoxShadow( - color: Theme.of(context).appBarTheme.color, - spreadRadius: 2, - blurRadius: 10, - ), - ]), + // decoration: BoxDecoration( + // color: Theme.of(context).bottomAppBarColor, + // borderRadius: BorderRadius.all(Radius.circular(15)), + // boxShadow: [ + // BoxShadow( + // color: Theme.of(context).appBarTheme.color, + // spreadRadius: 2, + // blurRadius: 10, + // ), + // ]), + color: Theme.of(context).bottomAppBarColor, height: 300, width: width, child: Column(children: [ From fb6aac5a9dbcd14b39e4256d639ebf36dfd71589 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Fri, 11 Jun 2021 00:56:15 +0200 Subject: [PATCH 016/146] Add flutter_file_dialog --- android/app/build.gradle | 2 +- pubspec.yaml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 0849074..a031c24 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -39,7 +39,7 @@ android { defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId "de.onenightproductions.sketchord" - minSdkVersion 16 + minSdkVersion 19 targetSdkVersion 28 versionCode flutterVersionCode.toInteger() versionName flutterVersionName diff --git a/pubspec.yaml b/pubspec.yaml index 9669caa..7b12728 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -47,6 +47,7 @@ dependencies: cupertino_icons: ^0.1.3 flutter_launcher_icons: ^0.8.0 sqflite: ^1.3.0 + flutter_file_dialog: ^1.0.0 flutter_icons: android: true From 4a0c5d0df26fd754a1c0ff1f75dbd66063b5182a Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Fri, 11 Jun 2021 00:58:17 +0200 Subject: [PATCH 017/146] Backup collections as well --- lib/backup.dart | 69 +++++++++++++++++++++++--- lib/dialogs/initial_import_dialog.dart | 65 ++++++++++++++++-------- lib/export.dart | 5 +- lib/settings.dart | 42 +++++++++++----- 4 files changed, 139 insertions(+), 42 deletions(-) diff --git a/lib/backup.dart b/lib/backup.dart index 50d9763..d25750f 100644 --- a/lib/backup.dart +++ b/lib/backup.dart @@ -10,11 +10,19 @@ import "model.dart"; import 'package:path/path.dart' as p; const NOTES_FILENAME = "notes.json"; +const COLLECTIONS_FILENAME = "collections.json"; class ImportException implements Exception { String errMsg() => 'cannot import file'; } +class BackupData { + final List notes; + final List collections; + + BackupData({this.notes, this.collections}); +} + class Backup { Future getPermissions() async { return await Permission.storage.request().isGranted; @@ -32,7 +40,7 @@ class Backup { return Directory(p.join(root.path, 'files')); } - Future> importZip() async { + Future importZip() async { File f = await FilePicker.getFile( type: FileType.custom, allowedExtensions: ['zip'], @@ -40,19 +48,19 @@ class Backup { return await readZip(f.path); } - Future> import() async { + Future import() async { File f = await FilePicker.getFile( type: FileType.any, // allowedExtensions: ['zip', 'json'], ); if (f.path.endsWith(".json")) { Note note = readNote(f.path); - return [note]; + return BackupData(notes: [note], collections: []); } else if (f.path.endsWith(".zip")) { return await readZip(f.path); } - return []; + return BackupData(notes: [], collections: []); } String decodeZipContent(ArchiveFile f) { @@ -60,8 +68,10 @@ class Backup { return new String.fromCharCodes(l); } - Future> readZip(String path) async { + Future readZip(String path) async { List notes = []; + List collections = []; + try { final bytes = File(path).readAsBytesSync(); @@ -92,12 +102,36 @@ class Backup { Note note = Note.fromJson(noteMap, noteMap['id']); notes.add(note); } + + final collectionsListFile = archive.files.firstWhere( + (a) => a.name == COLLECTIONS_FILENAME, + orElse: () => null); + + if (collectionsListFile == null) { + print("cannot find collections list"); + } else { + final collectionIds = jsonDecode(decodeZipContent(collectionsListFile)); + + for (String collectionId in collectionIds) { + var collectionFile = archive.files.firstWhere( + (a) => a.name == "$collectionId.json", + orElse: () => null); + + if (collectionFile == null) { + print("cannot find note with id $collectionId"); + } else { + var collectionMap = jsonDecode(decodeZipContent(collectionFile)); + NoteCollection c = NoteCollection.fromJson(collectionMap); + collections.add(c); + } + } + } } catch (e) { print("unknwon error occurred $e"); throw new ImportException(); } - return notes; + return BackupData(notes: notes, collections: collections); } Note readNote(String path) { @@ -127,7 +161,8 @@ class Backup { return readNote(f.path); } - Future exportZip(List notes) async { + Future exportZip( + List notes, List collections) async { // Zip a directory to out.zip using the zipDirectory convenience method // Directory tempDir = await getExternalStorageDirectory(); @@ -142,6 +177,7 @@ class Backup { print("saving to $path"); var encoder = ZipFileEncoder(); + // create file try { encoder.create(path); } on FileSystemException catch (e) { @@ -149,6 +185,7 @@ class Backup { return null; } + // write notes for (Note note in notes) { var filename = "${note.id}.json"; var notePath = p.join(tempDir.path, filename); @@ -157,10 +194,28 @@ class Backup { encoder.addFile(File(notePath), filename); } + // write note filenames var notesPath = p.join(tempDir.path, NOTES_FILENAME); File(notesPath) .writeAsStringSync(jsonEncode(notes.map((n) => n.id).toList())); encoder.addFile(File(notesPath), NOTES_FILENAME); + + // collections + for (NoteCollection c in collections) { + var filename = "${c.id}.json"; + var collectionPath = p.join(tempDir.path, filename); + File(collectionPath).writeAsStringSync(jsonEncode(c.toJson())); + + encoder.addFile(File(collectionPath), filename); + } + + // write sets + var setsPath = p.join(tempDir.path, COLLECTIONS_FILENAME); + File(setsPath) + .writeAsStringSync(jsonEncode(collections.map((n) => n.id).toList())); + encoder.addFile(File(setsPath), COLLECTIONS_FILENAME); + + // close encoder.close(); return path; } diff --git a/lib/dialogs/initial_import_dialog.dart b/lib/dialogs/initial_import_dialog.dart index 3d1de4f..0649fc1 100644 --- a/lib/dialogs/initial_import_dialog.dart +++ b/lib/dialogs/initial_import_dialog.dart @@ -1,6 +1,7 @@ import 'dart:convert'; import 'package:flutter/material.dart'; +import 'package:sound/backup.dart'; import 'package:sound/local_storage.dart'; import 'package:sound/model.dart'; import 'package:flutter/services.dart' show rootBundle; @@ -13,22 +14,34 @@ Future> getExampleNotes() async { } showInitialImportDialog( - BuildContext context, ValueChanged> onDone) async { + BuildContext context, ValueChanged onDone) async { List exampleNotes = await getExampleNotes(); - showSelectNotesImportDialog(context, onDone, exampleNotes); + + showSelectNotesImportDialog( + context, onDone, BackupData(notes: exampleNotes, collections: [])); } showSelectNotesImportDialog( - BuildContext context, ValueChanged> onDone, List notes, + BuildContext context, ValueChanged onDone, BackupData backup, {String title = "Would you like to import any of these example songs?"}) async { showSelectNotesDialog(context, (List selected) async { + List noteIds = selected.map((n) => n.id).toList(); + for (Note note in selected) { await LocalStorage().syncNote(note); Future.delayed(Duration(milliseconds: 50)); } - onDone(selected); - }, onDone, notes, title: title); + + for (NoteCollection collection in backup.collections) { + // remove all notes that where not imported + collection.notes.removeWhere((note) => !noteIds.contains(note.id)); + await LocalStorage().syncCollection(collection); + Future.delayed(Duration(milliseconds: 50)); + } + + onDone(backup); + }, () {}, backup.notes, title: title); } typedef NoteListCallback = Future Function(List); @@ -63,6 +76,8 @@ showSelectNotesDialog(BuildContext context, NoteListCallback onApply, barrierDismissible: false, builder: (context) { return StatefulBuilder(builder: (context, setState) { + var width = MediaQuery.of(context).size.width; + return Center( child: AlertDialog( titlePadding: EdgeInsets.all(16), @@ -70,22 +85,28 @@ showSelectNotesDialog(BuildContext context, NoteListCallback onApply, title: Text(title), content: isImporting ? Center(child: CircularProgressIndicator()) - : ListView.builder( - itemBuilder: (context, index) { - Note note = notes[index]; - return CheckboxListTile( - activeColor: Theme.of(context).accentColor, - value: checked[note], - onChanged: (v) { - setState(() => checked[note] = v); - }, - title: ListTile( - title: Text(note.title), - subtitle: Text(note.artist), - )); - }, - itemCount: notes.length, - ), + : Container( + width: width, + height: 400, + child: ListView.builder( + itemBuilder: (context, index) { + Note note = notes[index]; + return CheckboxListTile( + activeColor: Theme.of(context).accentColor, + value: checked[note], + onChanged: (v) { + setState(() => checked[note] = v); + }, + title: ListTile( + title: Text(note.hasEmptyTitle + ? EMPTY_TEXT + : note.title), + subtitle: Text( + note.artist == null ? "" : note.artist), + )); + }, + itemCount: notes.length, + )), actions: isImporting ? [] : [ @@ -93,7 +114,7 @@ showSelectNotesDialog(BuildContext context, NoteListCallback onApply, child: Text("Cancel"), onPressed: _onCancel, ), - TextButton( + ElevatedButton( child: Text("Import"), onPressed: () { setState(() => isImporting = true); diff --git a/lib/export.dart b/lib/export.dart index a9fd034..995009f 100644 --- a/lib/export.dart +++ b/lib/export.dart @@ -29,7 +29,9 @@ class Exporter { static Future export(Note note, ExportType t) async { if (note.artist == null) { Settings settings = await LocalStorage().getSettings(); - note.artist = settings.name; + if (settings != null) { + note.artist = settings.name; + } } switch (t) { @@ -46,6 +48,7 @@ class Exporter { static Future exportShare(Note note, ExportType t) async { String path = await export(note, t); + print("export to $path"); await FlutterShare.shareFile( title: '${note.title}.${getExtension(t)}', text: 'Sharing ${note.title} from SOUND', diff --git a/lib/settings.dart b/lib/settings.dart index 4b133ad..064f65a 100644 --- a/lib/settings.dart +++ b/lib/settings.dart @@ -12,6 +12,7 @@ import "backup.dart"; import 'db.dart'; import 'package:flutter_share/flutter_share.dart'; import 'package:path/path.dart' as p; +import 'package:flutter_file_dialog/flutter_file_dialog.dart'; class Settings extends StatefulWidget { final Function onMenuPressed; @@ -147,26 +148,43 @@ class SettingsState extends State with StoreWatcherMixin { ); } - _onExport() async { - String path = await Backup().exportZip(await LocalStorage().getNotes()); + _onBackup() async { + String path = await Backup().exportZip( + await LocalStorage().getNotes(), await LocalStorage().getCollections()); showSnack(_globalKey.currentState, "Exported zip to $path"); String filename = p.basename(path); - await FlutterShare.shareFile( - title: filename, text: 'Share backup zip', filePath: path); + + final params = SaveFileDialogParams(sourceFilePath: path); + final filePath = await FlutterFileDialog.saveFile(params: params); + print(filePath); + + // await FlutterShare.shareFile( + // title: filename, text: 'Share backup zip', filePath: path); } _onImport() async { try { - List notes = await Backup().import(); - for (Note note in notes) { + BackupData backup = await Backup().import(); + var noteMapping = {}; + for (Note note in backup.notes) { + var newId = Uuid().v4(); + noteMapping[note.id] = newId; // update id - note.id = Uuid().v4(); + note.id = newId; //await LocalStorage().syncNote(note); } - showSelectNotesImportDialog(context, (List restoredNotes) { + + for (NoteCollection c in backup.collections) { + c.notes = c.notes.map((Note n) { + n.id = noteMapping[n.id]; + return n; + }).toList(); + } + + showSelectNotesImportDialog(context, (BackupData data) { showSnack(_globalKey.currentState, - "Successfully restored ${restoredNotes.length} notes"); - }, notes, title: "Which songs would you like to restore?"); + "Successfully restored ${data.notes.length} notes"); + }, backup, title: "Which songs would you like to restore?"); } on ImportException { showSnack(_globalKey.currentState, "Error while importing zip"); } @@ -178,9 +196,9 @@ class SettingsState extends State with StoreWatcherMixin { _themeItem(), _audioFormatItem(), SizedBox(height: 10), - RaisedButton(child: Text("Backup"), onPressed: _onExport), + ElevatedButton(child: Text("Backup"), onPressed: _onBackup), SizedBox(height: 10), - RaisedButton(child: Text("Restore"), onPressed: _onImport), + ElevatedButton(child: Text("Restore"), onPressed: _onImport), SizedBox(height: 10), ]; From e698602717ab934dc84e5ca4f982c320c293f451 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Mon, 14 Jun 2021 19:16:50 +0200 Subject: [PATCH 018/146] Use active notes Add NoteSearchView Add SetTwoPerRow --- lib/collections.dart | 40 ++++-- lib/model.dart | 3 + lib/note_search_view.dart | 270 ++++++++++++++++++++++++++++++++++++++ lib/storage.dart | 7 + 4 files changed, 306 insertions(+), 14 deletions(-) create mode 100644 lib/note_search_view.dart diff --git a/lib/collections.dart b/lib/collections.dart index 8feb352..bbe836d 100644 --- a/lib/collections.dart +++ b/lib/collections.dart @@ -6,6 +6,7 @@ import 'package:sound/dialogs/choose_note_dialog.dart'; import 'package:sound/local_storage.dart'; import 'package:sound/model.dart'; import 'package:sound/collections_store.dart'; +import 'package:sound/note_search_view.dart'; import 'package:sound/utils.dart'; class NoteCollectionItemModel { @@ -132,7 +133,7 @@ class NoteCollectionItem extends StatelessWidget { onTap: onTap, onLongPress: onLongPress, title: Text(this.collection.title), - trailing: Text(this.collection.notes.length.toString()), + trailing: Text(this.collection.activeNotes.length.toString()), tileColor: isSelected ? getSelectedCardColor(context) : null, subtitle: this.collection.description == null ? Container() @@ -229,28 +230,39 @@ class _CollectionEditorState extends State floatingActionButtonPressed() async { // add a note to this collection var notes = await LocalStorage().getNotes(); - showAddNotesDialog( - context: context, - notes: notes, - preselected: store.collection.notes, - onImport: (notes) async { - setNotesOfCollection(notes); - }); + + Navigator.push( + context, + new MaterialPageRoute( + builder: (context) => NoteSearchViewLoader( + collection: store.collection, + onAddNotes: (notes) {}, + ))); + + // showAddNotesDialog( + // context: context, + // notes: notes, + // preselected: store.collection.notes, + // onImport: (notes) async { + // setNotesOfCollection(notes); + // }); } @override Widget build(BuildContext context) { var notes = []; - for (var i = 0; i < store.collection.notes.length; i++) { - if (!dismissables.containsKey(store.collection.notes[i])) - dismissables[store.collection.notes[i]] = GlobalKey(); + var activeNotes = store.collection.activeNotes; + + for (var i = 0; i < activeNotes.length; i++) { + if (!dismissables.containsKey(activeNotes[i])) + dismissables[activeNotes[i]] = GlobalKey(); bool showMoveUp = (i != 0); - bool showMoveDown = (i != (store.collection.notes.length - 1)); + bool showMoveDown = (i != (activeNotes.length - 1)); notes.add(CollecitonNoteListItem( idx: i + 1, - globalKey: dismissables[store.collection.notes[i]], - note: store.collection.notes[i], + globalKey: dismissables[activeNotes[i]], + note: activeNotes[i], moveDown: showMoveDown, moveUp: showMoveUp)); } diff --git a/lib/model.dart b/lib/model.dart index ac42f7d..7b2ed9e 100644 --- a/lib/model.dart +++ b/lib/model.dart @@ -364,6 +364,9 @@ class NoteCollection { this.createdAt, this.lastModified}); + List get activeNotes => + notes.where((element) => !element.discarded).toList(); + factory NoteCollection.empty() { return NoteCollection( id: Uuid().v4(), diff --git a/lib/note_search_view.dart b/lib/note_search_view.dart new file mode 100644 index 0000000..cd8946c --- /dev/null +++ b/lib/note_search_view.dart @@ -0,0 +1,270 @@ +import 'package:flutter/material.dart'; +import 'package:sound/dialogs/color_picker_dialog.dart'; +import 'package:sound/dialogs/initial_import_dialog.dart'; +import 'package:sound/note_views/appbar.dart'; +import 'package:sound/note_views/seach.dart'; +import 'package:tuple/tuple.dart'; +import 'local_storage.dart'; +import 'file_manager.dart'; +import 'note_list.dart'; +import 'storage.dart'; +import 'package:flutter_flux/flutter_flux.dart'; +import 'dart:ui'; +import 'note_editor.dart'; +import 'model.dart'; +//import 'recorder.dart'; +import 'db.dart'; + +// search for notes +// have a bottom bar that has a list of all notes to add (as well remove notes from this list of notes to add) +// bottom bar can have round corners +// TODO: Back button always present, but with a simple dialog box asking wheather you actually want to leave or not +// maybe round the dialog boxes at the corners + +class NoteSearchViewLoader extends StatelessWidget { + final NoteCollection collection; + final ValueChanged> onAddNotes; + const NoteSearchViewLoader({this.collection, this.onAddNotes, Key key}) + : super(key: key); + + @override + Widget build(BuildContext context) { + var builder = FutureBuilder( + builder: (context, AsyncSnapshot> snap) { + if (!snap.hasData) + return CircularProgressIndicator(); + else { + // add all notes that are active and note already part of this collection + DB().setNotes(snap.data + .where((element) => collection.notes.indexOf(element) == -1) + .toList()); + + return _NoteSearchView( + collection: collection, onAddNotes: onAddNotes); + } + }, + future: LocalStorage().getActiveNotes()); + return Scaffold(body: builder); + } +} + +class _NoteSearchView extends StatefulWidget { + final NoteCollection collection; + final ValueChanged> onAddNotes; // function that will be called + + _NoteSearchView({this.collection, this.onAddNotes}); + + @override + State createState() { + throw _NoteSearchViewState(); + } +} + +class _NoteSearchViewState extends State<_NoteSearchView> + with StoreWatcherMixin, SingleTickerProviderStateMixin { + TextEditingController _controller; + StaticStorage storage; + // settings store, use view and set recording format + + bool isSearching = true; + bool filtersEnabled; + + bool get isFiltering => storage.filters.length > 0; + + @override + Widget build(BuildContext context) { + return _sliver(); + } + + @override + void dispose() { + _controller.dispose(); + super.dispose(); + } + + @override + void initState() { + super.initState(); + filtersEnabled = false; + _controller = TextEditingController(); + + // set notes note belonging already to this collection + storage = listenToStore(searchNoteStorageToken); + setTwoPerRow(true); + } + + _activeFiltersView() { + return ActiveFiltersView( + filters: storage.filters, removeFilter: removeFilter); + } + + _filtersView() { + List items = []; + + List, FilterBy, String>> filterOptions = [ + Tuple3(DB().uniqueKeys, FilterBy.KEY, "keys"), + Tuple3(DB().uniqueCapos, FilterBy.CAPO, "capos"), + Tuple3(DB().uniqueTunings, FilterBy.TUNING, "tunings"), + Tuple3(DB().uniqueLabels, FilterBy.LABEL, "labels"), + ]; + + for (Tuple3, FilterBy, String> option in filterOptions) { + if (option.item1.length >= 0) { + items.add(FilterOptionsView( + title: option.item3, + data: option.item1, + by: option.item2, + showMore: storage.showMore(option.item2), + mustShowMore: storage.mustShowMore(option.item2), + isFilterApplied: storage.isFilterApplied, + )); + } + } + + return Padding( + padding: EdgeInsets.only(left: 25, top: 60), + child: ListView.builder( + itemBuilder: (context, i) => items[i], + itemCount: items.length, + )); + } + + _searchActionButtons() { + return [ + IconButton( + icon: Icon(filtersEnabled ? Icons.arrow_upward : Icons.filter_list), + onPressed: () { + setState(() { + filtersEnabled = !filtersEnabled; + }); + }) + ]; + } + + _sliverNoteSelectionAppBar() { + print((storage.selectedNotes + .map((e) => e.starred) + .toList() + .length + .toDouble() / + storage.selectedNotes.length.toDouble())); + + return SliverAppBar( + pinned: true, + leading: IconButton( + icon: Icon(Icons.clear), onPressed: () => clearSelection()), + title: Text(storage.selectedNotes.length.toString()), + actions: [ + IconButton( + icon: Icon(Icons.delete), + onPressed: () => discardAllSelectedNotes()), + ], + ); + } + + _onBackPressed() { + Navigator.of(context).pop(); + } + + _sliverAppBar() { + return SliverAppBar( + titleSpacing: 5.0, + actions: _searchActionButtons(), + flexibleSpace: (filtersEnabled) + ? _filtersView() + : (isFiltering ? _activeFiltersView() : Container()), + leading: IconButton( + icon: Icon(Icons.arrow_back), onPressed: () => _onBackPressed()), + title: Padding( + child: Center(child: _searchView()), + padding: EdgeInsets.only(left: 5)), + expandedHeight: + (isSearching && filtersEnabled) ? 370 : (isFiltering ? 100 : 0), + floating: false, + pinned: true, + ); + } + + _sliver() { + onTap(Note note) { + if (storage.isAnyNoteSelected()) { + triggerSelectNote(note); + } else { + Navigator.push(context, + new MaterialPageRoute(builder: (context) => NoteEditor(note))); + } + } + + onLongPress(Note note) { + triggerSelectNote(note); + } + + List noteList = []; + + if (storage.isAnyNoteStarred()) { + print("notes are starred"); + List items = storage.filteredNotes + .where((n) => !n.starred) + .map((n) => + NoteListItemModel(note: n, isSelected: storage.isSelected(n))) + .toList(); + + List starrtedItems = storage.filteredNotes + .where((n) => n.starred) + .map((n) => + NoteListItemModel(note: n, isSelected: storage.isSelected(n))) + .toList(); + + noteList = [ + SliverList( + delegate: SliverChildListDelegate([ + Padding( + padding: EdgeInsets.only(left: 16, top: 16), + child: Row(children: [ + Text("Starred", style: Theme.of(context).textTheme.caption), + Padding( + padding: EdgeInsets.only(left: 8), + child: Icon(Icons.star, size: 16)) + ])) + ])), + NoteList(true, storage.view, starrtedItems, onTap, onLongPress, + highlight: storage.search == "" ? null : storage.search.trim()), + SliverList( + delegate: SliverChildListDelegate([ + Padding( + padding: EdgeInsets.only(left: 16), + child: Text("Other", style: Theme.of(context).textTheme.caption)) + ])), + NoteList(true, storage.view, items, onTap, onLongPress, + highlight: storage.search == "" ? null : storage.search.trim()) + ]; + } else { + List items = storage.filteredNotes + .map((n) => + NoteListItemModel(note: n, isSelected: storage.isSelected(n))) + .toList(); + + noteList = [ + NoteList(true, storage.view, items, onTap, onLongPress, + highlight: storage.search == "" ? null : storage.search) + ]; + } + + SliverAppBar appBar = storage.isAnyNoteSelected() + ? _sliverNoteSelectionAppBar() + : _sliverAppBar(); + + return CustomScrollView( + slivers: [appBar]..addAll(noteList), + ); + } + + _searchView() { + return SearchTextView( + toggleIsSearching: () {}, + onChanged: (s) { + searchNotes(s); + }, + controller: _controller); + } +} diff --git a/lib/storage.dart b/lib/storage.dart index 5d7991d..6e911b2 100644 --- a/lib/storage.dart +++ b/lib/storage.dart @@ -163,6 +163,11 @@ class StaticStorage extends Store { trigger(); }); + setTwoPerRow.listen((value) { + _twoPerRow = value; + trigger(); + }); + _filters = []; _selectedNotes = []; _showMore = Map(); @@ -353,6 +358,7 @@ Action removeFilter = Action(); Action searchNotes = Action(); Action toggleShowMore = Action(); Action toggleChangeView = Action(); +Action setTwoPerRow = Action(); Action openSettings = Action(); //Action setUser = Action(); @@ -368,3 +374,4 @@ Action clearSelection = Action(); Action updateView = Action(); StoreToken storageToken = StoreToken(StaticStorage()); +StoreToken searchNoteStorageToken = StoreToken(StaticStorage()); From b01bd1a32963ab21ce5dd40481699fcd1bc2409f Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sat, 26 Jun 2021 23:06:40 +0200 Subject: [PATCH 019/146] Adding tab view - fixing multiple color bugs - change to looper reset - add sorting options for nodes - fixed notesearch view --- .vscode/launch.json | 17 ++++ lib/collection_editor_store.dart | 7 ++ lib/collections.dart | 20 ++--- lib/dialogs/add_to_collection_dialog.dart | 26 ++++-- lib/dialogs/initial_import_dialog.dart | 12 ++- lib/editor_views/additional_info.dart | 57 +++++++------ lib/home.dart | 28 ++++++- lib/local_storage.dart | 7 +- lib/looper.dart | 36 ++++----- lib/main.dart | 7 ++ lib/menu.dart | 13 ++- lib/model.dart | 74 +++++++++++++++-- lib/note_editor.dart | 99 ++++++++++++++++------- lib/note_search_view.dart | 38 +++++---- lib/note_views/appbar.dart | 90 ++++++++++++++++++++- lib/recorder_bottom_sheet.dart | 2 +- lib/recorder_store.dart | 79 +++++++++++------- lib/settings_store.dart | 14 ++++ lib/storage.dart | 75 ++++++++++++++--- 19 files changed, 534 insertions(+), 167 deletions(-) create mode 100644 .vscode/launch.json diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..c24767c --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,17 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "sketchord dev", + "request": "launch", + "type": "dart", + "args": [ + "--flavor", + "dev" + ] + } + ] +} \ No newline at end of file diff --git a/lib/collection_editor_store.dart b/lib/collection_editor_store.dart index 6239ec0..942f5a9 100644 --- a/lib/collection_editor_store.dart +++ b/lib/collection_editor_store.dart @@ -89,6 +89,12 @@ class CollectionEditorStore extends Store { trigger(); }); + addNotesToCollection.listen((List notes) async { + _collection.notes.addAll(notes); + await LocalStorage().syncCollection(_collection); + trigger(); + }); + setNotesOfCollection.listen((List notes) async { _collection.notes = notes; await LocalStorage().syncCollection(_collection); @@ -105,6 +111,7 @@ Action changeCollectionTitle = Action(); Action moveNoteDown = Action(); Action moveNoteUp = Action(); Action addNoteToCollection = Action(); +Action> addNotesToCollection = Action(); Action undoRemoveNoteFromCollection = Action(); Action toggleCollectionStarred = Action(); Action updateCollectionEditorView = Action(); diff --git a/lib/collections.dart b/lib/collections.dart index bbe836d..aeb5989 100644 --- a/lib/collections.dart +++ b/lib/collections.dart @@ -132,11 +132,13 @@ class NoteCollectionItem extends StatelessWidget { child: ListTile( onTap: onTap, onLongPress: onLongPress, - title: Text(this.collection.title), + title: Text( + this.collection.title == "" ? "EMPTY" : this.collection.title), trailing: Text(this.collection.activeNotes.length.toString()), tileColor: isSelected ? getSelectedCardColor(context) : null, - subtitle: this.collection.description == null - ? Container() + subtitle: this.collection.description == null || + this.collection.description == "" + ? Text("-") : (Text(this.collection.description)), )); } @@ -156,7 +158,8 @@ class SmallNoteCollectionItem extends StatelessWidget { bool get empty => ((collection.title == null || collection.title.trim() == "") && - (collection.description == null || collection.description.trim() == "")); + (collection.description == null || collection.description.trim() == "") && + collection.notes.length == 0); @override Widget build(BuildContext context) { @@ -229,14 +232,14 @@ class _CollectionEditorState extends State floatingActionButtonPressed() async { // add a note to this collection - var notes = await LocalStorage().getNotes(); - Navigator.push( context, new MaterialPageRoute( builder: (context) => NoteSearchViewLoader( collection: store.collection, - onAddNotes: (notes) {}, + onAddNotes: (List notes) { + addNotesToCollection(notes); + }, ))); // showAddNotesDialog( @@ -311,8 +314,7 @@ class _CollectionEditorState extends State return WillPopScope( onWillPop: () async { - if (store.collection.title.trim() == "" && - store.collection.description.trim() == "") { + if (store.collection.empty) { print("delete collection"); LocalStorage().deleteCollection(store.collection); } else { diff --git a/lib/dialogs/add_to_collection_dialog.dart b/lib/dialogs/add_to_collection_dialog.dart index 3f5adba..189f881 100644 --- a/lib/dialogs/add_to_collection_dialog.dart +++ b/lib/dialogs/add_to_collection_dialog.dart @@ -10,7 +10,9 @@ typedef FutureAddNoteToCollectionCallback = Future Function( showAddToCollectionDialog(BuildContext context, Note note) { Future onNew() async { - return NoteCollection.empty(); + NoteCollection collection = NoteCollection.empty(); + collection.notes.add(note); + return collection; } Future onAdd(NoteCollection collection) async { @@ -20,13 +22,17 @@ showAddToCollectionDialog(BuildContext context, Note note) { return collection; } - _showAddToCollectionDialog(context, "Add To Collection", onNew, onAdd, + _showAddToCollectionDialog(context, "Add To Set", onNew, onAdd, note, importButtonText: 'Add'); } -_showAddToCollectionDialog(BuildContext context, String title, - FutureNoteCollectionCallback onNew, FutureAddNoteToCollectionCallback onAdd, - {String newButtonText = 'Import as NEW', +_showAddToCollectionDialog( + BuildContext context, + String title, + FutureNoteCollectionCallback onNew, + FutureAddNoteToCollectionCallback onAdd, + Note note, + {String newButtonText = 'Create NEW', String importButtonText = "Import", bool openCollection = true, bool syncCollection = true}) async { @@ -81,7 +87,7 @@ _showAddToCollectionDialog(BuildContext context, String title, child: Text(newButtonText), onPressed: _onNew)), SizedBox(height: 10), Row(mainAxisAlignment: MainAxisAlignment.center, children: [ - Container(child: Text("-- or select a collection --")) + Container(child: Text("-- or select a set --")) ]), SizedBox(height: 15), Row(mainAxisSize: MainAxisSize.max, children: [ @@ -89,6 +95,14 @@ _showAddToCollectionDialog(BuildContext context, String title, value: selected, isDense: true, items: collections + .where((c) { + try { + c.notes.firstWhere((n) => n.id == note.id); + return false; + } catch (e) { + return true; + } + }) .map((e) => DropdownMenuItem( child: SizedBox( width: width - 152, diff --git a/lib/dialogs/initial_import_dialog.dart b/lib/dialogs/initial_import_dialog.dart index 0649fc1..f4434b0 100644 --- a/lib/dialogs/initial_import_dialog.dart +++ b/lib/dialogs/initial_import_dialog.dart @@ -5,6 +5,7 @@ import 'package:sound/backup.dart'; import 'package:sound/local_storage.dart'; import 'package:sound/model.dart'; import 'package:flutter/services.dart' show rootBundle; +import 'package:uuid/uuid.dart'; Future> getExampleNotes() async { String path = "assets/initial_data.json"; @@ -16,9 +17,14 @@ Future> getExampleNotes() async { showInitialImportDialog( BuildContext context, ValueChanged onDone) async { List exampleNotes = await getExampleNotes(); - - showSelectNotesImportDialog( - context, onDone, BackupData(notes: exampleNotes, collections: [])); + NoteCollection exampleCollection = NoteCollection.empty(); + exampleCollection.notes = exampleNotes; + exampleCollection.title = "Example Set"; + exampleCollection.description = "Your imported notes"; + exampleCollection.starred = true; + + showSelectNotesImportDialog(context, onDone, + BackupData(notes: exampleNotes, collections: [exampleCollection])); } showSelectNotesImportDialog( diff --git a/lib/editor_views/additional_info.dart b/lib/editor_views/additional_info.dart index da4b5ba..36b5521 100644 --- a/lib/editor_views/additional_info.dart +++ b/lib/editor_views/additional_info.dart @@ -51,34 +51,33 @@ class NoteEditorAdditionalInfo extends StatelessWidget { @override Widget build(BuildContext context) { - return Padding( - padding: EdgeInsets.only(left: 10, top: 10), - child: Wrap(runSpacing: 1, children: [ - _edit( - initial: note.tuning == null ? "" : note.tuning, - title: "Tuning", - hint: "Standard, Dadgad ...", - onChanged: changeTuning), - _edit( - initial: note.capo == null ? "" : note.capo.toString(), - title: "Capo", - hint: "7, 5 ...", - onChanged: changeCapo), - _edit( - initial: note.key == null ? "" : note.key.toString(), - title: "Key", - hint: "C Major, A Minor ...", - onChanged: changeKey), - _edit( - initial: note.label == null ? "" : note.label.toString(), - title: "Label", - hint: "Idea, Rock, Pop...", - onChanged: changeLabel), - _edit( - initial: note.artist == null ? "" : note.artist.toString(), - title: "Artist", - hint: "leave empty if you are the artist", - onChanged: changeArtist), - ])); + // EdgeInsets.only(left: 10, top: 10) + return Wrap(runSpacing: 1, children: [ + _edit( + initial: note.tuning == null ? "" : note.tuning, + title: "Tuning", + hint: "Standard, Dadgad ...", + onChanged: changeTuning), + _edit( + initial: note.capo == null ? "" : note.capo.toString(), + title: "Capo", + hint: "7, 5 ...", + onChanged: changeCapo), + _edit( + initial: note.key == null ? "" : note.key.toString(), + title: "Key", + hint: "C Major, A Minor ...", + onChanged: changeKey), + _edit( + initial: note.label == null ? "" : note.label.toString(), + title: "Label", + hint: "Idea, Rock, Pop...", + onChanged: changeLabel), + _edit( + initial: note.artist == null ? "" : note.artist.toString(), + title: "Artist", + hint: "leave empty if you are the artist", + onChanged: changeArtist), + ]); } } diff --git a/lib/home.dart b/lib/home.dart index f961ce4..57e87bf 100644 --- a/lib/home.dart +++ b/lib/home.dart @@ -3,6 +3,7 @@ import 'package:sound/dialogs/color_picker_dialog.dart'; import 'package:sound/dialogs/initial_import_dialog.dart'; import 'package:sound/note_views/appbar.dart'; import 'package:sound/note_views/seach.dart'; +import 'package:sound/settings_store.dart'; import 'package:tuple/tuple.dart'; import 'local_storage.dart'; import 'file_manager.dart'; @@ -32,7 +33,7 @@ class Home extends StatelessWidget { Widget build(BuildContext context) { Future.delayed(Duration(milliseconds: 1000), () async { bool initialStart = await LocalStorage().isInitialStart(); - initialStart = false; + //initialStart = false; if (initialStart) { showInitialImportDialog(context, (_) { LocalStorage().setInitialStartDone(); @@ -113,6 +114,13 @@ class HomeContentState extends State _controller = TextEditingController(); storage = listenToStore(storageToken); + LocalStorage().getSettings().then((Settings settings) { + if (settings != null) { + changeSortBy(settings.sortBy); + changeSortDirection(settings.sortDirection); + } + }); + // init filemanager FileManager(); } @@ -243,13 +251,27 @@ class HomeContentState extends State ); } + _sortingView() { + return SortingView( + by: storage.sortBy, + direction: storage.sortDirection, + onDirectionChange: (d) { + changeSortDirection(d); + setDefaultSortDirection(d); + }, + onSortByChange: (by) { + changeSortBy(by); + setDefaultSortBy(by); + }); + } + _sliverAppBar() { return SliverAppBar( titleSpacing: 5.0, actions: isSearching ? _searchActionButtons() : _listActionButtons(), flexibleSpace: (filtersEnabled && isSearching) ? _filtersView() - : (isFiltering ? _activeFiltersView() : Container()), + : (isFiltering ? _activeFiltersView() : _sortingView()), leading: isSearching ? IconButton( icon: Icon(Icons.arrow_back), onPressed: () => _clearSearch()) @@ -258,7 +280,7 @@ class HomeContentState extends State child: Center(child: _searchView()), padding: EdgeInsets.only(left: 5)), expandedHeight: - (isSearching && filtersEnabled) ? 370 : (isFiltering ? 100 : 0), + (isSearching && filtersEnabled) ? 370 : (isFiltering ? 100 : 80), floating: false, pinned: true, ); diff --git a/lib/local_storage.dart b/lib/local_storage.dart index 9fe392f..cfde84d 100644 --- a/lib/local_storage.dart +++ b/lib/local_storage.dart @@ -224,6 +224,8 @@ class LocalStorage { var data = collection.toJson(); data.remove('notes'); + print("collection contains ${collection.notes.length} notes"); + var db = await getDatabase(); var query = await db @@ -257,6 +259,7 @@ class LocalStorage { noteIds.remove(note.id); } } + // if any noteId left in list, remove entry from table for (var noteId in noteIds) { print("delete noteId: $noteId | collectionId: ${collection.id}"); @@ -265,8 +268,10 @@ class LocalStorage { whereArgs: [collection.id, noteId]); } + assert((await this._getNoteIdsByCollectionId(collection.id, db)).length == + collection.notes.length); + var collections = await getCollections(); - print("collections: ${collections.length}"); _collectionController.sink.add(collections); } diff --git a/lib/looper.dart b/lib/looper.dart index f3b88c7..ece679d 100644 --- a/lib/looper.dart +++ b/lib/looper.dart @@ -18,42 +18,37 @@ class Looper extends StatefulWidget { class _LooperState extends State with StoreWatcherMixin { RangeValues range; RecorderBottomSheetStore store; - ActionSubscription stopSubscription; @override void initState() { super.initState(); store = listenToStore(recorderBottomSheetStoreToken); range = store.loopRange; - - stopSubscription = stopAction.listen((event) { - setState(() { - range = null; - }); - }); } @override void dispose() { - stopSubscription.cancel(); super.dispose(); } - _onSaveLoop() { - Flushbar( - //title: "Hey Ninja", - message: "Saved ${range.start} to ${range.end}", - duration: Duration(seconds: 2), - )..show(context); - + _changeRangeValues(RangeValues values) { + print("CHANGE....."); AudioFile newFile = store.currentAudioFile; - newFile.loopRange = range; + newFile.loopRange = values; changeAudioFile(newFile); + + setLoopRange(values); + + if (values == null) { + setState(() { + range = null; + }); + } } _view() { var defaultRange = - RangeValues(0.0, store.currentLength.inSeconds.toDouble()); + RangeValues(0.0, store.currentLength.inMilliseconds.toDouble() / 1000); var lowerValue = range == null ? defaultRange.start : range.start; var upperValue = range == null ? defaultRange.end : range.end; @@ -66,8 +61,9 @@ class _LooperState extends State with StoreWatcherMixin { padding: EdgeInsets.only(right: 8), child: FlatButton( visualDensity: VisualDensity.compact, - child: Text("Save Loop"), - onPressed: (range == null) ? null : _onSaveLoop)) + child: Text("Reset Loop"), + onPressed: + (range != null) ? () => _changeRangeValues(null) : null)) ]), Text( "Looper:", @@ -77,7 +73,7 @@ class _LooperState extends State with StoreWatcherMixin { child: frs.RangeSlider( min: 0, onChangeEnd: (double endLowerValue, double endUpperValue) { - setLoopRange(RangeValues(endLowerValue, endUpperValue)); + _changeRangeValues(RangeValues(endLowerValue, endUpperValue)); }, max: (store.currentLength.inMilliseconds / 1000.0).toDouble(), showValueIndicator: true, diff --git a/lib/main.dart b/lib/main.dart index 34523bb..c46ecba 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -109,6 +109,11 @@ class AppState extends State with StoreWatcherMixin { cursorColor: mainColor, selectionHandleColor: mainColor), cardColor: Colors.grey.shade200, + colorScheme: ColorScheme.light().copyWith( + primary: mainColor, + secondary: Colors.white, + background: Colors.white, + surface: Colors.white), appBarTheme: ThemeData.light().appBarTheme.copyWith( color: appBarColor, textTheme: ThemeData.light().accentTextTheme), chipTheme: @@ -116,6 +121,8 @@ class AppState extends State with StoreWatcherMixin { indicatorColor: mainColor, accentColor: mainColor, highlightColor: mainColor, + buttonTheme: + ThemeData.dark().buttonTheme.copyWith(buttonColor: mainColor), sliderTheme: ThemeData.light().sliderTheme.copyWith( trackHeight: 4, thumbColor: mainColor, diff --git a/lib/menu.dart b/lib/menu.dart index 0b1522f..ad6e826 100644 --- a/lib/menu.dart +++ b/lib/menu.dart @@ -89,10 +89,17 @@ class _MenuState extends State with SingleTickerProviderStateMixin { //mainAxisAlignment: MainAxisAlignment.spaceAround, //crossAxisAlignment: CrossAxisAlignment.start, children: options - .map((e) => FlatButton.icon( + .map((e) => TextButton.icon( label: Text(e.name, - style: TextStyle(fontSize: 20)), - icon: Icon(e.icon), + style: Theme.of(context) + .textTheme + .button + .copyWith(fontSize: 20)), + icon: Icon(e.icon, + color: Theme.of(context) + .textTheme + .button + .color), onPressed: () => _switch(e.item), )) .toList()), diff --git a/lib/model.dart b/lib/model.dart index 7b2ed9e..0711697 100644 --- a/lib/model.dart +++ b/lib/model.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_audio_recorder/flutter_audio_recorder.dart'; +import 'package:sound/note_views/appbar.dart'; import 'package:uuid/uuid.dart'; import 'dart:io'; @@ -40,7 +41,7 @@ class AudioFile { this.lastModified, this.name, this.loopRange}) { - print("creating audio file with ${this.name} ${this.id}"); + //print("creating audio file with ${this.name} ${this.id}"); if (id == null) id = Uuid().v4().toString(); if (createdAt == null) createdAt = DateTime.now(); if (lastModified == null) lastModified = DateTime.now(); @@ -309,6 +310,50 @@ class Note { enum SettingsTheme { dark, light } enum EditorView { single, double } +enum SortBy { created, lastModified, az } +enum SortDirection { up, down } + +String serializeTheme(SettingsTheme theme) { + return theme == SettingsTheme.dark ? "dark" : "light"; +} + +String serializeEditorView(EditorView view) { + return view == EditorView.single ? "single" : "double"; +} + +String serializeAudioFormat(AudioFormat audioFormat) { + return audioFormat == AudioFormat.AAC ? "aac" : "wav"; +} + +String serializeSortDirection(SortDirection direction) { + return direction == SortDirection.up ? "up" : "down"; +} + +String serializeSortBy(SortBy by) { + switch (by) { + case SortBy.created: + return "created"; + case SortBy.lastModified: + return "lastModified"; + case SortBy.az: + return "az"; + default: + return "lastModified"; + } +} + +SortBy deserializeSortBy(String by) { + switch (by) { + case "created": + return SortBy.created; + case "lastModified": + return SortBy.lastModified; + case "az": + return SortBy.az; + default: + return SortBy.lastModified; + } +} class Settings { SettingsTheme theme; @@ -316,19 +361,25 @@ class Settings { AudioFormat audioFormat; // aac, wav String name; bool isInitialStart; + SortBy sortBy; + SortDirection sortDirection; Settings( {this.theme, this.view, this.audioFormat, this.name, - this.isInitialStart}); + this.isInitialStart, + this.sortBy, + this.sortDirection}); Map toJson() { return { - "theme": theme == SettingsTheme.dark ? "dark" : "light", - "view": view == EditorView.single ? "single" : "double", - "audioFormat": audioFormat == AudioFormat.AAC ? "aac" : "wav", + "theme": serializeTheme(theme), + "view": serializeEditorView(view), + "audioFormat": serializeAudioFormat(audioFormat), + "sortBy": serializeSortBy(sortBy), + "sortDirection": serializeSortDirection(sortDirection), "name": name, "isInitialStart": isInitialStart }; @@ -343,7 +394,15 @@ class Settings { isInitialStart: json.containsKey("isInitialStart") ? json['isInitialStart'] : false, audioFormat: - json["audioFormat"] == "aac" ? AudioFormat.AAC : AudioFormat.WAV); + json["audioFormat"] == "aac" ? AudioFormat.AAC : AudioFormat.WAV, + sortDirection: json.containsKey("sortDirection") + ? json['sortDirection'] == "up" + ? SortDirection.up + : SortDirection.down + : SortDirection.up, + sortBy: json.containsKey('sortBy') + ? deserializeSortBy(json['sortBy']) + : SortBy.lastModified); } } @@ -390,6 +449,9 @@ class NoteCollection { }; } + bool get empty => + title.trim() == "" && description.trim() == "" && notes.length == 0; + factory NoteCollection.fromJson(Map json) { return NoteCollection( id: json.containsKey("id") ? json['id'] : Uuid().v4(), diff --git a/lib/note_editor.dart b/lib/note_editor.dart index b34f259..d23dea5 100644 --- a/lib/note_editor.dart +++ b/lib/note_editor.dart @@ -38,13 +38,16 @@ class NoteEditor extends StatefulWidget { } } +enum TabType { structure, info, audio } + class NoteEditorState extends State with StoreWatcherMixin { RecorderBottomSheetStore recorderStore; NoteEditorStore store; GlobalKey _globalKey = GlobalKey(); List popupMenuActions = ["share", "copy", "add"]; - List popupMenuActionsLong = ["Share", "Copy", "Add To Collection"]; + List popupMenuActionsLong = ["Share", "Copy", "Add To Set"]; + bool useTabs = true; Map dismissables = {}; @@ -83,7 +86,7 @@ class NoteEditorState extends State _onFloatingActionButtonPress() { if (recorderStore.state == RecorderState.RECORDING) { - stopAction(); + stopAction(true); } else { startRecordingAction(); } @@ -147,11 +150,25 @@ class NoteEditorState extends State } } + _buildTabView(List items) { + return Container( + padding: EdgeInsets.all(16), + child: ListView.builder( + itemBuilder: (context, index) => items[index], + itemCount: items.length, + )); + } + @override Widget build(BuildContext context) { - List items = []; + // map widgets to tabs + Map> items = {}; + + items[TabType.audio] = []; + items[TabType.structure] = []; + items[TabType.info] = []; - items.add(NoteEditorTitle( + items[TabType.structure].add(NoteEditorTitle( title: store.note.title, onChange: changeTitle, allowEdit: true, @@ -164,21 +181,22 @@ class NoteEditorState extends State bool showMoveUp = (i != 0); bool showMoveDown = (i != (store.note.sections.length - 1)); - items.add(SectionListItem( + + items[TabType.structure].add(SectionListItem( globalKey: dismissables[store.note.sections[i]], section: store.note.sections[i], moveDown: showMoveDown, moveUp: showMoveUp)); } // add section item - items.add(AddSectionItem()); + items[TabType.structure].add(AddSectionItem()); // all additional info - items.add(NoteEditorAdditionalInfo(store.note)); + items[TabType.info].add(NoteEditorAdditionalInfo(store.note)); // audio files as stack - if (store.note.audioFiles.length > 0) - items.add(Padding( + if (store.note.audioFiles.length > 0 && !useTabs) + items[TabType.audio].add(Padding( padding: EdgeInsets.symmetric(vertical: 20), child: Text( 'Audio Files', @@ -186,7 +204,7 @@ class NoteEditorState extends State ))); store.note.audioFiles.asMap().forEach((int index, AudioFile f) { - items.add(AudioFileView( + items[TabType.audio].add(AudioFileView( file: f, index: index, onDelete: () => _onAudioFileDelete(f, index), @@ -234,15 +252,6 @@ class NoteEditorState extends State globalKey: _globalKey)); }); - List stackChildren = []; - - stackChildren.add(Container( - padding: EdgeInsets.all(16), - child: ListView.builder( - itemBuilder: (context, index) => items[index], - itemCount: items.length, - ))); - // bottom sheets bool showSheet = recorderStore.state == RecorderState.PAUSING || recorderStore.state == RecorderState.PLAYING || @@ -309,21 +318,53 @@ class NoteEditorState extends State popup, ]; + List categories = ["Structure", "Info", "Audio"]; + + List stackChildren = []; + if (!useTabs) { + stackChildren.add(_buildTabView(items[TabType.structure] + ..addAll(items[TabType.info]) + ..addAll(items[TabType.audio]))); + } + // will pop score return WillPopScope( onWillPop: () async { - stopAction(); + stopAction(true); return true; }, - child: Scaffold( - key: _globalKey, - appBar: AppBar( - //backgroundColor: store.note.color, - actions: actions, - ), - bottomSheet: - showSheet ? RecorderBottomSheet(key: Key("bottomSheet")) : null, - body: Container(child: Stack(children: stackChildren)))); + child: DefaultTabController( + length: 3, + child: Scaffold( + key: _globalKey, + appBar: AppBar( + //backgroundColor: store.note.color, + actions: actions, + bottom: new TabBar( + isScrollable: true, + tabs: useTabs + ? List.generate(categories.length, + (int index) { + return new Tab(text: categories[index]); + }) + : null), + ), + bottomSheet: showSheet + ? RecorderBottomSheet(key: Key("bottomSheet")) + : null, + body: useTabs + ? TabBarView( + children: List.generate(categories.length, + (int index) { + if (index == 0) { + return _buildTabView(items[TabType.structure]); + } else if (index == 1) { + return _buildTabView(items[TabType.info]); + } else { + return _buildTabView(items[TabType.audio]); + } + })) + : Container(child: Stack(children: stackChildren))))); } } diff --git a/lib/note_search_view.dart b/lib/note_search_view.dart index cd8946c..76e487c 100644 --- a/lib/note_search_view.dart +++ b/lib/note_search_view.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:sound/dialogs/color_picker_dialog.dart'; import 'package:sound/dialogs/initial_import_dialog.dart'; +import 'package:sound/note_viewer.dart'; import 'package:sound/note_views/appbar.dart'; import 'package:sound/note_views/seach.dart'; import 'package:tuple/tuple.dart'; @@ -35,9 +36,14 @@ class NoteSearchViewLoader extends StatelessWidget { return CircularProgressIndicator(); else { // add all notes that are active and note already part of this collection - DB().setNotes(snap.data - .where((element) => collection.notes.indexOf(element) == -1) - .toList()); + DB().setNotes(snap.data.where((element) { + try { + collection.notes.firstWhere((n) => n.id == element.id); + return false; + } catch (e) { + return true; + } + }).toList()); return _NoteSearchView( collection: collection, onAddNotes: onAddNotes); @@ -56,7 +62,7 @@ class _NoteSearchView extends StatefulWidget { @override State createState() { - throw _NoteSearchViewState(); + return _NoteSearchViewState(); } } @@ -93,6 +99,11 @@ class _NoteSearchViewState extends State<_NoteSearchView> setTwoPerRow(true); } + _clear() { + // clears the state of the view + resetStaticStorage(); + } + _activeFiltersView() { return ActiveFiltersView( filters: storage.filters, removeFilter: removeFilter); @@ -141,6 +152,12 @@ class _NoteSearchViewState extends State<_NoteSearchView> ]; } + _onOk() { + widget.onAddNotes(storage.selectedNotes); + _clear(); + Navigator.of(context).pop(); + } + _sliverNoteSelectionAppBar() { print((storage.selectedNotes .map((e) => e.starred) @@ -155,9 +172,7 @@ class _NoteSearchViewState extends State<_NoteSearchView> icon: Icon(Icons.clear), onPressed: () => clearSelection()), title: Text(storage.selectedNotes.length.toString()), actions: [ - IconButton( - icon: Icon(Icons.delete), - onPressed: () => discardAllSelectedNotes()), + IconButton(icon: Icon(Icons.check), onPressed: _onOk), ], ); } @@ -187,12 +202,7 @@ class _NoteSearchViewState extends State<_NoteSearchView> _sliver() { onTap(Note note) { - if (storage.isAnyNoteSelected()) { - triggerSelectNote(note); - } else { - Navigator.push(context, - new MaterialPageRoute(builder: (context) => NoteEditor(note))); - } + triggerSelectNote(note); } onLongPress(Note note) { @@ -261,7 +271,7 @@ class _NoteSearchViewState extends State<_NoteSearchView> _searchView() { return SearchTextView( - toggleIsSearching: () {}, + toggleIsSearching: (_) {}, onChanged: (s) { searchNotes(s); }, diff --git a/lib/note_views/appbar.dart b/lib/note_views/appbar.dart index 7406557..d9bd184 100644 --- a/lib/note_views/appbar.dart +++ b/lib/note_views/appbar.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:sound/db.dart'; +import 'package:sound/model.dart'; import 'package:sound/storage.dart'; typedef FilterByCallback = bool Function(FilterBy); @@ -132,7 +133,94 @@ class ActiveFiltersView extends StatelessWidget { }, )) ]))); - ; + } +} + +class SortingView extends StatelessWidget { + final ValueChanged onDirectionChange; + final ValueChanged onSortByChange; + final SortDirection direction; + final SortBy by; + + const SortingView({ + @required this.by, + @required this.direction, + @required this.onDirectionChange, + @required this.onSortByChange, + Key key, + }) : super(key: key); + + _onDirectionChange() { + if (direction == SortDirection.down) + onDirectionChange(SortDirection.up); + else + onDirectionChange(SortDirection.down); + } + + byText() { + switch (by) { + case SortBy.created: + return "Created"; + case SortBy.lastModified: + return "Last Modified"; + case SortBy.az: + return "AZ"; + default: + return "null"; + } + } + + _onSortByChange() { + switch (by) { + case SortBy.created: + onSortByChange(SortBy.lastModified); + break; + + case SortBy.lastModified: + onSortByChange(SortBy.az); + break; + + case SortBy.az: + onSortByChange(SortBy.created); + break; + default: + onSortByChange(SortBy.lastModified); + break; + } + } + + arrowOption(BuildContext context) { + return IconButton( + onPressed: _onDirectionChange, + icon: Icon( + direction == SortDirection.up + ? Icons.arrow_upward + : Icons.arrow_downward, + size: 20, + color: Theme.of(context).appBarTheme.textTheme.button.color, + ), + splashRadius: 5, + ); + } + + @override + Widget build(BuildContext context) { + return Padding( + padding: EdgeInsets.only(top: 70), + child: Container( + color: Theme.of(context).appBarTheme.backgroundColor, + child: Row(crossAxisAlignment: CrossAxisAlignment.start, children: [ + Expanded( + child: TextButton( + onPressed: _onSortByChange, + child: Text(byText(), + style: Theme.of(context).appBarTheme.textTheme.button)), + ), + Expanded( + child: arrowOption(context), + ), + ]), + )); } } diff --git a/lib/recorder_bottom_sheet.dart b/lib/recorder_bottom_sheet.dart index 73b8354..97e8535 100644 --- a/lib/recorder_bottom_sheet.dart +++ b/lib/recorder_bottom_sheet.dart @@ -30,7 +30,7 @@ class _BottomInfoState extends State } _onButtonPress() { - stopAction(); + stopAction(true); } @override diff --git a/lib/recorder_store.dart b/lib/recorder_store.dart index 9dad814..e1e6f27 100644 --- a/lib/recorder_store.dart +++ b/lib/recorder_store.dart @@ -68,8 +68,7 @@ class RecorderBottomSheetStore extends Store { Duration _recordTime; Duration get recordTime => _recordTime; - RangeValues _loopRange; - RangeValues get loopRange => _loopRange; + RangeValues get loopRange => _audioFile == null ? null : _audioFile.loopRange; // getters RecorderState get state => _state; @@ -84,19 +83,28 @@ class RecorderBottomSheetStore extends Store { AudioPlayer get player => _player; getDurationLoopEnd() { - if (_loopRange == null) return null; - return Duration(milliseconds: (_loopRange.end * 1000).floor()); + if (loopRange == null) return null; + return Duration(milliseconds: (loopRange.end * 1000).floor()); } getDurationLoopStart() { - if (_loopRange == null) return null; - return Duration(milliseconds: (_loopRange.start * 1000).floor()); + if (loopRange == null) return null; + return Duration(milliseconds: (loopRange.start * 1000).floor()); } - Future stopPlayer() async { - int res = await _player.stop(); - changePlayerPosition(Duration(seconds: 0)); - return res; + Future stopPlayer(bool force) async { + if (this.loopRange != null && !force) { + print("stop player with loop range: $loopRange"); + _state = RecorderState.PLAYING; + await _player.play(_currentPath, + isLocal: true, position: getDurationLoopStart()); + print("seek to start"); + return -10; + } else { + int res = await _player.stop(); + changePlayerPosition(Duration(seconds: 0)); + return res; + } } Future startPlayer(String path) async { @@ -104,9 +112,10 @@ class RecorderBottomSheetStore extends Store { // set length not yet available _player.onAudioPositionChanged.listen((pos) async { - if (_loopRange != null && pos >= getDurationLoopEnd()) { + if (loopRange != null && pos >= getDurationLoopEnd()) { pos = getDurationLoopStart(); await _player.seek(pos); + print("seek to start..."); } changePlayerPosition(pos); }); @@ -120,17 +129,20 @@ class RecorderBottomSheetStore extends Store { }); _state = RecorderState.PLAYING; - _player.onPlayerStateChanged.listen((AudioPlayerState event) { + _player.onPlayerStateChanged.listen((AudioPlayerState event) async { print("player state change $event"); }); - _player.onPlayerCompletion.listen((event) { + _player.onPlayerCompletion.listen((event) async { print("player completed"); - stopAction(); + stopAction(false); }); print("play me"); - int result = await _player.play(path, isLocal: true); + Duration startPosition = + (loopRange == null) ? Duration(seconds: 0) : getDurationLoopStart(); + int result = + await _player.play(path, isLocal: true, position: startPosition); trigger(); return result; } @@ -230,8 +242,7 @@ class RecorderBottomSheetStore extends Store { changePlayerPosition(Duration(seconds: 0)); _audioFile = f; _currentPath = f.path; - _loopRange = f.loopRange; - print("Loop Range: $_loopRange"); + print("Init Audio file with Loop Range: ${f.loopRange}"); startPlayer(f.path).then((t) { // _state = RecorderState.PLAYING; @@ -240,16 +251,18 @@ class RecorderBottomSheetStore extends Store { } }); - stopAction.listen((_) { - _loopRange = null; + stopAction.listen((force) { if (_state == RecorderState.RECORDING || _state == RecorderState.PLAYING || _state == RecorderState.PAUSING) { if (_state == RecorderState.PLAYING || _state == RecorderState.PAUSING) { - stopPlayer(); - _state = RecorderState.STOP; - trigger(); + stopPlayer(force).then((r) { + if (r != -10) { + _state = RecorderState.STOP; + trigger(); + } + }); } else { stopRecorder().then((_) { _state = RecorderState.STOP; @@ -314,15 +327,19 @@ class RecorderBottomSheetStore extends Store { }); setLoopRange.listen((range) async { - print("$range, $_loopRange"); - - if (_loopRange == null || - (_loopRange != null && range.start != _loopRange.start)) { - var start = Duration(milliseconds: (range.start * 1000).floor()); - await _player.seek(start); + if (range != null && + (loopRange == null || + (loopRange != null && range.start != loopRange.start))) { + if (_state == RecorderState.PLAYING) { + var start = Duration(milliseconds: (range.start * 1000).floor()); + await _player.seek(start); + } + } + print("New Loop Range: $range"); + if (this._audioFile != null) { + _audioFile.loopRange = range; + trigger(); } - _loopRange = range; - trigger(); }); setDefaultAudioFormat.listen((format) { @@ -339,7 +356,7 @@ Action startPlaybackAction = Action(); Action setRecorderState = Action(); Action setPath = Action(); -Action stopAction = Action(); +Action stopAction = Action(); Action pauseAction = Action(); Action resumeAction = Action(); Action setElapsed = Action(); diff --git a/lib/settings_store.dart b/lib/settings_store.dart index bb20077..1a5563b 100644 --- a/lib/settings_store.dart +++ b/lib/settings_store.dart @@ -47,6 +47,18 @@ class SettingsStore extends Store { trigger(); }); + setDefaultSortBy.listen((SortBy by) async { + _settings.sortBy = by; + await LocalStorage().syncSettings(_settings); + trigger(); + }); + + setDefaultSortDirection.listen((SortDirection d) async { + _settings.sortDirection = d; + await LocalStorage().syncSettings(_settings); + trigger(); + }); + setName.listen((name) async { _settings.name = name; await LocalStorage().syncSettings(_settings); @@ -70,5 +82,7 @@ Action setName = Action(); Action setDefaultView = Action(); Action setDefaultAudioFormat = Action(); Action updateSettings = Action(); +Action setDefaultSortDirection = Action(); +Action setDefaultSortBy = Action(); StoreToken settingsToken = StoreToken(SettingsStore()); diff --git a/lib/storage.dart b/lib/storage.dart index 6e911b2..2bdd07d 100644 --- a/lib/storage.dart +++ b/lib/storage.dart @@ -136,6 +136,12 @@ class StaticStorage extends Store { String _search = ""; String get search => _search; + SortBy _sortBy = SortBy.lastModified; + SortBy get sortBy => _sortBy; + + SortDirection _sortDirection = SortDirection.up; + SortDirection get sortDirection => _sortDirection; + bool mustShowMore(FilterBy by) { Map> f = _getFiltersByCategory(); if (f.keys.contains(by)) { @@ -212,6 +218,13 @@ class StaticStorage extends Store { } }); + resetStaticStorage.listen((_) { + _search = ""; + _selectedNotes.clear(); + _filters.clear(); + trigger(); + }); + removeAllSelectedNotes.listen((_) { for (Note note in _selectedNotes) { for (var audio in note.audioFiles) { @@ -274,6 +287,16 @@ class StaticStorage extends Store { // only update the view, data is stored in file_manager trigger(); }); + + changeSortDirection.listen((d) { + this._sortDirection = d; + trigger(); + }); + + changeSortBy.listen((by) { + this._sortBy = by; + trigger(); + }); } bool _isSearchValid(Note note) { @@ -334,20 +357,47 @@ class StaticStorage extends Store { return true; } - List get filteredNotes => DB().notes.where((Note note) { - if (_filters.length == 0 && (_search == null || _search == "")) - return true; + int _sort(Note a, Note b) { + if (_sortBy == SortBy.lastModified) { + if (_sortDirection == SortDirection.up) { + return b.lastModified.compareTo(a.lastModified); + } else { + return a.lastModified.compareTo(b.lastModified); + } + } else if (_sortBy == SortBy.created) { + if (_sortDirection == SortDirection.up) { + return b.createdAt.compareTo(a.createdAt); + } else { + return a.createdAt.compareTo(b.createdAt); + } + } else if (_sortBy == SortBy.az) { + if (_sortDirection == SortDirection.up) { + return b.title.compareTo(a.title); + } else { + return a.title.compareTo(b.title); + } + } + } + + List get filteredNotes { + List notes = DB().notes; + notes.sort(_sort); + + return notes.where((Note note) { + if (_filters.length == 0 && (_search == null || _search == "")) + return true; - if (_search != null && search != "") { - if (_filters.length == 0) { - return _isSearchValid(note); - } else { - return _isSearchValid(note) && _isAnyFilterValid(note); - } + if (_search != null && search != "") { + if (_filters.length == 0) { + return _isSearchValid(note); } else { - return _isAnyFilterValid(note); + return _isSearchValid(note) && _isAnyFilterValid(note); } - }).toList(); + } else { + return _isAnyFilterValid(note); + } + }).toList(); + } } Action> setNotes = Action(); @@ -372,6 +422,9 @@ Action colorAllSelectedNotes = Action(); Action> restoreNotes = Action(); Action clearSelection = Action(); Action updateView = Action(); +Action resetStaticStorage = Action(); +Action changeSortBy = Action(); +Action changeSortDirection = Action(); StoreToken storageToken = StoreToken(StaticStorage()); StoreToken searchNoteStorageToken = StoreToken(StaticStorage()); From e992beb3fdb5f2c4e8196b0dc4c14c7c43cdbe2e Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sat, 26 Jun 2021 23:27:34 +0200 Subject: [PATCH 020/146] Set floating action button color to white --- lib/home.dart | 2 -- lib/main.dart | 19 ++++++++++++------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/lib/home.dart b/lib/home.dart index 57e87bf..4c3f03a 100644 --- a/lib/home.dart +++ b/lib/home.dart @@ -61,8 +61,6 @@ class Home extends StatelessWidget { ); return Scaffold( floatingActionButton: FloatingActionButton( - foregroundColor: Colors.white, - backgroundColor: Theme.of(context).accentColor, onPressed: () => _floatingButtonPress(context), child: IconButton( onPressed: () => _floatingButtonPress(context), diff --git a/lib/main.dart b/lib/main.dart index c46ecba..674d07c 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -99,9 +99,12 @@ class AppState extends State with StoreWatcherMixin { //overlayColor: mainColor inactiveTrackColor: Colors.white), visualDensity: VisualDensity.adaptivePlatformDensity, - floatingActionButtonTheme: - FloatingActionButtonThemeData(backgroundColor: mainColor)); + floatingActionButtonTheme: FloatingActionButtonThemeData( + foregroundColor: appBarColor, + backgroundColor: ThemeData.dark().appBarTheme.backgroundColor)); + // foregroundColor: Theme.of(context).appBarTheme.backgroundColor, + // backgroundColor: Theme.of(context).appBarTheme.textTheme.button.color, final ThemeData light = ThemeData.light().copyWith( primaryColor: mainColor, textSelectionTheme: ThemeData().textSelectionTheme.copyWith( @@ -111,9 +114,9 @@ class AppState extends State with StoreWatcherMixin { cardColor: Colors.grey.shade200, colorScheme: ColorScheme.light().copyWith( primary: mainColor, - secondary: Colors.white, - background: Colors.white, - surface: Colors.white), + secondary: Colors.black54, + background: Colors.black54, + surface: Colors.black54), appBarTheme: ThemeData.light().appBarTheme.copyWith( color: appBarColor, textTheme: ThemeData.light().accentTextTheme), chipTheme: @@ -135,8 +138,10 @@ class AppState extends State with StoreWatcherMixin { activeTrackColor: mainColor, // inactive loop area inactiveTrackColor: appBarColor), visualDensity: VisualDensity.adaptivePlatformDensity, - floatingActionButtonTheme: - FloatingActionButtonThemeData(backgroundColor: mainColor)); + floatingActionButtonTheme: FloatingActionButtonThemeData( + foregroundColor: Colors.white70, + backgroundColor: appBarColor, + )); return MaterialApp( //debugShowCheckedModeBanner: false, From 46c4ef66da2d9e9ed9aaf2f6b9ab3c565ca67faf Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sat, 26 Jun 2021 23:51:12 +0200 Subject: [PATCH 021/146] Copy imported file --- lib/dialogs/audio_import_dialog.dart | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/dialogs/audio_import_dialog.dart b/lib/dialogs/audio_import_dialog.dart index 1fe5a7a..52656a0 100644 --- a/lib/dialogs/audio_import_dialog.dart +++ b/lib/dialogs/audio_import_dialog.dart @@ -8,6 +8,7 @@ import 'package:sound/file_manager.dart'; import 'package:sound/local_storage.dart'; import 'package:sound/model.dart'; import 'package:path/path.dart' as p; +import 'package:uuid/uuid.dart'; showAudioImportDialog(BuildContext context, List files) { // analyse the playability and duration of audio files @@ -58,8 +59,11 @@ _showAudioImportDialog(BuildContext context, List files) async { for (AudioFile f in files) { Directory filesDir = await Backup().getFilesDir(); - String newPath = p.join(filesDir.path, p.basename(f.path)); - AudioFile move = await FileManager().move(f, newPath, id: f.id); + String ext = p.extension(f.path); + String newBase = Uuid().v4() + ext; + String newPath = p.join(filesDir.path, newBase); + AudioFile move = await FileManager().copy(f, newPath, id: f.id); + move.name = p.basename(f.path); copied.add(move); } return copied; From 946ad5dbe0e1b969a454c5657ba7b3dd0920d9df Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 27 Jun 2021 01:36:52 +0200 Subject: [PATCH 022/146] Fix audio export / import - differentiate between listViewType and editorView - add duplicate option for audio files --- lib/backup.dart | 49 ++++++++++++ lib/collections.dart | 4 +- lib/dialogs/import_dialog.dart | 11 ++- lib/editor_store.dart | 2 +- lib/editor_views/audio.dart | 13 +++- lib/home.dart | 1 + lib/local_storage.dart | 12 ++- lib/model.dart | 29 +++++-- lib/note_editor.dart | 102 ++++++++++++++++--------- lib/note_viewer.dart | 135 +++++++++++++++++---------------- lib/settings.dart | 30 ++++++++ lib/settings_store.dart | 19 +++-- lib/storage.dart | 27 ++++++- lib/trash.dart | 1 + 14 files changed, 302 insertions(+), 133 deletions(-) diff --git a/lib/backup.dart b/lib/backup.dart index d25750f..1567608 100644 --- a/lib/backup.dart +++ b/lib/backup.dart @@ -6,11 +6,14 @@ import 'package:archive/archive_io.dart'; import 'package:file_picker/file_picker.dart'; import 'package:path_provider/path_provider.dart'; import 'package:permission_handler/permission_handler.dart'; +import 'package:sound/file_manager.dart'; +import 'package:uuid/uuid.dart'; import "model.dart"; import 'package:path/path.dart' as p; const NOTES_FILENAME = "notes.json"; const COLLECTIONS_FILENAME = "collections.json"; +const AUDIOFILES_FILENAME = "audioFiles.json"; class ImportException implements Exception { String errMsg() => 'cannot import file'; @@ -126,6 +129,37 @@ class Backup { } } } + + final audioFilesFile = archive.files + .firstWhere((a) => a.name == AUDIOFILES_FILENAME, orElse: () => null); + + if (audioFilesFile == null) { + print("cannot find audiofiles json"); + } else { + print("restoring audio files"); + Map audioFilesMap = + jsonDecode(decodeZipContent(audioFilesFile)); + audioFilesMap.forEach((internalName, path) { + final file = archive.files + .firstWhere((a) => a.name == internalName, orElse: () => null); + if (File(path).existsSync() || file == null) { + print( + "Error: cannot find audio file / already exists $internalName that maps to $path"); + } else { + try { + print( + "restoring audio file from ${file.nameOfLinkedFile} to $path"); + final data = file.content as List; + + File(path) + ..createSync(recursive: true) + ..writeAsBytesSync(data); + } catch (e) { + print("cannot restore file $internalName to $path"); + } + } + }); + } } catch (e) { print("unknwon error occurred $e"); throw new ImportException(); @@ -185,6 +219,7 @@ class Backup { return null; } + Map audioFilesMap = {}; // write notes for (Note note in notes) { var filename = "${note.id}.json"; @@ -192,6 +227,16 @@ class Backup { File(notePath).writeAsStringSync(jsonEncode(note.toJson())); encoder.addFile(File(notePath), filename); + + for (AudioFile f in note.audioFiles) { + File file = File(f.path); + String internalName = filename + Uuid().v4() + ".wav"; + + if (file.existsSync()) { + audioFilesMap[internalName] = f.path; + encoder.addFile(file, internalName); + } + } } // write note filenames @@ -215,6 +260,10 @@ class Backup { .writeAsStringSync(jsonEncode(collections.map((n) => n.id).toList())); encoder.addFile(File(setsPath), COLLECTIONS_FILENAME); + var audioFilesPath = p.join(tempDir.path, AUDIOFILES_FILENAME); + File(audioFilesPath).writeAsStringSync(jsonEncode(audioFilesMap)); + encoder.addFile(File(audioFilesPath), AUDIOFILES_FILENAME); + // close encoder.close(); return path; diff --git a/lib/collections.dart b/lib/collections.dart index aeb5989..061d32c 100644 --- a/lib/collections.dart +++ b/lib/collections.dart @@ -506,10 +506,10 @@ class Collections extends StatelessWidget { class CollectionsContent extends StatefulWidget { final Function onMenuPressed; - final EditorView view; + final NoteListType listType; CollectionsContent( - {Key key, this.onMenuPressed, this.view = EditorView.double}) + {Key key, this.onMenuPressed, this.listType = NoteListType.double}) : super(key: key); @override diff --git a/lib/dialogs/import_dialog.dart b/lib/dialogs/import_dialog.dart index b38808b..ca04c96 100644 --- a/lib/dialogs/import_dialog.dart +++ b/lib/dialogs/import_dialog.dart @@ -10,9 +10,12 @@ showImportDialog(BuildContext context, String title, FutureNoteCallback onNew, FutureNoteImportCallback onImport, {String newButtonText = 'Import as NEW', String importButtonText = "Import", + String ignoreNoteId, bool openNote = true, bool syncNote = true}) async { List notes = await LocalStorage().getActiveNotes(); + if (ignoreNoteId != null) + notes = notes.where((element) => element.id != ignoreNoteId).toList(); showDialog( context: context, @@ -20,7 +23,7 @@ showImportDialog(BuildContext context, String title, FutureNoteCallback onNew, // if selected is null (use empty new note) Note selected; - _open(Note note) { + _open(Note note) async { if (openNote) { Navigator.push(context, new MaterialPageRoute(builder: (context) => NoteEditor(note))); @@ -57,7 +60,7 @@ showImportDialog(BuildContext context, String title, FutureNoteCallback onNew, crossAxisAlignment: CrossAxisAlignment.stretch, children: [ Flexible( - child: RaisedButton( + child: ElevatedButton( child: Text(newButtonText), onPressed: _onNew)), SizedBox(height: 10), Row(mainAxisAlignment: MainAxisAlignment.center, children: [ @@ -82,14 +85,14 @@ showImportDialog(BuildContext context, String title, FutureNoteCallback onNew, ]); }), actions: [ - new FlatButton( + new TextButton( child: Text("Cancel"), onPressed: () { Navigator.of(context).pop(); }, ), // usually buttons at the bottom of the dialog - new FlatButton( + new ElevatedButton( child: new Text(importButtonText), onPressed: (selected != null) ? _import : null, ), diff --git a/lib/editor_store.dart b/lib/editor_store.dart index de43027..28eab24 100644 --- a/lib/editor_store.dart +++ b/lib/editor_store.dart @@ -37,7 +37,7 @@ class NoteEditorStore extends Store { hardDeleteAudioFile.listen((f) async { FileManager().delete(f); - _note.audioFiles.remove(f); + _note.audioFiles.removeWhere((af) => af.id == f.id); print("Removing: ${f.name}"); await LocalStorage().syncNoteAttr(_note, 'audioFiles'); diff --git a/lib/editor_views/audio.dart b/lib/editor_views/audio.dart index 5554a04..d2780da 100644 --- a/lib/editor_views/audio.dart +++ b/lib/editor_views/audio.dart @@ -43,12 +43,13 @@ class AudioFileView extends StatelessWidget { final AudioFile file; final int index; final GlobalKey globalKey; - final Function onDelete, onMove, onShare; + final Function onDelete, onMove, onShare, onDuplicate; const AudioFileView( {@required this.file, @required this.index, @required this.onDelete, + @required this.onDuplicate, @required this.onShare, @required this.onMove, @required this.globalKey, @@ -73,14 +74,14 @@ class AudioFileView extends StatelessWidget { controller: controller, ), actions: [ - new FlatButton( + new TextButton( child: Text("Cancel"), onPressed: () { Navigator.of(context).pop(); }, ), // usually buttons at the bottom of the dialog - new FlatButton( + new ElevatedButton( child: new Text("Apply"), onPressed: () { file.name = controller.value.text; @@ -122,6 +123,7 @@ class AudioFileView extends StatelessWidget { showAudioActionDialog(context, [ AudioAction(0, Icons.share, "Share"), AudioAction(1, Icons.move_to_inbox, "Move"), + AudioAction(2, Icons.copy, "Duplicate"), ], (action) { Navigator.of(context).pop(); @@ -130,6 +132,8 @@ class AudioFileView extends StatelessWidget { onShare(); } else if (action.id == 1) { onMove(); + } else if (action.id == 2) { + onDuplicate(); } }); // shareFile(file.path); @@ -139,8 +143,9 @@ class AudioFileView extends StatelessWidget { direction: DismissDirection.horizontal, key: GlobalKey(), background: Card( + margin: EdgeInsets.all(0), child: Container( - color: Theme.of(context).highlightColor, + color: Theme.of(context).scaffoldBackgroundColor, child: Row(children: [Icon(Icons.share)]), padding: EdgeInsets.all(10))), secondaryBackground: Card( diff --git a/lib/home.dart b/lib/home.dart index 4c3f03a..33202ca 100644 --- a/lib/home.dart +++ b/lib/home.dart @@ -116,6 +116,7 @@ class HomeContentState extends State if (settings != null) { changeSortBy(settings.sortBy); changeSortDirection(settings.sortDirection); + changeListType(settings.noteListType); } }); diff --git a/lib/local_storage.dart b/lib/local_storage.dart index cfde84d..42cbea4 100644 --- a/lib/local_storage.dart +++ b/lib/local_storage.dart @@ -109,7 +109,8 @@ class LocalStorage { } Future syncNote(Note note) async { - print("Syncing note ${note.id} with title ${note.title}"); + print( + "Syncing note ${note.id} with title ${note.title} and ${note.audioFiles} audio files"); final db = await getDatabase(); for (int i = 0; i < note.sections.length; i++) { @@ -121,6 +122,9 @@ class LocalStorage { conflictAlgorithm: ConflictAlgorithm.replace); } + // delete all old audio files with noteId + await db.delete(audioFileTable, where: "noteId = ?", whereArgs: [note.id]); + for (int i = 0; i < note.audioFiles.length; i++) { Map autdioFileData = note.audioFiles[i].toJson(); autdioFileData['idx'] = i; @@ -305,8 +309,10 @@ class LocalStorage { } Future _deleteAudioFile(AudioFile audioFile) async { - FileSystemEntity e = await audioFile.file.delete(); - return !e.existsSync(); + if (audioFile.file.existsSync()) { + FileSystemEntity e = await audioFile.file.delete(); + } + return !audioFile.file.existsSync(); } Future deleteNote(Note note) async { diff --git a/lib/model.dart b/lib/model.dart index 0711697..bca7670 100644 --- a/lib/model.dart +++ b/lib/model.dart @@ -309,7 +309,8 @@ class Note { } enum SettingsTheme { dark, light } -enum EditorView { single, double } +enum EditorView { onePage, tabs } +enum NoteListType { single, double } enum SortBy { created, lastModified, az } enum SortDirection { up, down } @@ -318,7 +319,11 @@ String serializeTheme(SettingsTheme theme) { } String serializeEditorView(EditorView view) { - return view == EditorView.single ? "single" : "double"; + return view == EditorView.onePage ? "onePage" : "tabs"; +} + +String serializeNoteListType(NoteListType view) { + return view == NoteListType.single ? "single" : "double"; } String serializeAudioFormat(AudioFormat audioFormat) { @@ -357,31 +362,34 @@ SortBy deserializeSortBy(String by) { class Settings { SettingsTheme theme; - EditorView view; // single, double + NoteListType noteListType; // single, double AudioFormat audioFormat; // aac, wav String name; + EditorView editorView; bool isInitialStart; SortBy sortBy; SortDirection sortDirection; Settings( {this.theme, - this.view, + this.noteListType, this.audioFormat, this.name, this.isInitialStart, this.sortBy, - this.sortDirection}); + this.sortDirection, + this.editorView}); Map toJson() { return { "theme": serializeTheme(theme), - "view": serializeEditorView(view), + "editorView": serializeEditorView(editorView), "audioFormat": serializeAudioFormat(audioFormat), "sortBy": serializeSortBy(sortBy), "sortDirection": serializeSortDirection(sortDirection), "name": name, - "isInitialStart": isInitialStart + "isInitialStart": isInitialStart, + "noteListType": serializeNoteListType(noteListType) }; } @@ -389,7 +397,12 @@ class Settings { return Settings( theme: json['theme'] == 'dark' ? SettingsTheme.dark : SettingsTheme.light, - view: json['view'] == "single" ? EditorView.single : EditorView.double, + editorView: json['editorView'] == "onePage" + ? EditorView.onePage + : EditorView.tabs, + noteListType: json['noteListType'] == "double" + ? NoteListType.double + : NoteListType.single, name: json.containsKey("name") ? json['name'] : null, isInitialStart: json.containsKey("isInitialStart") ? json['isInitialStart'] : false, diff --git a/lib/note_editor.dart b/lib/note_editor.dart index d23dea5..0603e53 100644 --- a/lib/note_editor.dart +++ b/lib/note_editor.dart @@ -27,10 +27,35 @@ import "recorder_store.dart"; import 'utils.dart'; -class NoteEditor extends StatefulWidget { +class NoteEditor extends StatelessWidget { final Note note; + final EditorView view; - NoteEditor(this.note); + NoteEditor(this.note, {this.view}); + + @override + Widget build(BuildContext context) { + if (view != null) return NoteEditorContent(note, view); + + return FutureBuilder( + builder: (BuildContext context, AsyncSnapshot snap) { + if (snap.hasData) { + EditorView v = + (snap.data == null) ? EditorView.tabs : snap.data.editorView; + return NoteEditorContent(note, v); + } else { + return CircularProgressIndicator(); + } + }, + future: LocalStorage().getSettings()); + } +} + +class NoteEditorContent extends StatefulWidget { + final Note note; + final EditorView view; + + NoteEditorContent(this.note, this.view); @override State createState() { @@ -40,14 +65,14 @@ class NoteEditor extends StatefulWidget { enum TabType { structure, info, audio } -class NoteEditorState extends State - with StoreWatcherMixin { +class NoteEditorState extends State + with StoreWatcherMixin { RecorderBottomSheetStore recorderStore; NoteEditorStore store; GlobalKey _globalKey = GlobalKey(); List popupMenuActions = ["share", "copy", "add"]; List popupMenuActionsLong = ["Share", "Copy", "Add To Set"]; - bool useTabs = true; + bool get useTabs => widget.view == EditorView.tabs; Map dismissables = {}; @@ -102,6 +127,7 @@ class NoteEditorState extends State // lets check whether the file was restored or not if (status == FlushbarStatus.DISMISSED && !store.note.audioFiles.contains(file)) { + print("hardly deleting audio file now"); hardDeleteAudioFile(file); } }, @@ -207,6 +233,10 @@ class NoteEditorState extends State items[TabType.audio].add(AudioFileView( file: f, index: index, + onDuplicate: () async { + AudioFile copy = await FileManager().copyToNew(f); + addAudioFile(copy); + }, onDelete: () => _onAudioFileDelete(f, index), onMove: () { showImportDialog(context, "Copy audio to", () async { @@ -246,6 +276,7 @@ class NoteEditorState extends State syncNote: false, // do not sync note, because otherwise this component gets updated twice importButtonText: "Copy", + ignoreNoteId: store.note.id, newButtonText: "Copy as NEW"); }, onShare: () => shareFile(f.path), @@ -327,44 +358,41 @@ class NoteEditorState extends State ..addAll(items[TabType.audio]))); } + Scaffold scaffold = Scaffold( + key: _globalKey, + appBar: AppBar( + //backgroundColor: store.note.color, + actions: actions, + bottom: useTabs + ? new TabBar( + isScrollable: true, + tabs: List.generate(categories.length, (int index) { + return new Tab(text: categories[index]); + })) + : null, + ), + bottomSheet: + showSheet ? RecorderBottomSheet(key: Key("bottomSheet")) : null, + body: useTabs + ? TabBarView( + children: List.generate(categories.length, (int index) { + if (index == 0) { + return _buildTabView(items[TabType.structure]); + } else if (index == 1) { + return _buildTabView(items[TabType.info]); + } else { + return _buildTabView(items[TabType.audio]); + } + })) + : Container(child: Stack(children: stackChildren))); + // will pop score return WillPopScope( onWillPop: () async { stopAction(true); return true; }, - child: DefaultTabController( - length: 3, - child: Scaffold( - key: _globalKey, - appBar: AppBar( - //backgroundColor: store.note.color, - actions: actions, - bottom: new TabBar( - isScrollable: true, - tabs: useTabs - ? List.generate(categories.length, - (int index) { - return new Tab(text: categories[index]); - }) - : null), - ), - bottomSheet: showSheet - ? RecorderBottomSheet(key: Key("bottomSheet")) - : null, - body: useTabs - ? TabBarView( - children: List.generate(categories.length, - (int index) { - if (index == 0) { - return _buildTabView(items[TabType.structure]); - } else if (index == 1) { - return _buildTabView(items[TabType.info]); - } else { - return _buildTabView(items[TabType.audio]); - } - })) - : Container(child: Stack(children: stackChildren))))); + child: DefaultTabController(length: 3, child: scaffold)); } } diff --git a/lib/note_viewer.dart b/lib/note_viewer.dart index 945daa1..3c0adb0 100644 --- a/lib/note_viewer.dart +++ b/lib/note_viewer.dart @@ -118,69 +118,73 @@ class _NoteViewerState extends State { }), ]; - List actions = [ - IconButton( - icon: Icon(Icons.play_arrow), - color: Theme.of(context).accentColor, - onPressed: () { - if (!isPlaying) { - setState(() { - isPlaying = true; - }); - Future.microtask(() async { - bool atEdge = false; - while (!atEdge && isPlaying) { - await _controller.animateTo(_controller.offset + offset, - duration: Duration(milliseconds: 50), curve: Curves.ease); - atEdge = _controller.position.atEdge; - } + List actions = []; + + if (widget.showZoomPlayback) { + actions.addAll([ + IconButton( + icon: Icon(Icons.play_arrow), + color: Theme.of(context).appBarTheme.textTheme.button.color, + onPressed: () { + if (!isPlaying) { setState(() { - isPlaying = false; + isPlaying = true; + }); + Future.microtask(() async { + bool atEdge = false; + while (!atEdge && isPlaying) { + await _controller.animateTo(_controller.offset + offset, + duration: Duration(milliseconds: 50), + curve: Curves.ease); + atEdge = _controller.position.atEdge; + } + setState(() { + isPlaying = false; + }); }); + } + }), + IconButton( + color: Theme.of(context).appBarTheme.textTheme.button.color, + icon: Icon(Icons.zoom_in), + onPressed: () { + setState(() { + textScaleFactor *= 1.05; }); - } - }), - IconButton( - color: Theme.of(context).accentColor, - icon: Icon(Icons.zoom_in), - onPressed: () { - setState(() { - textScaleFactor *= 1.05; - }); - _updateZoom(); - }), - IconButton( - color: Theme.of(context).accentColor, - icon: Icon(Icons.zoom_out), + _updateZoom(); + }), + IconButton( + color: Theme.of(context).appBarTheme.textTheme.button.color, + icon: Icon(Icons.zoom_out), + onPressed: () { + setState(() { + textScaleFactor *= 0.95; + }); + _updateZoom(); + }), + IconButton( + color: Theme.of(context).appBarTheme.textTheme.button.color, + icon: Icon(Icons.settings_backup_restore_outlined), onPressed: () { setState(() { - textScaleFactor *= 0.95; + textScaleFactor = 1.0; + offset = 1.0; }); _updateZoom(); - }), - IconButton( - color: Theme.of(context).accentColor, - icon: Icon(Icons.settings_backup_restore_outlined), - onPressed: () { - setState(() { - textScaleFactor = 1.0; - offset = 1.0; - }); - _updateZoom(); - _updateScrollOffset(); - }, - ) - ]; + _updateScrollOffset(); + }, + ) + ]); + } + // Widget overlay = Container( + // decoration: BoxDecoration( + // shape: BoxShape.rectangle, - Widget overlay = Container( - decoration: BoxDecoration( - shape: BoxShape.rectangle, - - //border: Border.all(width: 1, color: Theme.of(context).accentColor)), - ), - child: Row( - children: (isPlaying) ? playingActions : actions, - )); + // //border: Border.all(width: 1, color: Theme.of(context).accentColor)), + // ), + // child: Row( + // children: (isPlaying) ? playingActions : actions, + // )); if (widget.showAdditionalInformation) { items.add(NoteEditorAdditionalInfo( @@ -204,13 +208,14 @@ class _NoteViewerState extends State { }); })); } + if (widget.actions != null) { + actions.addAll(widget.actions); + } return Scaffold( - appBar: widget.actions == null - ? null - : AppBar( - actions: widget.actions, - ), + appBar: AppBar( + actions: actions, + ), bottomSheet: widget.showSheet ? RecorderBottomSheet(key: Key("bottomSheetViewer")) : null, @@ -223,11 +228,11 @@ class _NoteViewerState extends State { itemBuilder: (context, index) => items[index], itemCount: items.length, )), - Positioned( - child: widget.showZoomPlayback ? overlay : Container(), - top: 32, - right: 8, - ), + // Positioned( + // child: widget.showZoomPlayback ? overlay : Container(), + // top: 32, + // right: 8, + // ), ]), )); } diff --git a/lib/settings.dart b/lib/settings.dart index 064f65a..94c75cc 100644 --- a/lib/settings.dart +++ b/lib/settings.dart @@ -89,6 +89,35 @@ class SettingsState extends State with StoreWatcherMixin { )); } + _editorViewAsString() { + if (store.editorView == EditorView.onePage) { + return "One Page"; + } else if (store.editorView == EditorView.tabs) { + return "Tabs"; + } else + return ""; + } + + _toggleEditorView() { + if (store.editorView == EditorView.onePage) { + setDefaultEditorView(EditorView.tabs); + } else { + setDefaultEditorView(EditorView.onePage); + } + } + + _editorViewItem() { + return _wrapItem(Row( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + Expanded(child: Text("EditorView: ")), + RaisedButton( + child: Text(_editorViewAsString()), onPressed: _toggleEditorView), + ], + )); + } + _setName() { return _wrapItem(Row( crossAxisAlignment: CrossAxisAlignment.center, @@ -195,6 +224,7 @@ class SettingsState extends State with StoreWatcherMixin { _setName(), _themeItem(), _audioFormatItem(), + _editorViewItem(), SizedBox(height: 10), ElevatedButton(child: Text("Backup"), onPressed: _onBackup), SizedBox(height: 10), diff --git a/lib/settings_store.dart b/lib/settings_store.dart index 1a5563b..90e35e1 100644 --- a/lib/settings_store.dart +++ b/lib/settings_store.dart @@ -2,6 +2,7 @@ import 'package:flutter_audio_recorder/flutter_audio_recorder.dart'; import 'package:flutter_flux/flutter_flux.dart' show Action, Store, StoreToken; import 'package:sound/local_storage.dart'; import 'package:sound/model.dart'; +import 'package:sound/note_list.dart'; import 'package:sound/recorder_store.dart'; class SettingsStore extends Store { @@ -11,12 +12,13 @@ class SettingsStore extends Store { audioFormat: AudioFormat.WAV, theme: SettingsTheme.dark, name: null, - view: EditorView.single); + noteListType: NoteListType.double, + editorView: EditorView.tabs); // getter SettingsTheme get theme => _settings.theme; - EditorView get view => _settings.view; + EditorView get editorView => _settings.editorView; AudioFormat get audioFormat => _settings.audioFormat; String get name => _settings.name; @@ -41,8 +43,14 @@ class SettingsStore extends Store { trigger(); }); - setDefaultView.listen((view) async { - _settings.view = view; + setDefaultNoteListType.listen((listType) async { + _settings.noteListType = listType; + await LocalStorage().syncSettings(_settings); + trigger(); + }); + + setDefaultEditorView.listen((view) async { + _settings.editorView = view; await LocalStorage().syncSettings(_settings); trigger(); }); @@ -79,7 +87,8 @@ class SettingsStore extends Store { Action toggleTheme = Action(); Action setName = Action(); -Action setDefaultView = Action(); +Action setDefaultNoteListType = Action(); +Action setDefaultEditorView = Action(); Action setDefaultAudioFormat = Action(); Action updateSettings = Action(); Action setDefaultSortDirection = Action(); diff --git a/lib/storage.dart b/lib/storage.dart index 2bdd07d..1aff264 100644 --- a/lib/storage.dart +++ b/lib/storage.dart @@ -1,4 +1,5 @@ import 'package:flutter_flux/flutter_flux.dart'; +import 'package:sound/settings_store.dart'; import 'package:sound/utils.dart'; import 'local_storage.dart'; import 'file_manager.dart'; @@ -166,6 +167,11 @@ class StaticStorage extends Store { toggleChangeView.listen((_) { _twoPerRow = !_twoPerRow; + if (_twoPerRow) { + setDefaultNoteListType(NoteListType.double); + } else { + setDefaultNoteListType(NoteListType.single); + } trigger(); }); @@ -289,13 +295,25 @@ class StaticStorage extends Store { }); changeSortDirection.listen((d) { - this._sortDirection = d; - trigger(); + if (this._sortDirection != d) { + this._sortDirection = d; + trigger(); + } }); changeSortBy.listen((by) { - this._sortBy = by; - trigger(); + if (_sortBy != by) { + this._sortBy = by; + trigger(); + } + }); + + changeListType.listen((event) { + var twoPerRow = (event == NoteListType.single) ? false : true; + if (twoPerRow != _twoPerRow) { + _twoPerRow = twoPerRow; + trigger(); + } }); } @@ -425,6 +443,7 @@ Action updateView = Action(); Action resetStaticStorage = Action(); Action changeSortBy = Action(); Action changeSortDirection = Action(); +Action changeListType = Action(); StoreToken storageToken = StoreToken(StaticStorage()); StoreToken searchNoteStorageToken = StoreToken(StaticStorage()); diff --git a/lib/trash.dart b/lib/trash.dart index 7c9e5d3..db150a8 100644 --- a/lib/trash.dart +++ b/lib/trash.dart @@ -60,6 +60,7 @@ class _TrashState extends State { } setState(() { notes.removeWhere((n) => isSelected(n)); + selectedNotes = []; }); } else if (action == 'delete_all') { for (Note note in notes) { From 3341d8242aa488e94a9edf9240a98d357ff7123f Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 27 Jun 2021 14:36:38 +0200 Subject: [PATCH 023/146] Add launcher icons - fix recorder bugs --- .../src/dev/res/mipmap-hdpi/ic_launcher.png | Bin 4009 -> 5265 bytes .../src/dev/res/mipmap-mdpi/ic_launcher.png | Bin 2766 -> 3646 bytes .../src/dev/res/mipmap-xhdpi/ic_launcher.png | Bin 5421 -> 6982 bytes .../src/dev/res/mipmap-xxhdpi/ic_launcher.png | Bin 8381 -> 10533 bytes .../dev/res/mipmap-xxxhdpi/ic_launcher.png | Bin 11334 -> 13680 bytes assets/launcher_icon/dev-icon.png | Bin 37004 -> 47526 bytes .../AppIcon-dev-1024x1024@1x.png | Bin 93281 -> 101580 bytes .../AppIcon-dev-20x20@1x.png | Bin 895 -> 1379 bytes .../AppIcon-dev-20x20@2x.png | Bin 2091 -> 2831 bytes .../AppIcon-dev-20x20@3x.png | Bin 3478 -> 4503 bytes .../AppIcon-dev-29x29@1x.png | Bin 1530 -> 2049 bytes .../AppIcon-dev-29x29@2x.png | Bin 3421 -> 4426 bytes .../AppIcon-dev-29x29@3x.png | Bin 5099 -> 6475 bytes .../AppIcon-dev-40x40@1x.png | Bin 2091 -> 2831 bytes .../AppIcon-dev-40x40@2x.png | Bin 4412 -> 5897 bytes .../AppIcon-dev-40x40@3x.png | Bin 6826 -> 8676 bytes .../AppIcon-dev-60x60@2x.png | Bin 6826 -> 8676 bytes .../AppIcon-dev-60x60@3x.png | Bin 10659 -> 12869 bytes .../AppIcon-dev-76x76@1x.png | Bin 4378 -> 5611 bytes .../AppIcon-dev-76x76@2x.png | Bin 9164 -> 11139 bytes .../AppIcon-dev-83.5x83.5@2x.png | Bin 9708 -> 11934 bytes lib/dialogs/color_picker_dialog.dart | 4 +- lib/dialogs/export_dialog.dart | 4 +- lib/editor_views/additional_info.dart | 4 +- lib/editor_views/section.dart | 2 +- lib/export_note.dart | 4 +- lib/local_storage.dart | 3 + lib/looper.dart | 31 ++-- lib/main.dart | 6 +- lib/model.dart | 17 ++- lib/note_editor.dart | 35 ++++- lib/note_viewer.dart | 13 +- lib/recorder_bottom_sheet.dart | 141 ++++++++++++++---- lib/recorder_store.dart | 13 ++ lib/settings.dart | 12 +- lib/utils.dart | 29 ++++ pubspec.lock | 117 ++++++++++++--- 37 files changed, 349 insertions(+), 86 deletions(-) diff --git a/android/app/src/dev/res/mipmap-hdpi/ic_launcher.png b/android/app/src/dev/res/mipmap-hdpi/ic_launcher.png index 18b49c0b4a858d4c42bfc10d2f6c63b8abe2b1ef..c96b7e3911acd1e1cb28f8f84babf384c96dae89 100644 GIT binary patch literal 5265 zcmV;C6mIK@P)EX>4Tx0C=2zkv&MmKpe$iQ?*hm4t5ZA2vVIah>AFB6^c-y)C#RSm|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HI!Hs@X9PsG4P@ z;xRFkT@?eb=)xd^7)C^5raqTUCg3@~?&0I>U6f~epZjz4C^?e>K9P8q>4rtTK|H-_ z>74h8!>lMN#OK6g23?T&k?XR{Z=4Gb3p_Jyq*L?6VPdh+#&R38qM;H`5l0kNqkJLb zvch?bvs$jQ<~{ifLpg0_nd>x%5XT~xkc0>sRg_SMg($5WDJD|1AM@}JIQ}HLWO9|j z$gzM5R7j2={11M2Yvv~>+@w$p=zOv5j}aiS3p8rB{e5iPjT6BC3|wg~f29u0e3D*k zX^|tKcN@64ZfWu!aJd8YKk1SoIg+2Ikk13}XY@^3pzjt4uDQK6_i_3Fq^YaK4RCM> zj20++-Q(Te?Y;ebrrF;QhY@nGf5(`*000umNklNfahtvXx-dj7g6NGh#2FL=fj|ZMdq$B%LFPs0)JU#uf+#t3wb4~3 zWfMfnF(E+?xkBWU>5Ycvz>*zfIpqI2e0~RT_;Jl!ln*-ZXnKJPl^iZnDL8gR{Kg`d zU64*ta$AurP^cBL(Rc*I8qAD}%|^eBMuuGF$IItt;r96=h_8zHFIG1vMo} ze(fA!FfUta=sy#a>wqpO0^fV z?2&C=G&D3|#-`&L12@hcU|Z(u9gSYNwKTSB8^PY3Nf1M7TPMW{(rav$jDvTUWB*fw z^rNzPr(IixN$W(hYFUu;pCH?4+gS8k66oCJ!Tm%=-9WbCTjWbZe@(dw7;aCgwUTiB z{@U2b|I*KEZ2_L=vE+FopnouohNXNg@RgHy9}G)FyBw^#xRkL#;P~95eYX0MZYZtYWixWim zs4=^6;sgEU%J&FeAAK3^%E+BK2c8s0GX(MUEq&xFGNMtVub_%=T2GAO6=X!jGCBH8 zoE(Zm1W|IR7Ao0xP!a90;!jtQp&cB^DDQpVj!)M|ly=8*)#$}{eoTCh74cPLnFxIM zG2r9Xz|fxj1f`RcV_gzMF50=nFXWq?bFvMN6&@UVh$rNDGVTdd8Ft+sMqnhh|Q<^RQn|Y4fRh9Irhj) z`DHu94C97DJGe9x(PTA(u}2^>F$gANw2#Eg`3Z4rd;d>_*r8W6o#)en?%AS93`I`s zUivGcW3HM{G}^1m*BoaxogAw0!deXyLy@yPYX^xi4l@knP@f?yii%>H|ISc-%rT7S zd(8+QtB&}OaQwOV#Sk+LC<6bYEk<$gT_*5m$mc!jRmRYKx5Sq>)D7^GG3SLaU`*s6 zM`AX^WR(?kg_LI)rWy%VDI)5sxg_MIwwV^X|0AxsVx-k6M4O#>4d{9~elMM%qAN!Q zH58lXp;F^kUB)1t0kpgt$O)BLmkn?i?#nDQw|dajimH5lroo=LN`bS`&9677KEF8& z77t-Wh}1rNCLl7i_!~IJJYwp})k-RX}wxZecCrnhXCIohT+%Djb)k1C@gd}820;#PU zVo=+rrET$3i4A1SQOYr-X?ZVkPWS#4*!NFlP6?r-dh;b=?`=l3Kiij4cK#g>G(YOW z$)_B6@3ubntohZ!mPciiacT z%2&D-MuuK>;LR)C1=|?E$c#mQ$|=^=)YLZ<6a4Ej%yQ~XTw;xl91xP;JY7M~MaoL# zd_D1&J3n=sj?HH<^Y5xL?Qt&*lY%&Fu>%pG#{0;#a#U1|C*;`O2z8nuiX!?Bd6`!) zp+PVwW&|#*7oy@*XGn!2B%K6 z{#*wJJA&BvtQ%~31)6_7gasdr_8h>Q@y$8W5e<4G!r>h*upH%C;iyDK*plitPsYB zaOmdR*g#t(HLt`Yjn~95;m1P-SxJCT%wLJLY7vx94mFu_UVG1*GLC+nD{vckRm3No zfXGKMe=~=VRvU42=Md(E$`JU%ARm6GaBL<;m~F&r<%*c*={R%Pi1KQKjZ(QI@IuTq zXP7^7zcr(7)v_S2=rlqcFd}C1!G0;2ReP!s4n#7@ECge<434Vlfr^ZB%Zw0K9Oe)` zQUPJckTRq1AG9LaZA^}fg7#x;mPHBL-h2WoITTd8#ni&&I1qO^3X(%1n*FS0L2d^p ze^D3i_-!C30?82jgHN+T46_GH7H*+;>Z7~=Ih-qKjiN%13T}cA)(N@Kmq1R2yQLB& zBtBDef+%JiQA4rKsmKtSlVF%OEDyg|&b)tjZw@(92YKsWV@Bjq-6F*xREn}V(Z%oq z3wB)N5dz*UE$FsD>MqYH%GVEjHWA|Gn#X>5$x&}|NRdNZC~7!TL$U4IR1|*EFRH=S zW)7aWNeJ(9;tva4#hS|tp68j>Ul9wLOe~ldf#hv*65g08!_%Yh6lDBj3l@ElQ%n~| z!6=66&8yl8PuYxT^7S+MdsH^&Xg$xN!a5Hd!`@ zImsB8XH%c-!BpLCX-5-LB*eoPx>+g|=d{*4MqziN94fq{K4Hm&qVX?1zS!v=)Hex5 zP5WX5QF3xL)3*o(eX;a(yl*3vM9zE!rKjVS94|TpKq3BfBg({=9&$?V{B3D~55d8B}DW{}Vgjy(ET6uy8oN zc}+Q{JySTSmH-tgYNR!Xplouej?Q5r=9du)=}Jb^1yK|QF(TyjBYtIWJqT66=_ag;K|2VuXyvA3-!)SQ$q~EP95bx?6PDP=72VjYW$bO`QGU5YE4^J|2Ij z?gmnk#bQuur-eDFI}qbSvQKcu2^g@V`$Z02n+36Rms|CplA82y|2Q7}(ynBCwu`)2 z7jVEB%XB$1LNR1qp0e&@LsK1f`e4$d7*&=lh1YnhSd~)1NW|Me@DEndw7kS>;OKdN z(^WQ1Tq8wy-5C&E?LinCqd7t`$a|FQuRwYfBf}RRRhDb?OGoV38zEj5L3(`8ba9nl zzu`h7EDMG){IMAaUr43N%)6%wQ|=oEV^VxML1r_pjmS|my0+1FQ*>pE#PojZFEGHm zFf(+E)UOKEZI$Dw^NE|394h5BlNGYD_kk$?)gMle3~FpK;G)lgipz(vYF`C99yVjo z?@q#ePK1z?U+^AzxD5L@4eIWveio0Vdvl7@Wsau2RaX!liEfwUyay$WpVO!-mq(E| z$(5EFTBS0m{NmKsFw7i+#OsT#Py3l9S4^#A7>SLail}mp$qnDqeymG1!>x2-F=#{53UgCB;}A*sQF%0 zwp1G!zdHhZy@>|r%T#oBb@mEf_Alzj{#l_yJ z%!)$&%|rYTudgA-6Q?`A?Kkz8>Qquj^CpBB%yOmhnobru>eY?p47tVtY*z+y*1hRG zzjDcG>G^cRV+7SUqKFpDa-~8{_m5o80I2Skx-fE_)q+PLXE-P+=EUD*hHpAS|4&X_ zV`rp4r)RmUV*cAsPKFOPsw~%mmmN6%gjLaEREubycafro9|Tc*lN(HrUEaN(W2UU( zQE}y46{#T$H7uf(m4z|w*CUEGA3R)!wjY&)4aFCJMkpoU zxCmTdQMW_Ul58PzRDw#*a_xFWlH1=uQB;eC7&{>d=zEuC+P4j&op|3j%u2WGKY zt{5B~yoG+Qt*zbK*Vjk07W0y$^oLPoxzZ$n$|WT|p%C;?J9ZP&PCN}l(Y9DHM zC_+v+9Da$oHHHK^Yei9{#1su`>2X$b0yKMWEyKZQiibNa6{5tPxJ?&8_idG?qVe@arJme@w;NYo2oOGSUbN4=n)w@=srKJVCckkA0XH;3P zdcg#Z^3J&o<7yu>$5In?Tje1~kvY^pQp3faUw5LiQtPL03PzXZI<&nK$DTALg|sYX zroF|u5YE0QAcK<#IjK-7J)aWE);w^F4a|@^^-O`4ph9Lu@tnIv$+YZL!L3CFGL<>` z$jQd3o>Q1Le-^BJtndxwZ1Eg5q$|s{V|x&X-zj{eV4LA&&fegM*=B;8TUc>HC>CwA zGi@)sMiVOGOw%g4bC%_=plT~BkPDH+lWE5iKeVyfEI4-UF+8;5A-wqZi&)#T78{@3 zi0-$$m0(^vL6n%h=R@h3^Mr&+>#~G&+9Kds4%Mwh{+Pm8{*eV8TguSbYLRS926*~w z-YfrNgKs#XFY_p|I602C>B}1<%~IuC2{|;RAIm030a04EsWyyXJ02@rS7IbEf`&i? zQCSSyr?%t9hi=3ppFRR&R3-^h{}-5yW7oVW52O0xLKR}kiO@jT^oQxEP*Rhb=Xzn* zd`@4R*$@O_F(K!cG&|>Z5*hjc+{cSj~@c=}l2;&__v~6y~%1c+`^9Mgy z$e~c3RrOR=Ij}Ez?ElLk0(mC=OUQYhkh3OX1QzsP=D#x^PdxnuPMkQQeBZWZo3f=g z%-WDqPhCN(yOEb1>b1NwY1DHV6NuiFfmc^o_q@yHx|NWV%#tsJP4{m~-{5k-6O#W1 X1~8kQzoNhS00000NkvXXu0mjf^`sJ| literal 4009 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 QGynhq07*qoM6N<$f_+otu>b%7 delta 2759 zcmV;&3OMz?9L^PxBYz5&Nkl7snT_-g|pQ8G_Mklqf-n-unmh+b$3K7mtbY&V>C&b1&S4M6zJ^EE ztXZW+ixzRbY&_;JdjI~teE9G|u3Whyty;D6GX8(jnKNgkTD5BW9pS;5F=NKR1i%P@ z=gE>Ki+2&yzIpRT(x*?a8VPF_9#{;3S%Z{NPvvCNq>dwINj_fF@*1MT0x ze_x6gEvld)_IKh9 zu2ijBRp%Z$bV%1ThjoDW5$gfUc(!cW)NNd1%)s-&D`w{KfroD2zAf$Bw@+~%SiEi9 zHtE!1;4QMEjc3oErEnpbpz-eAyGyQIxuk#p{t7;K z?%cr~G`e)@QkgYtmKS(h1lS7~E(BOmw9k4e{050l+h`>rAt6rt?tw*1Po6vp#)wjX z{`qI{ecH5XGIQq4Z+08Vq74f45j?P5oB$Ro!+#U^@82H?VTZnY_3Cos#0eQYc5Eb zaTIu8l5)uu5Vl_I-vIwllN99EHc{Y>e1EPN16b4|Hl_q<(xi!MhzAF`w4ZiY>~MCy#XN)-4F5<;s;tiu?iB#VbKO2J_2K0L*s&X>z0QPA4==itpiQu%a>1v4jroB zaT}r#B?VR)IB=kxI&~_}ZCoN(?0??9TlXqhu%Pto*H6Zb8KX51Md0w^!*z@Y49xXu z9*h>Tf`-ODu&&n7G$uwPM2kX&3h7}o3*pl{cka|fPJaLpUs(>hhm^I$h7D6*l`B`) zB#0Ywj+le6oS7FdUc~WW9IOba4UKhUQPGCqCQqImL>p?IK7INGhFlo}H6mi}azy)s^I%Z9LRH!5qwrSHwT?iN9f6KmZv%|(d zw=trwnL2f9;O~G~v}lnmTed6^z~zB^Q1QA72!mGv@K+{B6;=G+v13PNP`h?*)%d-8 z_f#k%6r}^2iEeHA3r`AZ`7!f)T~)Eh1ktpl2 zG2xWHISd|P+*;5x6fRs?u3x{diP0s?BVD?5@w$z5jaVfRz^y9XM8=ImuU@^rxiP6w zp@R0bMjYH#t5(VS_3Je`q7)(+QE2Ymxhd8IoH{Ff8Q}IVK||x-n7Q2;geF;Fi7d5d z1g%(QiWRAEHgDc6n}0TKl0W|VL&}ydt5JpU33zDEoH^PzLw4v{Z;{b$XaH|TrS&c` z*BrhBi*P^v^pjSl;j0fLa~sBREkbR*diA7EojMwF>(;HS1ze39HPkX>S!mCmJ$j30 z;IJ~FO$jDs6nID*8o)=@;`k^r+X}p|A%Nr8r%#`j-o1OPK!1R@62!Dk=H^DvM+m{q zoOy(u!Eo0YL*l4wa28?qmoHy>H!;__kUxI>Sog3D>mFFG zbCMNnE)>=B#!|b(x2llF!o3@^G1qP4m?m#bhHl!lsoc16Lk}atfJ|A3v_8Hv-V;qdgjW4l&i|ym|BVYBGut zi0gg#Hav{e+t65swM9fBZkX+@OqAQW1P`=I$9D7PO$7`ud>VJ;s%F801+sAALT{Wm z>te}pIc?)uGAs5n8ydQh%jNFisOgjqhHcgvp`}f?>7r z`7;ke$#D&hTic`-=l_k`##dDucoYy0m0|EaRzSwgT>q=uCaS88it}L}_9n?nZ*6E; z990q%J*fTd_Rb{|6y*U4hd6K7B!dPG(nA~u2wB~~VZ#RfPM!dRH8kNp>^!=fcl(Bz zz4!8I&41qB^zGZ%8-*%Ws-#-uu+ly8riSk{`^0_&0H3(mLdgIK4!r!Jsi9M|xbG54 zlt|T}K?5mYzI>eK0|9(54va842X?}Q38}gbL|EkQ48<95Xz1e7@_7iwSySXHkvzd| z1zCN|mMz+yc^euZcmu@(Y86~4e7%kUM3jRE4}a?a+_d2ifTz6p7Ocu28aM zNxi*80LpNmf>=v0z@-4>&cSWaJm4uJxo$~%lq5I4+>oO0ib_K6gh0tD-q2XIaSt=* z$A5)PVmI3GmqO2kvqOnyDd1>Y!er3~3g;Vh8(wUqdBEfI8PaEvW;vS4iKizdA^GEN zXxs+eZ6dh1(BEhfA%MT zzJK$5a&!?X5-aj|LlaI?F5yDB0%fmz^?$(?36TLmr>f-M2h9>)d~RdupKKfk?{k~D zXp^jq-#+~&vBa3XfAwBgXIw1}Gc}a9S=#>9(7-qEX>4Tx0C=2zkv&MmKpe$iQ?*hm4t5ZA2vVIah>AFB6^c-y)C#RSm|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HI!Hs@X9PsG4P@ z;xRFkT@?eb=)xd^7)C^5raqTUCg3@~?&0I>U6f~epZjz4C^?e>K9P8q>4rtTK|H-_ z>74h8!>lMN#OK6g23?T&k?XR{Z=4Gb3p_Jyq*L?6VPdh+#&R38qM;H`5l0kNqkJLb zvch?bvs$jQ<~{ifLpg0_nd>x%5XT~xkc0>sRg_SMg($5WDJD|1AM@}JIQ}HLWO9|j z$gzM5R7j2={11M2Yvv~>+@w$p=zOv5j}aiS3p8rB{e5iPjT6BC3|wg~f29u0e3D*k zX^|tKcN@64ZfWu!aJd8YKk1SoIg+2Ikk13}XY@^3pzjt4uDQK6_i_3Fq^YaK4RCM> zj20++-Q(Te?Y;ebrrF;QhY@nGf5(`*000?%NkljSK0Ay%d+-&uSO${q#0=>%L#4$=EsAj|g=eV-j;9%^zh(en`a-*PJQV1#CN-YQyQ+{)1j#RvBFtl4^O>kkO``NW6n!x06KAKqUTw& zot_Q4@aEOZh|hzF@4Jcy7wqmcr>&gVfbPv2biArX-5bLg>TQeMA3SWqqPODdg2yc3 z^|zfI;!_+$H)EVp7_wjOW7DO(@MFMshWzv6uksB*GZ8BmwC86f?bvG6OxYAC+8a9+ zrB{;?P=1Y9miWwpGJN)159(hGVPIe&;Th3IF!OS&7Z?zP1n4Wnn0iK8sD4j-T7u*Y zWCR4Ai+?86I0#0z*fUs5uZ=W&-8QdBTge(-dh(2|{IkSlW=y8&rX9 zO}N7iS>bxgzIG`RK?bC>#SI%?>ikErR4X*~! zcYFjEi-i!sRW7?PBuq2Nf9q54TW0Wo1(n!`>`en>#_q2>P`9I9s0Uv$LgeZzjJ~Sd z{G8@1oss*^?~xIG{AAZ|Oo()3svk`LHgMz@sR`))_P_BzJQu@S0;m+!@|4ZrTJO@N zOQ+ZCG4FO=OoH)rr53wluL-^>tz60j3H1NI97ncDv#aq$Nu}LiwR%VsRC}c!`=bYr z{RX(0OvFq63LO0(!eY9KHdYGExf8IH$@!yi$49`JK%}712Y06@J`WE(bsQGG&0n3p z-s9`rQo^}+nSxt>T^E^)LJCDYU5^v*T;GAvDKL%@DM(W=y)a`jHr+%VL)%;YK|w`Q%9g~)rU5jF>k0`7l`55j=#c$f zn=zRJ1lUoWvAGp##O!fI59Qm6^bRu-H>cb{I-eDApCFx$a9_8GR!SRy5={Y%$qsBl zgQi~<;P5LwlFxldjHvq+3wNWB4r?}aD)`M9P`->eTK0cRq@kHS;b;CQu<;_oo_6qQ zlr#V(zM@GnThy;{VEdEplFw8<7W}<-6z;yrM0ZjYtbAkf3&6q0fJ2Y-TJf&i_(nPX zeliDK97)1tY5+0Y5yaILP${VODZ8h=sY{=!Qf9jWb62zQ83xesl6;Tu{y;4dKear+ z2F*_u!PVTIskm`Lad{D@+&zFywjiB@h?+?{09DFpBSew50R*-~c^##ctcik1L4i$o zcVr|!k0BV#ttcbCfg^kouJ{uwrmAedh@PynNE9`hXH~tg6ni({)0UUHBo`dP2^gvi z{r0PU8QF63L}4T9y015ODeI6CvmHta>f@9ZS8X+Fb?IaWI+{*ost=4dJxXf%dM|i7 z1lOe;d_KM>oppCSL@*P-zJW`JWs}^&9%#R53nIl?fr45}e(sRdn z!$C$s@nV%G(~NY2NIaz%kPZ`-e9k4(kjenOw4Al@dW6GNYa31bPD&O`8Tk_%-6W63E=^r| zfc0ja7q_j56YkJj(xYueBqiGKs7P8*ZU7E(zhzpsBL$wglCVXO6ohBD8!WS>Uka+c zFka@0{7@;GJ570VD9#xIyB#0?H1eBxnLSQ-( zKg%y6y`Knud+&-rlXJ*qWIGec3`+D_cM^Vl8qoYMu!XRsj(3O>DPn?RhYUr|K7k3u z5Oc^>-9SXqBH*K&fyS2!Q6**{u|tLuor)O~J%4P7Ib`(NhS+tZ23=iEinBH?Ho>`aNa|5moFqREnHm+U=2iImTHOglfMr=s zyOyK9A<_%IL-8JSWRnYZ^I6Ql$%)xd4kKi7!?MVWvT8d#-SQ(Kxz|&Od%hTDr<R_f4mUcF^`m}EH|B1(!niam zGfhsQWiNTo=y~r4o%){UA-XDqso7}@=xQbXyW<5)d`eGQYp59G;tkVZ(uO5vHvDM; zf9=^>=r=Cy%X>LeP%k^CU*s>s-&gS0!v{FEuJ&Y<906tHl%^40m#G27Jzr4NQbDDl z`-(AgER}wgKUZF&hUq)0hRcH4J`@xb!0mQp%Oft$Ioipv|F9|YY;?N~%}-n44+PRm zJ93~YY&Be>c>eD)WOtoe>uNlmyHk9~O>=tN9g_E=n8G-n;nbR8Qisq>>Wo~(} zzilKUB_;Q^NlT1Azp;}OndW1d{*zvC&O$UkuY!513SKjB^Ph52LAZY}%ZQ~CB|TpZ z^E4J*^|0*o*)O_aoNvXkXIWTl82Ae#E(=tC(~se2><9*fl2VtsL?0;r%4jxohOp^H z0Oce>;XyKVqWgkRAgyf6R1V_I1G0Og2>LlW;f~?Ln6kQ`9Q?H~s7rp-#$5EHbfu0R zj5dTxclVKlzZU9v+QTk#qteazYR^wG`v?TrAWOEBfT$ES+7O?&^cA7d^v4I7k+v{%WTQ)x_^J^D4zD&N z6y5h7Cj4GpDAlC1h1!77j7NvrKxG&FjRw^1Y)c@1Y#t$XZo1zIZ=)_T1H$t|BEC=4 zC(k`xg%4Ana1nkXYeth|JCcb7e}H)Vf7U&}TUrWY&5Il;{#r0XNbzK@vj$OGWykP|xO$PTq(dQ= zR15}#-*zs)UdL-cfh9kz_HKHrE;2OrW-aFYl#e1{oyTJGoU%xrlk><_4@-#wj)k&X zyD*2Q?fK%wK)j`L0(;sJzIsT~G8lpF-Xpm7@=~1mY!tRL17OPeeP8O?eK;@u!jc>? zl%Nfk{j5%V-L;d#UB?C(=Q*rDSkfDL&Q=cLtb_7(PLGW8zarvO2o4!p`*pq$p3?#Q zobfJ28leTp8T*2WWN}hV9mv3T#K?<7W&#OF>ySytNtet24KS__nTZC=FS2sTP|<3l z0rH2e95Pf>%6cEy1Z1I(9%;?d0%*?{@1~!?*dPQ&QRI*jvmL5JN^S{ZMmf|!YDQ0s zyy-Vzpm8Q<-)Qt|&vq%^puu%H(Ec_P=-e4l&$vkwRxeBpEYkjDDcTMwkKAG@(PPF# zBM2L^R-J@ESVGLav?0sHY=?@fvL=eo4J>v%e)6^p1wVGGzPvwu8dZRUdxJA{_&G0o z_^&mXnZceyQ z-J<91)4(FsJ*6I@__$|i2VgPGb;74o++b2>>5%xL7{Y{06ANrd5dy3iz4|fwaFu}% zc zKdTi|8jsO`@t1vFo$k}o4@9fIkiA-F%uK8$s+Z~!wFRfdl2Y{|(_ zZLu3sS}Q9B(L5E0{S^CwbM^_am4jH(YKGQx8Yww@X(udFFQ}9um4lBP#t4_XbUhc< z+|Q0;(T+~`eD|c-y---ZaE1Y!hK0Iy-SDf^DsGCye$ocWHT-%4Mpc6tHICm1NQOG3 zL(3Dz`1CpHyL5*t*(c7v}Gt3}m$f2N6hw1l@_!zr~+y8u@ zY;cgCOIUDg$MpOW8|m`93iJ2{zpJ4K))8@Gk8Iw_7oy?}*r2 ztY>>sbKW%X{*A{X*G8ieiypLqhRT^#Tj;eE4{Haya<|-?ZKNKH$L!yatjAK)0Ca4M zeFCWocqu5L^GuS>PpPz%4t}jW?AGw6UMxObSrRgJ>5q$kFBLn=RN);DP@ z-ZvxI#li8lfHz#$8flDBwM%Cu{QM$0 z;BAcf6ygS;Y)9;h^kahfV@1ZulX4E33F40(iXu-64L}p->=R)8YP3IE>GvGd@I#Hs zEMEr;Mlk(OKZ4VEcVgh9((v)$shO$YCB@gIZk%A6Y^eXSDa;P*WHXL1SaGa}qMJ4$Oa(Ki|HJVOr{2u=_VE%)7EYH0xmx%g%^9zCT}6fIWX`8uN#Ge4G`tp5}kz z@kffW^VcopEccx<$zWNQ2K*3Qkr^XTCKErW?=m^h(1j~!7cf0d%GG-sCHJ&z<16F6 zL;N}2oBQc2ZR}@na;RNXhROH!AfWQX@y$NiH`p;UlKP!YrMp|SCN-vAUH~D8hkD4E zP#-0EBtu*uqtWOg$3BE z_8%ml<;r&6Aea8?x2s{}Z19YDV0hhtJ%8L2iwd7ETcr&^bp${cRt_2YH8jP;IOk9< z9wrx+ePtaz0liyYvDS@>we+edV$-K;Y-kLw6MI#lpfh*LgUi~=<8FyJUm~>G;3rd z?XcuuC`z8z*IQxwrAbK@(mG_sY)9BoF!m4VilFK@hd2C(pBe6xjyZa&k*l=BwR7ko z|7jgj3UBW61S@nuaER0?W&+=+05HQ|0jv@67iyzcz=kYiOZ+qFSOh@Yq! z3BA&LxBxBxT?EajNivTt;CEi)4RBZ0WySY1u${C@mg|TMZpIz?`fG*;kYqtw5ubue zL7N|>YwwkP*HQhln!Ra72|SKe!Gk*3De4|J1@`^1B_Cq4hLoqd<-$q~np!d@&Q-~x zOEQH;2Q>bjkMSX}HGq{{SK`2(2jE!cfOVG@Z@lqF!h6X-P>StjG|pKUgi$fefv)<@ zTa>80KI1|Mh7GOIpG!2~<@7s}tUz%$^-q>EWqpr|(@6%}6Bj^)>7k)^`&(m~92 z=t8e(&)*h(oR;l`KMBKojTcqdR>AS41GW2VakTa*g1#U&Z{Cc;?-$~E=kr+7y#%k1 zz8-roIb<0yP7|(d#i{AxQhwwFG8pK_tqw$=C@L!YlR$iv$wb-CtsNa5)L5?Qt0Fz0 z^x&O`-@#?~T!uxv7GdopYjNc*S7PYAp~%+Sz~2I>UQmsWbsgBXYgg<&@eUavPW*8X zU-Lx*Wpe`Cp~Tng^~(wIY0pn^pr=E@Z~?Awx*i9fKY*1ltc={-`~AIGxNsqM@7@jl zRy__^97bJTUBY|9?ilgjRYl=zh8t2p&HB#<-jfwalBO8&dIEJ}FAiq@yAm8Se6BW?(cvYqb`;!_44Su}+#4Qqth;{CWnr%sFi Y2bKY^X0b}2!2kdN07*qoM6N<$f*>na?f?J) literal 5421 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 XH;MT8Si_B700000NkvXXu0mjfsEd!n diff --git a/android/app/src/dev/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/dev/res/mipmap-xxhdpi/ic_launcher.png index a04b682d739d91c0789d7bce636fbdeb74ab4c2e..a19dca0142233619ae46582ac549ff5fbbd4ae40 100644 GIT binary patch literal 10533 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 literal 8381 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 ThGFl200000NkvXXu0mjfgcoFG diff --git a/android/app/src/dev/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/dev/res/mipmap-xxxhdpi/ic_launcher.png index 09bd4670e87ef6c68ec2ad96f075cb20a5965b55..b07355e34bf6594f9ad0441cdcc8ecd00a1b3708 100644 GIT binary patch literal 13680 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%0D+`(!bc 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 O0000 literal 11334 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 diff --git a/assets/launcher_icon/dev-icon.png b/assets/launcher_icon/dev-icon.png index 0ec3686bc2ed5b59dbdca336b4b832ca45c9bb5b..4c6a02c7df63397ae1a90ef0c0c3eb0465138e7a 100644 GIT binary patch literal 47526 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 MdRKMJwC%(GKd6h^(f|Me literal 37004 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 AOaK4? diff --git a/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-dev-1024x1024@1x.png b/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-dev-1024x1024@1x.png index 9f14f8cc1af019a3053cbc4ad0f79e77bd5b8af8..d21396bff66cc3567b14258e03f12c4291234852 100644 GIT binary patch literal 101580 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 sVbuu(Lq1hcB}st;94l&ymQ4|LzSIsgCw literal 93281 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 delta 3477 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�r58>qGqM*!hZYck>nB&cEkzW?Yw82;Ok(SIX`uQnV#sm3LPrN;dNGl@f*_K zP&qwA*I>w?b+Fywz&ZaaMK_L}FyruT#n5>ys(G{3n_{%R9g2pjBsOgA;oNsWIVI>nna%EVO+fXxf}uM_Sj+b<)&! zC>&Rt{eD0D(MCUxJa5KTo2pT;st96PdH@p2$8kTUg+izq_}~o1E#dj278wa$A1=NE?#I0vFEr%H7B&I zE*$JO#Olhj*+sE#?od#Ff#jx4+S@$q3_?js$s>fwe^C&-l6$^bvP8Y_mso`7W=2NZ0S&$BC=B+Q`AjeY*Nftfbox@`joSs%MnJ(WQMmSc>XJq#Wa@ z==0T@Ck?Sw6bP0&3m$HK7`?5%X!~s&YQJ2Iy?gg&x?NU(u5x}}74u%}!#u6E7vZGB zjuf1_7>}w=mG_;|eepi}O%e%o8PpZ6ITbLDAzF?|Y&IR1LP>0CX=z_L9A2%Ev5~Ih zUFcodi}iP|N3*#Z>+V>WjohqaK^gdP*1Tfg4{iADKJ_4u$v`%0sf<+;8w!Q4@_0Nn z3MFPB&;eNPo&CG|VY*L!rKSQ|SFOv$=CzDU4XnLL*m2z`iQo~GlUIWJlFvJX@ z`G#if|KI)akEn+|sgbKBHmg4Pr(ZbX_h{H7fym9~eKl<9W!{8{M3dD3Zmt7tYfb3X z)=oa3=oke!+m>2x_Nwd&GZ3rlE8xgan2{8X0&4*RLIACgx8kW=p2F*IypC13uENjn z|2g_j^ugKd9M6*oDhQRqWm!eR%B^N}?w0p&NRQ$QD~fLD7k3c3=FKu3d{jrwQ67sn z7z3#~*dH+O7gD_(0y zF(!iSRaP+&Rw=ZCwBm2{&?r7A{{UAUx&o`+tMRL+euafUSO}lRhhsaB!E>(%U+?%j zo_qDVSRPLCSN7$`{tv?68VI3HL@N;gAImtgUsTB0jFuObs|`I3SpJ9Qc=E|7aq845 z96Wds?MvIy{z*G7ec)0&efVh{J$f{jM-CyCiH$&m%0)MY{A+^GA+>0t35b8kiM>Wa ztft1~{=OUc{Pv#Mp6e|wE#g73dGqF!^vWnl`Ct5H#n!o6QvD?%9ym?Zr(Qy`++uSI lLfp1(8*PNL`jT~^`9FHhY}@ndQ4Ih9002ovPDHLkV1f`4lKuby literal 5099 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 fgW9B_p+Nl~E2U)9B62 literal 4412 zcmV-C5yS3@P)Gm@@`2 z3o24tVn9TZoLzkTHFc)?_U)PJnR{8$e`{-Z@6MU-`RDXGr~mGm!e0%L7%X4DT>kv? zPxE_KRh1M91@kivoDw^J{!{D#cGcC@L3VIsY~l{$fTc^9nuBN0o-KX)^pRhG{WbOE z+JGYDLVR{vZ1dW=wrW>fTPu%0{yP)i|bTg^3*OXdA40B zdA0`uA9+c3@Z+;9Xs6VzLrM7Kk3Wnz{_@K&k-Kw2?l9uwuDId~Iq<*(6G@UWt@*Z(^tEG!aYNW(Po=%CNI43g3OpPBQb#EMSJeKXJm&LO_?%9 zh7TWZ64JD3(~6GYcH3>`h8u1u@`w{pJWufF<9cH3CvM{QG0j- zHz9ArNF%`qyMIY`1x?AJu_RBzpb+oexwFihH!u1OPdn>;x@7}!)fj07H zTQ^~ZlIO1SHPLR?tXXo= zMHiXQFq@%+?b@|VZBIRq3!6H1YU=UjV&cS!vfXyuMKKSA@{&riJyQT$uhAgWow)h2 zCK?@nEn2iFsqW)CrNfWx{q@&hS1e)pfaeiTY|$hHv_pB5NT4PRjU~X2c{}a2Q>>jk z!}$I8-%WOPv258gx#ymHOs%JXt6i5aU1W?@p44tD= z42N7G1fg(jyz$1S)&u-b0SkyfFTM1V`JMKt3F+AV_up@lP-B2Nn^X}1duF0_a|wZ2 zCio-~G{WiAr;9rsR7naC+-IMC%+MfXQ_>JS$jlta@#md)p81_j$b6SV8hr4<2d3bT zyO>HzS#@=Fvdb>J1d|82J{|56f%Y6Vv`D7mP)Ukme8(MkM1QLt$1+^qnAfROC-dzh zM3RalA#cpH$)i2IPZ6mx9HdI?zg?2bOP*Ja;h;QfjE{uS1sU~p00}EQ+onlUadx(# z5O=e3t1(JKr4`}0i?J2qEOsH1ln*$S)_U%+wNbDGYGVz*Ja%!4aHw5YHO3ATapVCr z7bdHO)=#$QHRc)yXpAD+79m1zR%SIuN#JMSzI}@dX~;bN^wVX({q{5QAPhaF}-?~OO! zFiJ}~`0cmf41v!)^Nd*p=bKs2%{SjHUAuNQ#|#}h)ZDBz9C_rCrv7XcHAaUYs_{)X z-DECA!JXE{XdONPNec0lDHGrO?z^vCbImm}XU-gNn*?tS6Fx7X9c~h^FZ$z;KQ^@~ z9)I=KSDS^Yx88ayQ3YZux8sgGMhT1ngu1+Kt_)q zEw|lvo1A;@xu$sb+2sxVOb^#xcU^h;<(K8g8*h~T_ut}8`RC=d(@v9HZ@tx=A2QJb;}V7sw85J6@y8!uB!oix_Sj+mX|cbB#07!G!MHs=fQ*jlkpv}=K5K0DsxhH643Y>J z&)v0S0>>Y5#1Ta+aC(7A^t$7K*oYl>A89NuVZ?#M zO;D@|?!No(!Q=sZ!Kp-z2`zSM{H(LiGACErU+su3*I$2qi46@Oee}^$r)ZDT2IMJ{ zS!umlS^^lDccWadsdNd6Y)PRgG&& zi7ri&O0u)b^Vt<_kui%JLlPmrXcB4Oyt!F4(j5jaP^PKi}~81{-V;Nm8K+!%a}f9e11=?p!eEWLMXgTW)E72W*hsbkj{u zJ8B2wwy#j?_=;_H0LX)zIOI}eI5{?~XZT2GwT^F_1ZD{rUwpCoyArAj{pNgnP6g}8 zcw^p}XCp*V$gRe#%92#x8HR2k2TEQVH@VfARdvxjj{@x`3=opsg47sW7y$qDHH
*}7b)*Tvbbx88cD7`DMMW&Pu>yY4D^yn;d+jnM`LwY&4nZV%wCal7*`xbdzB#1XBX{_$vVTJL#QvB zMDivKRgwW-jiSuHWtL5C@=&u8WA#|~0UdydOJZ|lUtD_t?U01!Tee6e4;VGZ9=4&L zNA_c%U!{R8hGazyLuMygsNAF%&Q11}9Aw^0FTFH#o6McvB!Yvakq0uXF*^JR+zchR zj7frTdDI3n{~?DQVt$7pWP4r9uoGKcm|!Urg@R&qf+~AhR0NSThW2J(TB}GiPc?4SA5V z>#n=XJMX*`+g_d-2GCrfb|FvCXI5hXB+$@x*Ij44Bne3Y+y|6qLIZ-Vl4k?rT=KXE z`oVH3OAU5=4Bez_WG2Gm7|@ufwkt)AQ4b=C__k+M0(cnN(FW5yzy;f&9>i0qNqvv& zhk(7imJS}?ri97T9yg?0w{GV5&|IJ!ixLU+k!OP>a__zOdhIG9NioG@Dn=iu z4{flk;j+svi)v3s2#Zb3g+rBO-wY!((WI&|E_uEpGsLbEl9WrHfi@xj2eb5ATG}(e{+SH5}2&r(vl7haw zCeHH|W~?R+KNlJ+8I}yiyo=X(Af4tFQhV>cw;6IgB4NL?FK^7#YhsjuG!nl1?z?D1 zIx`b)C_gzzkQx&zWr1=NhPDM!>@UPKiKA?nv*)AbkY^(;Vep_g-pl)Mn9Z>EvdJc! zcoT*Xg)HPLlsq2!PkSw>?ny=|GoHdzM$CEj1vpPX{j^zL1!;kw3nd;i zlx;6hE0Xa%B@d5-Jf1fRB@YCtF}BR3PCJc8i70?*F z-_z6>U4$k<_&S0FPdsHKCM#|X+wR@F8?`5N!w;UuPJ5d?ZQBRi^B|8$FWB9W*DY{}Ch^BdjfwZ`+ z2}6f1o(FlFFq+jjYv^=Ccxl^3YUbCNx{z1z+0c44QH^omQW1hAVSo-FaKHiH7b#Xs zRjEY6;Oj40QQCE^=_u1@PM5mB>dfD|D~rCysxeuF0UoKchp_5oz`P>3;Twsb zeB`k>^x0>hd1n}DK$9dn=?3|%2_r4rwr}{FQ8gpt#a3gyn~SoLM-oYU!bi{Hdw~vh zAnh<~2;Bta!-Ee#XqH0rBn%&U>Ve=t4PT?GN6F}Uqvfiqt7O9R3G%;&FAYmZ)>6Z) zk`(ElxJ9Spp1}ZHZ@sng4t*COg)_4brf_&HNrY`^S;{HxBguywkTh(Q5{9q1X1GqR zUh&Gkam&YvED`B8zMCxWx>$xU7%uhA>SfyEY0|f@uQ?`CV|0UcsGz_w;JJ@bT@H`q z88)_~@wfv+Rv$JjM^y=#VZ-3oPD)f?h&F9Im zMZ;w9vcU~ZuQ0Oj=$ZUlgVPcqZR`6O`u5v@i@ZL8WSRJ5yG;kEy5_>z{z^`+^B zE_jE;p*#!me;4o+vMuE4B6}LRzP7E~MmH;MasL0z_tQky6VLqs0000EX>4Tx0C=2zkv&MmKpe$iQ?*hm4t5ZA2vVIah>AFB6^c-y)C#RSm|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HI!Hs@X9PsG4P@ z;xRFkT@?eb=)xd^7)C^5raqTUCg3@~?&0I>U6f~epZjz4C^?e>K9P8q>4rtTK|H-_ z>74h8!>lMN#OK6g23?T&k?XR{Z=4Gb3p_Jyq*L?6VPdh+#&R38qM;H`5l0kNqkJLb zvch?bvs$jQ<~{ifLpg0_nd>x%5XT~xkc0>sRg_SMg($5WDJD|1AM@}JIQ}HLWO9|j z$gzM5R7j2={11M2Yvv~>+@w$p=zOv5j}aiS3p8rB{e5iPjT6BC3|wg~f29u0e3D*k zX^|tKcN@64ZfWu!aJd8YKk1SoIg+2Ikk13}XY@^3pzjt4uDQK6_i_3Fq^YaK4RCM> zj20++-Q(Te?Y;ebrrF;QhY@nGf5(`*001BxNklG4Uf`TnY1hoh#?!MATrF|}K-LSqs?W=vYzSrjiq-y)riWTdERJ2$W@)A4xw(@&Gk0e0oh76;AHPdx?sD##``z>ZpYuQ8IY$cNkW!n7 z_1#Tvo*2?$Lqct0)_2cvy8j4iiibDmnR=0Gg6Vp_UK3|# zf*%?I`GMYlfHcL!>9P?}U~+PD`iw^7ae--yhx6qXLa>~jnWCbiZ}j!`eIVfaal`5$Q2*cc|Uu^BpMvF2)H zmkvx>mW#|y=R(erUdY8)KZ4g_=oWD#F=~)XCAfUk1h4$MrljP9O>i)|r0N#4Sw8er z8=Bu2PA-Ar<1T0?O&!R1uuf1AMS5^DPW{giPQGq{!%^?s*ZiIZ>sMyMt1|_hd*VTv z_tc*{E-JY++}MA@>{)tUNWdd3_*Q5ewvP}@YGJ`8H!hzmPZh`Y@T3{;;HXjPIW8so zKhog*pCoAc%Mf}l)Q6m-R4U<>g+~6A8A5}2$%8^8;X@h8u>Xgge~Tihlk%xyo>JDO zBNvg4eOf|%Zp~IV)N|FoNQ_YECTWqnzFy6BOzu(Jyk8V6>s}s2<4zlTdb&B&kV>Vf zT$YdNKM`A@J+BHrKIIvsC}mo%n=;Y7OHMLCO!Uk(l4!wa!V#$(4Kh2<{3dcUYQ`2o zRT$cF5VoBw6pm~o${&dJ>dufosiqRU;SIIo;MQK{xua*Jrchm7jY+!?k&hwd5;)~U z(0+eNqK!3+34@z@=og}y6Y>%USj4PZkqOSAj@u2P?ObQ9*-Qq!y-Jwh%E!4~cGQ2M zS2&%a*%OP!m^@GC$oy8n+|j1QS35#qj;|YtJx|d^J||T-LNF87inrSOyVb>*; z2|nM-dAz8o$XdM4p_+P+0?vw7Qb9z+zjGGWuM7O`UDGkjja^Sw6#tbXu0Qm|^h;_5b>Nu1SzKr^N==)Soc@a*B_$=Uwzf9EJ4v~8 z5QJPINNFv@>zA0&&+*1zT)0rZJV!ircWFl#W`E67wz78m+Hp6~;zcPa= zy|d`gq!MPX7vAB|8+9LD5L`Pwy{m^JnEp%%oVVL!UD#8ilDHJo=L+M?kMV$*B6rNO z>qFf~?eeJtulaBxP`ZvHc@<^-$|#pMg)-e=0c~#rO)ml+yXo`dAvof-mv5SY-A7t6 zG&IC3vDDO5T>V5j)uuA~n@0|@Mdiq~Af>A~j%?D%TG@w+nnE;w*%5bIiG)NV!8iY9 zGF1;cE+}r`qac6y71SP2g9Mht;$O&wOP5t1bF)n9P7eG>tjrU&y51M`w~gP1|; zw!+9|P`DDv9yZCnEmY(3tz$vjX=!`hfQ-pFF^79}6XTRLS)oDZ>5@L+Gdt?JV%aAw}KyvvB++BT+v1t%}$C z^;IA&*+;pwa^U3S)XPuRV=sRh*uMgpL4E(`3&1<&Bj*YsIGEg|K0&2hgLkjDz|hhc z@x0#u)#AwS+LM`;F$L1T&8D{hyA5dm{YcE2G>HrcfE!If-XiMrC%)Zcz61x8OB_eU zkf!LE&ho{Uel_1p7J){i!Q98v;hxn3dxM%HH+od6>+|R>Vecmsap+gwJ^|ZUgIFxV zg751fTPdVTN#X>d`<#^jb&;P)dvx+YFWD>?xly0gmp`@18s6s)RD?$_92Bt&PEze) zRrsisGF$8qaCjBm1Y7gy+A;~a?7m?@-rYU60vsc7!G6qayLu%e1v+@a*SU}arp4^D zuzW;!Y;s9RlUFg2rHbXkvj`~C=qwGDp2O_br8xR#V5qYCI~C4>%tn8n%5IY2_*O}P z@{lw=s_vyv@rpcRnTC3qxjUW41Y~LvZ*ncezawo*U}wYhM}P^p0{ykLsb&yObQcr3 z1T|Y-$g0k_r1wwo*N{XaG1Z>;vYJ;SyVvV!V7?i1Yo}M-Zt@4kXS`}a-cM$kK7GC+ zi*z(puFAx$=lW&rzD(sex^eTHv#lTfSg$&NrV|BaxtRZ)1d40ge8-(4t90oB4Vqud zvt*ddBGlGcxe|#=s6T1!eN?5b4spcm!=!n}EZ1l0);sg~*7@z!&uV!INM|A=!y?(4 zj|1obOj*wR0?!XeFc-Ok1OSfg9u)r+RJ*oodW6%6px%F+$T!$e(5+Ik zy%lm-pR`@Z)lu!b_NZ#nwLpnwjUA9ofSpnHhq#Skek(I7O~#0Qn+Hw$gh zeRliEXVVejl?c)ZE`r&LN~WjjqADr}qy|!9h}t}BQy>0XcPB-Hs(>=lYk}gGz=v0i z><=bbfzUqUak=amM#*<6)A9h2Q$v@=!5}R}(nNRTNFLIwfQk1|8&zVJd2|G;=_R0* z+Vnvx4=L;KIJsjRgdblOW%((3NAEG<_@hAMPU=gTjxvVWgeoe>k#G>6Nd00&JwdTF z)J~gasXP3L@nA(|!bErDNGJkCcW;$Z?f=_=3Ti7}0nFP*%V>$xqy6o`3)wz6YWQ&+ zV*^92K<&@yt>8Prq&sPKM+voAJAgNfM$TmjCQY$1rKlW72sk@;^tsGfqm^H z%-Nq68t}>;oPzGu$a-vXxi)?I=2bmOdySHia>PCIo ze%ZM0ue^8^moBSxPyUY{iFjIQU|VX;!ru8J=$nM+YtB7|n7l2bl!&;_ zn0QK>=eSkfERABbVT-y=NrH_epWZ_ollGe%>tcrjK-mc7Eic z$c@~09S$dc-$N0ckgSIw9)cqd4l9|N3;n_H9r3xP>5vsVt@h!eB{o}N%k0bd&*0c! zrC6}34CO!Xfm2O)J!&qAcM7TK$jr<{N+lij4$c>O3HSZ>lqCP%EL^><6y9ZZzWv$L zM_s5R8N;`R2 z2Yz!7Z3l9&XrCIMbPG~f=yB8G0t~eA=;)^t4%|uk+(-&HG368U=1O48ji^&bSE~sx zUt_}Mn@Ta|S)!i~!<;voE(>9bv{$#R2j&B}o(AIhBJ7#kU51 zZvr2%37%M80DWDbUxCs3l@Se(6r=pV=#h$&8a*;<1m~MKB1L%?EV*>x^N)^bnEZbB z+g21@Hrb(ATd#0W?oeh-7Jk1ZkV~wqZ&;F0f}@t)M4)t)6ieRJ;%|5Kqwynp;CAC{ zHj3b6-#I#_ZtvDi(pTW!?{=cMgI0;0eBGd^S$mN)HUdH}Ghdb`jli84ZY;cJ$dW4sd%NR{T1Pd13 zxi6@p|FssLL2i9KF>#rbWXRgw0;V|<3{8~>3WWl8J6+*h9O-)TuT~~-X+ud+z=~}Zm~O z!;PFISk>K_e|sf9-g?IOy|dYb_f|V`Q)eEAQVfvyXX4MRyLk_f;f<}3ZTM_5+?Rz; z3Blx3cdZC1KT7f6`_#J~5U-zz8T;t-dSB7vo%>Jn8mUpRHwTNG<06JS!T$MYMuv;{APhL>un&7gm9&-@aaYrd_h@*qjUv}3`Z3Wr2{Ec<_5C7Lqo}# zoyOd01s6L^KCRjdSom@p_OBhWF#Vk)CfdUD_Y?4aR$)NQGP{ySxFOcnSBfJM95cBD z^Pfz0rT=@nl--UDHh0-YY1ZkW0)mLoNei3IZZ6Tm*;HWhJH7 ztmxF*TmM_FFqy{IuucN^0UcF3(=T>5xDZS(;f8P&5=ILqScXuuoHTO9XSMEk7rH&& z-O(#!qYc?>^9NqL`LM?APHx;g2C&UCL0EDL*aUNt%iHI2K{Hqgk$q%<18IV=y9rNx zFHO?jT_4d*lP);5SvxYzb?~rIfz2Q;NF@??Pg;Y&J*OTh!0Q{&Xrj&2oZ`ra%)(v5 zL-I+oDh>_b6CZ3!=RGcoi`)>i%m!O@7p(4xtK=HD7vhf_J443lPMc8MF9pd2!AwFAxx0jgFdm*&%IKhxCy?YLFw;%R>F*aDx*T+4sipiVxU^d=fW~XZP z@#k&+MjgtZi)tx&n`Jh*M0W`>%cKj8YY_ISL-mrX!$puS>O z-)B(d>O+nv10Otp82|jsa`a_1A$LMLq|%{~o*^<5kh6deWYoVlNRgYENqCRGV4w(& zcuGv<5(JCxJV=nDvS?Zs^an%9NlBqhZiUBJm!JEn22D2x9?#Zkkh5aY_m-v48@=J4 zx+(dvXz2V7W}U~9O|zVPe{(FLc3b^W3LG+eNNe$oY@9-3Duy~LEksU>JtHA+a+wPm z5ONbHx|{Z_8O19K=pLbAA4$wxc8v&*Li$09Z>YukeHA#h-Gad$oA219d!2Bn(aj6R z$`-6YQcRi5!2omOOD!J18`LIM$mPgg z4!yrZp}ngYH%=~u*T^TVAO4$g(Va_WfqI1{BpMWA_ZK%} z`r-%)&2C4|>_p~_8+HVa&vi(Kkg=&rF=vy1SHN&sr^pKV6;=pSU~xkLxx7m*gQSY? z#*r|@L@q(nM0evzD2R29Nvkw=X2l*yB*fgJNt)UgH>>h)HxeD!Qz3 z#06$XgqTEkG0mPcj!{F*qPuakJoZ6KE?acRyOJdvzK{va@CuBG&uS5F#&<3)Tb!Lj zTpD*|O-!-aG7WLfVym%f?Sm~)cq=2!yjPcxp&@=N%&_xGM0Y9EY-G?~JXs`QR;?o? zSdi$B@wv?7XF4My&i>Q((_$R>#l@dPG9zE4UiFpMF9np1?S#yqWwdw zf=niU`Smlr6W%x(@)|a;pMw8;HTp_0;V|v$V$Av=u4hF^Wyob-AJT4)x_)r5&*j}m z+;qSwJex^CU)KQaCkmvZqUiHp%G@gSeUOH(KV-U(z1=FYS_3D(II^cvG=bx~+THQ> zc#&r{EBa~SKuBeer47(!MIt!Z=Q2G_yc*p#cWbfdi}siXV|08yPiI1|zw)sX?D@%=n1AcMjbui9VUv*#gIE)` z=#GH6&Zwe0E}v_KfJxajx3=K!wS`Et7Yy(5!tD;cTr4JPjQHXu9*;Y~rxA6Bn5CTP zR-b{LW5j{nl?v0FnU3adGI{O(7AhT6*c!m}D<`1lc^8}&q2v;1?mLC={c|bQ&hT9i zj4(eqpLXd0x>ce2YaU?8Wj{btas%o{Tm;L9H$gs^3ubwTZ@b9wmqtln8VtLY=-eYg z+g>|Nrt_RlzQT#QK0$k5CtYdMRcBM=eiiX1y~40tSY0c*=Qqi}2lrzc?jL#J;x?|RYXCTPu zj%9T3(%^5;oetSg%;d}^<;c6mgpySv*fjOz2Mb!#c9g;PxeQ3D6)d`A$c=er3)jaw z`_ZSY3T9ZxXhM^#LiNuja8IUdx0)iUuaXq3lFZJ|#`F*A%8ig#C>dB+cV8M+LyvpF zm`_z%b*l#H8=^Loc$;N5*rK~&pBq=nJ@}YOasHFo7Kn}?15~9Z8?)b_zeyIhW8L8r z^qh7eV_*Va-T1k0f2<34v^kEraO5UpJtc>95a~ZUGukVM^YXdD_=geQrS|CXANrEP}vntNGb1eBJ%{OJG1x{(iQ5<7W zbl3iH2|j)@dGkp|gH$?zZ||63(cIdi9t<8UvTQ>q|qKSwU<>nTnXw`Vc)zo zoNq|%c&Qo7N-*>Nz&P&f zckF{9muasvW;v?pj(lf}?#9U-dk`eu2^QV4<+9`Cjy;4k%VGP78GrCw8DX3oJ3k~M)utuaLPt{qpTkkzqdY1UWz7%(^3Ay)PAoCZFTxpTPur(jDj{J~Ri6B2(nvvjYB4eEbWIVy- zhBeDc0)g$5}IhY!$Td9 zU(U(}cX#0XDmgZR`ak)D?6g{~th2L|O)hWg4qL6qi0%@i%bN3ySfu<}Ud-z$TCsOJ!K0UpH(On zdYMcXJc3M6R~nT@Mo&*qz(B*|;^KzBzP|q%{wi3P#rR#O$R|v6C#vek%$@P1z`qnW ze%=Z3^+j0tNt)9pHp^5?^{8GN&%L?x6Djyk`Plad2M0F~e-%uGTrSU0DwTg@@1sg? zA5}osQ0exAr_T+Bboj!=Dk_tVva&MFc}j_o9=rf!8$H&j{<901v9D03yqbIL(I`U@ z5md=fO-oDro6%_WmtI0H<&u`0OeV%E@bbCAAOv6B0lYlH);p2UvNd&BdaV?HoskYh z6FpG7_Y-PNm9EaNRpbQN<5*R!iRb0HsDcm4}gW%JkeFq@!I3%#tpP zN!}9BKOEG&5-e>cW|^zxCW>5wcnFSIQY`;lj@R#OgVPyX6N0pvufA(8a<(0ccwWW= z%4)qwf7YKcG@j*D7wi;R-=q-{P1vX`2(uy6F_cn zZ|`D@#lqBI9NBl~#luajb^Ho|<4>YEH zFi1~N2d1`092pS}EVJw_>3N85XI+) zG=98v377a19IU8h-n67+@IX3_Zd9VJ_V8%jE-B#QbEDRl zNqDxqwi}`hK~^KGCX3*r2>@jJJnx6s42p(^`lFvbM#0nPa+4dxWyU}T#D%=A21z%n zsxsK;^6o~IbZ4StYbH`Gxq)}}hIXY9Q^)u-va+ad^^D@vCX51BGIwq)5QvDG64_+0Li8x&jYIMD&sQeNwM`VooXV4o|fkNCu9 z6^{LptO_Q4Ww3dsY)QqF)US4MN9M?qvjj>{nsx7YJSt;*(gvDmUGJF<<-Nj39wa3E z81#O+dR;J6|EhLXA^Xd09RKg*KGR)QRfW^1xt~Eef`ff7(?`s^ccizcm+z^eFp_{# z4~kcapm|smQWGy;Pd^i>TcNV{CV2JlAoO(gLRc)0JNzir=MoUh#tx>a3)QF-)xo&f zh{eT=@yly}iHG()gqnM5@aU(H;@++IQf^I#j{1?w=aMG6yX@DgP;XJgViDFio0F4+ zvMu!FDP(QlYu}rQcW-pV+(i?);Er-v`F#dE^|q-8W!<>u4`n#=yDrXU^x{Q+X%-3} z5*7jDsx9;Oxj`U-qT!#aYc{Q0NDftY2r zTFvEizfGBC5^ELQpWF6H8(!S}B66#9vElRv6j_UK|NZylsXso2Q=(ItKYu(~EGG?JC^;%H08JFa#5FWy6_Z2n|>ZejJfuv)R^>3J-(fF28G8KGz9>u>*xm zfh&((iADX3uxr;Yyz|aGz9}&_uiT8yn>S<|x zD<6NS2qaji)74WZbQP=Q`i5}Ed6VGK6;lv-;r{`u5vWt(Lg!Zi0000D literal 6826 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 Y15A5k$b40aj{pDw07*qoM6N<$g3{VzbN~PV diff --git a/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-dev-60x60@2x.png b/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-dev-60x60@2x.png index df8f1f17967fd22383dc3bec6bb6c7560df0e8b9..483442e23eb0fee664ea9bb36de43942a70946d9 100644 GIT binary patch literal 8676 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 literal 6826 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 Y15A5k$b40aj{pDw07*qoM6N<$g3{VzbN~PV diff --git a/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-dev-60x60@3x.png b/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-dev-60x60@3x.png index 97ed73fb74178e0ebf2e5413dd684f3144dabddf..9567d4af08e97e5306691ce7b6ca82ab00068d9d 100644 GIT binary patch literal 12869 zcmV-LGP=!)P)EX>4Tx0C=2zkv&MmKpe$iQ?*hm4t5ZA2vVIah>AFB6^c-y)C#RSm|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HI!Hs@X9PsG4P@ z;xRFkT@?eb=)xd^7)C^5raqTUCg3@~?&0I>U6f~epZjz4C^?e>K9P8q>4rtTK|H-_ z>74h8!>lMN#OK6g23?T&k?XR{Z=4Gb3p_Jyq*L?6VPdh+#&R38qM;H`5l0kNqkJLb zvch?bvs$jQ<~{ifLpg0_nd>x%5XT~xkc0>sRg_SMg($5WDJD|1AM@}JIQ}HLWO9|j z$gzM5R7j2={11M2Yvv~>+@w$p=zOv5j}aiS3p8rB{e5iPjT6BC3|wg~f29u0e3D*k zX^|tKcN@64ZfWu!aJd8YKk1SoIg+2Ikk13}XY@^3pzjt4uDQK6_i_3Fq^YaK4RCM> zj20++-Q(Te?Y;ebrrF;QhY@nGf5(`*001z2Nkl)xmMp5gBh$5jh08JdisO?mz+wNyvTQ zcjxGAz3x=fM^$xKbyar~>Zcu&?y6Tu|NHg#zW2TFbA)&(1|LlHQ;z`=kHv(NdN?pV zKQMTFDRCG)J`&L`#y<}O|a*^C(zeE;3#5)Y;P#Jp;C*PT!%fy%yu7bC1$RB zFE#eQ_d{YPe~Te#ax+Q(`g8j56x$>yezCTt@vm*$PpU4-up8tPwQX*9oS* z6H#!_#fukZG0QNLo0}U!_0%^~zitt*yM8A+07G+DBUI32KNVQSOg;L^Cs9U*4T1Wg zbw@DnEwy7cA%b=SyO`Cm&8Sx9`h$!WXx$CKP=7;?2fl)~O3aa~cpgn=Oi-T*be3Dy z1hJWk_QOh{h~(L0TecE-`mQ7PE}B@EVhu6SOR5nNbCopy>giF|=z= z7PHKVgH6!p{LDR4o|KG?P?!YGC1y#?442MvC|i@HIk@eVqNhi^&x)g?BWBz(5fk1o zMSn=6Xzdytqc{ZhpZTNc%RUqq79whL0B-)o56ubLtoulHz4pMt!2zkMshVk@b}Q8B z`Sv~?6G0Q_HQRKyWHxin-@-NDe|3y4$VD)HeSJ9o-FY-EO2UHkjy3J7+8{C7jjEoH z+?{pE|EwFAkCk9xplax~t0ybq^eZP!KEl4gRM%?{NO(hbcD4c!rS+sc9+*EaW~@QXfdI?16{iki!9 zoUcoLz4m~*CRM7iUFn%WQJ@9Q7QJK>Kl8k0Q>fnVxMc0$wss!!eShTLJG*xIp>~%m z>OS?usr@nHX5+|?Gf<0YQ#uhF`WLBCJb2XNeF9sOQMOfq zl3hK>J5Y_*Rw7LE^R~p6OioTl)LjnsVgFU_-^sCU*NUTxUu~V&b7)(ZO3drE2jsfb zQd7Hvp1SPX#cx;IC2Vp78cqXcJ1lRA2sLr=cUsU)+t@VFNWC%>GggY-D)}s)vuI1- zj%cXgm{I+~8~cJ=TU&V_>6xrsQ95lm`IS@5G?b`SGgk0E%m{=?C7Z9932X}^tb)zV z(1w7DeXx;6aNEST#zQWiWxM;Z_v=zLHhvu}v@MT>F@L*kM)WFvu^-`jL2pcg9@Ap> z?hird&jGmlxf&wAsKN)`TT{ot0Vi*g$M?ia{hT8QJ zIQWJJ6&370Vq?aQ8;8lOA`th0b6eZIEKl;B>YZ_to#XWkExf>4{Pv@_H(ssWi!m%_ z$IUbG!&4_M+BPUC2q{a#tG#Zo3l3P?iB6XbXahVYKE>-1gIMPBK{LZ80tlnbhzbkL z4zeBDo=~!7SkSgeHDFiB1c*8O{QPjsX94iKsTr+~XSDXTB?CMe!I;c%5K%@^BAxz* zZq&$SO9#x-ZReo39TBuGlE9e7`_=m!K6!bEUq?rW;5Jk$71D2u#;nhK(dc%~;I#=8 zCLjydocj~=0>8Kd{yq+NeDcz8Xr%@@IXP0NbFd3ar4ox5FRqUHIybo0tBlXCi~(*J z*Xac99-*5xY|5dYdl4wp6Lxe45c@basMi||X0OxzO9XBAyX>}oUeCMFZt}CX9TFFD zYI{CBo=ipP2E*4JAI?VN=15#QUaA%TtXZ?V4j(?ucOrlnp1nc%X?YK>T)86UVeCqO ze?Ru`-ygi>vH5NOUzG7N%NWhumRwzLOE1^+O#v2|nGPr0ll=%{Wlpk+L)%YV6$4;Q z_SQ-hLHB#NV&NgT`Xwb({2lzd&{x~ydN@JMqngrp#dl1LS)W7OPkG)cQd=Y@Bk4&X zW)1ZXm%_eXC-sGpvmVG_Km6Q?5OjQ89P)8dwDw|SW9xwif8*y{9jpBjt1~-%YtuzL z9viM<18{Y9MOT-AX@^lpe0)6B<7SICoqu_~?%@^=_|FEssDHg@>!!rJ%5`F{KViC` zRD$O9RUY*FN-WNqgG1X+p|`hJ@IlEmYOd&bUz}+Ax>$l96=HU7_r;aR{gL_ERo*>nm{9kI^}8c18y7~-BI5Yckw!rMcc8u#^4+s`$4n&?n)I$Z*nn0Y&1UAN7xIkxM3 zP_GCpID&(NwV(E`@ZqW0qVKua`LR)XxEDfJW_#wQ;Pkt7Xl`l}blg$H;7Xmq-<6@u z&Dx~=Iyx*!?5J*}I;jA|Gl4)sv$^Kz5)5kaoKAP!KEG|_okv7jkxeK-87giIHZQy0W8z={ljs#KhnPxFmSb@&_oCi4@bG{usPFs(7AyUv(>RFqlu$C&-yGEsV#HsvJxH#lq#w_W|)KHD`?Th zOmK50){FRonq=CUo@7xj&4<$;oH%D9W0$*`Jm)*3A7No(sHmu5-7jrLC=3?Ty7rki zG{$k&zK7OLY0(OB4QGDcIS`2cB{216-QRg{nQp^J&|G3B-{*p77G^#Xg5s|S(AX$m zcB4hBW}{iBp~qNMkGB|ffi*Aqv_Lsa}FLkIIH>C zbB#Wi4i{g2}P8k!?rMpX|Oa9v6<_R zQs0H&0r?xK_oc zF_Td-A~&Gj`?(LqN~byLAss;1V=BS7(-OL>03=D04nXmpb4@xyyN+BGM504O6P6e400_#Z-j^LeM}ro}B4G?SPKvY2IT zj$1S^`86Qgg7{)4K{MrsCdguzu^G;OK;R8P4`njwt%YgM0jl>iuLw65v}*7< zV?mF4n^|Ub5PBQc6R)8j%P0}**$5qFIssQwk7|w}e|{Z z9B3pXVzK%gC@}qPw!K zz+uYlNdMpAd>nzZb&u(P1J17la#_|A(lB{Bh?pgtPL+}2qI{d~L6R`WP!GRZy2Y|Y z{gc-L3DkhG?u5>^F0sJNK_@$x%?ug4LNbri*++@E$FI^Y#Ue|zq9SwwOcB)UM~!^b z`hq4R?u9I7nGpspZW2~XgiNNqqgF9*OADG7vy6-_Ap=5-i&BvkU{}cCkb0b<#O=-y zH%(_B9TAIK!^&ryt%Bv|=7!Q>?mB_dwHfGfZ|bUa&*mL`6w;oG-dgc;N0M|211vc^ z6lD6#fqi|(fNwh*eDhdeA5UGU+Pw+Xb@DnVkDfrdlnttZo|0L$@D8vY2O<;^o)AgO87o>ti3@TUd6- zm$8fm=M9Qe($D+?nizwSSwfCTOUh{qx@(_Pgh% z5cEY4mtPLtd?(&~d7JikQiAR;E53A@{a`#M|IroA@fSGTEc;CyC1%S?b684wc{vK! zCLv+J(tNuM1DX1X+HG;7T!6tC*uD~RBVfTbBpFkldQ#>5oilFx-2!+&myI5eW`oz`XN945 zCvSV#Eb+65OgqaKlzVs3%<=dacu?9!qvdL;R5*I=SC%k&-7G)KjU#aq+`igZ2w=@AG$=T7oXdITE2|=%(Z8|`` z@e>bNcMjrGWL0v9va&MlyvZ96W~FPI;xB056J>xJL7R{Jh^;)T&$qXjwH`Y$1x*(t z7rlP7r7-n4WL0-wo~i4Lq)fQ_#3V%TWVWeC8*JCv($a#HPxL9`_u1j3Yy;67y@*>h zL6e@@u3~26rd_UBetb3Fe{zROYOc)P*_c+BjQW7lpIP*d&teO4c~0#6Pkw8X-{jQ( z9Nbg<@8xHsKW0hcGOD2`4YXg+VhEbf95CXK42kY@f3dAChr(%CnUDvDEPS*bB?ijSuW|QsP6W z*dV$y7&uuYXf`pA*tifMPPg*1l!PDJu?Y5;T=z1yFMJ9TcfnDHFJ`vyo_Xh`;qo6{>RXHZITPrR z>()O$xnB45E`d6RvNB8C^6x@~%NxYcxt6BJNz2UN9;$1=puPHnvFDan z6c=X;%LYY#xlON3M*KcW2iJ5b%9dh7J9)rY&`OR*1&NuEeNcGG2Qmd7IQY9IJ!81+s>pt>N@oY z4UX4>DKYae*P+jap9>IgRSTTZdC8f2X7Y706oSe}&}`le+GZA9OCl&R5CwdD=Rs7# z7KhVn>GrR|f-RmnyvkJ6jzNZ(5D*xsad0S6*t-UyQxN|lNr!JG=5O)Ap*sytEXMZy zy0la5B&(`Wf`Z7riuphEI+pVx>%KY*0 zf1pm#ie>McnsMjFP~<%ygwtP@Xp_B@>GagU7=Ca`3Fm)%Wjc2J&sp^M^Pl!7;Rv_< zJ*uq}Wnx!i;HnrwuYKk1XuzEplXJ`p-ycFy@KQ{qA#u@fm;v*a=d)Y6}wZ7IX zN08k|qS4|u0n^@#M0b%36!8tzfUwwPyTF(7@YEwSQCnjgd#(MN7ij><1QAMG(j}{w z-}gpUBIZ+I^1IZ4yFdj8>N>mKOur3Xo<4;~9vqL(3cc&$h)uy@Yzo=hCq{*O-=kuS znM-$cRsxfgGbdvBy#H!i=ww%?BV+AuG ztQLk`E`i>O5ucV@B zzZXhN8A@G@om%5oSp;l?CeO2pS+F-lY`ptJdagYc-ucBpPW#w<;3g&1b)xj?D17<% zEOsBXgr<)TvDzYF5;W&{w6|Ezbj`tG_zgz#a#cLx+DMW8p zPu3X=nhwPi-8CmRq}Mw33RCHqu?4x#{cn_xbukm@*bHOnyyO<4FK8lS6-%Rnrn7lb z;E#db3|1>vLwA0zVk7POI zxNdH4J+3QCRIP!A>npo2d7`k8|4gNGhc7y}Mq;4eyeCw{;muH(S!qLFBOwL7i!bs% zN4g2HS0?72>VR&9t!E}kJ^*w$6^*SKHR$SMuYjghDpikcyFt^o?4b4oS66GlI4O{FXG?2vz7yp;&fyJlcYWKdAKMUwdqIzO~AbfY#21NHFmpnjTv13Wy2efLfA7qqizT+8xjKNN>H)v)M$ zy%;JrjxhSYS`EH?YokwL@}dNs`-we+(#-o~(cv;27(^lpExDg!qB|z9`^#kBTI~{M zbKBWW%!Kr{zBv6(t=Zl)<#A_&TXy>!$+$eLgwd7d?d^?-7b^`eV(w!x$l6q7w`pv1 zka!5cmCYuySo(TmTlTa9Po`;U(iuekx!PdLUOA@%Q>IM8*|WBb@t*!T2@w+(kD~{j zWM42$g0`uc3GK-_SbJzDa(C9DN3AyTsX942BKjr|v@9~Teaoir#+q;DVc%~{v@4ux zBGUb^V1qk)0}Ur2YUcicU;Z=+1$&zr2cHD7Vwt&M`apS6J=}x`oSU0HE|{ceD4O)G z=Of!Pn)g0Y>{C)wGW2|Ma&mL(#ugtn8)| z@U(FlcYhVX{@D~>-V8R31x*^Y%W9LBIVTY|hy8W7zPs~|qqu!p2)ZxDqq(UG!66}N z(XPs9VBEfY;dz8FwEA=2A@qSW%y7c{TbrXvZG*8}NQ+7U(zMpot{F`=$gfi&H9wvLVK6umMrEoco! zNET9=>k83b!bH#-0M_S(l9AzuB=Z}zpk-uijU*Pqh)Aa^BO?~Fpk>AsQVDwOhr!8= zL=;j8n$AKhBV$X*G`i@5CPHS5+LMuy3gzHKBc`B)7PDF)=YUDepA~^-q%~ z>5Wg_1XO(ww0s-TmUHBqr+>T~=5KIEYa;t1RnOjFRJ|U8E1z_l#z*tS`1(mabZDv% zGB$YFBAGfZW~OB4M00`?p0l~;=rBOuu_0IAa>RjmM^6TQF3y}e6I6F+B$gJ1bhRj} zcqN}?gM8o{_PC?wV_$69dug!nW`TA+T6Hz`hCDD;lX#lFEXcKYow5Jfb7GtdBaMd| zp?)|FGftS_)(Y6>H|S+sTHWy#G-;42u?yWZ3kq~9J}Z7@Q+q;Eb@?`AxV8jZS28ZB zFTT6wqbQeM>vB+8NqT(dUjN*=bBaWcc5HEfubrvE4C$KJPfN$tGYcvj#OBSgO3VbZ zg1ZP;gzi4#ASr7be1%<)XKxT%zV}A{o+cdpw!@{O;s>+)#Kpx?KiL=2#!>e-4}$Y% zScGmBz9jDuS7O@9WSstf^w$d{^}-i_(?tj&GBVQaIS7QSGBIN& zFG~b1shA0U-mOU3pNoYZX>jieGO zAOyG1we%3WY*J?KJ$dB&nEw_L0GIBFkQvv$niI6-V%De9of;*(i`k-G;1sj()k(Pe zxmx=uDmpDVN%*vT$3uPFkG!&PkYYk@zNU%WM<86fBW^HO-Ej$81#X*pR4%Bs2X2>= zP_@Ge`MVpDf5P(OJf!Z)l*I{XY-~b7R;7ezIHIts6J--L?V2-2uxsvmWZ?73$a!6Z z3l}WUF-OvR&AK%W<8SsXR4prv?Fh}m#kD>_mV_rda}UUxnnaO{ zQ>ej`3sd3$wxOWiAI(G5W`C5NtJjJmEiFwugQ#DBTMDY*2*po-u(iQmgB#DKB4h(^ zL5uE1BO)eZX0w?k7c=3fEt#WI%rqxHFTm2b4WHBawBxocPjp_K098;gIzlhNaoSW8 z>oK&A6xUq;SpfCZ_8yTFpBLhe4ZL=d#3f7%+8DY@r%i0;i12Xa;i@eTB?-iI0K?RB z3o%0`+cx{9d!&Q8Jn)hb5fK5d>30T5Co1~<2A7#(vjJe(6OHiwr?2E+$5N5XFLS-5 z%==?7vi4e6w_6Bl>#S~qmp6kACP9-%ZR*YF3u?gf^PzCqJB2lGvzV~evnIAKiSM-( z;-%=DQV7hHHt>fJ6*Ko?_1VOpzGI=PUItNXr?Z(#O+z=G%@;EL-!r)YirKt+XJbUG zvSuu3n~Qnqz>$>Q_o!`bKQ77gv1&)^RB31G6%|sMBi|gr?gkWM(UW^%c^ANXSkV$U z>I-@(NLof*#x=yF>_USelgi~nJUU88Mf`;jL@(w_3%U>T!dB5CD@`h&iN%(8&J3Vv?)M&T$z^!W`(u^W^bret+u&Au-V2eG}*Hff>x`&@kdJNBB5 zV+2WD!g6vLiBO&%4=ypY5zvx^e?4ahznkrm#3C3mg7)c%LgQW!baslhqJq8LudZhl zZ#tbUKdPSdy}@(M-+K#c>*|RLw70hl+BZDwR^;dBv3fFeaF;sfi$dXm$T>c!k2zz0 zV;e9c1npcFhTRJsP+ZKrwC)I@2#X#~uL*wd!cdP~Q)7N0$K)c6te#&F?DjXiuaPLL zR?WnwZ}wPpwqm1Fsc`QnGthUB{bO9E5;U*n`?;@cC@~jHbSk#trwtc^p15}*8Zv&? z{v8}dw9UQhJ0v885^te_cq_t=n-w#mGU5b$2Y>JU*&heKIm!Q|MS=`?fB1bl7T#mG zQ=n0bEojnhkjN=s?RHAAaMK<%H#ZOc9=f7mqx_Rn!8VCQ@V=+gM7%-sln4$EMs+oN zpigvkG(t1lh9dN&Soq49j*bp{pMvAi50Ri_T6s@5P5re$3cu(b2{%PB=?mlFe`^P5 zL!&kEqGHMODcG})*^HXFAO;bSbijD6bf-%_mT$;t`(R~*XD`F7DTy0d_Jc1PT#JXE zi(2H4)YO>zix)3i)VoW;f~TWlmmm@ybl9_K`JsuJT_JGNh)kW{l^Y7hzS(W+o*v!{ zN67$)b!9kZr%D}9tqShdINe^TsBtn(=;HfA4pv2`;`B@HxOPpKB*x3j3mLykLE!)9 zp-t7u*k0SRL!OW2PVUZH*XnX^OPTg7o!F^!Z=YNf_f~aKL#W|On0Dt{%sA2KpSCX* z1LfXB146!2`9jcsC8xHdGsA9~uMARyi6Lm(%&_XtX{Wx|RtjDPE!K3l5Y*J++2(Ck zt1n{CYT${|)o5vH)#iVzQ)QaXX4yF5oXdpIf$8r@!>?cp8YY}YliSH4w(qcRH|oQ& zqS0h(Tk2~k?RQFi3=Zh!f`T$9u_4IJxZXG&`H`Ugn%s)flvXV6$&3x?OkSd;(gEY!yX3)9rWMrg(Eyp4)W|P@8O9bu0(kSiCkOzP=QoyA<)~p0v zf+l7LTX!#uSw>2@T*Aa6VAUO)poy)_WMN-!SZom(H$aSVHZjZI3>m2qtz@9SpxMMs8k2kg*!{0$w0{%P zrdF#BLP+VDUTb2SJA5jTa_=~FtuRdu;NKmKb8oi6{qR&c&8vd{6D3f4@JI-=Hwk4M z-8HH3^cgn+DpFh$W7tQblT5S=}U}zPw37j zC6if;e~Ma}*ir9ayNOxz*(7XzgcQ@s6&w$3j?8a>)jy`8XVGvyYOlUvWZf9ppP5-m zjTiQ6{||j96dA8ZA>_W!?i$B@7p^w_vgYFLrI|#G(nis9u^U*fNQC=Z)6`#=R)!(_ zU;*rrUe`jbwwa9~jj^RQwOOFi>F+N~eF!au`&tmOX!vhUz8^9(GYtm6m6etF^5IHE z{VB?2^0SEuUDJXVCG%p}qVL;SdsbUg^nEK**BU+-)|rk?2S;vx531*PrtY2SE@7s6 zDg=_zMznlm=156N(Okt@$$Po5v~kqWlA*tQd)P0rq@)BTj{*_z`eDhNlhJj9X#pVj zbUUuq&?9uB4~%Kc3LaIdXh@R9e=Tgl1OHfnf&V;g@S5Z81xUXw8W(mKi*%O!AxUn=Kh?&o0H?iK zuwcRE0|yT5GIe2JSTTUSUw^ho1Qp= zU%4(p=bHTn&(GQ3jiggy=;*Ytw>DRXg2w>NiR$TmrZ=F~-LgTfySqD_oSYtFdAXMw z{E4#CC^$HH71cSdVtS4GHm=Cd&c4IwY0;{z=?j{kII+tNV7GfCTr+rPsIizPtHewo zUVx8(eE_RxC3khCH#(rj}lM^3N^D|TC z&kK}b*BR&LBW^!pW?Z^-=?)_?i(Z+SUIB1@E^1}?de`Q$xc@9B-w(up6M_8?)f;3c z%HPw3SX-W>bcotBQeytPprF8{XC`8vH*endLx&DMZ1j>O0d9`CUd0UaMJ3%=mLYZf zcw~KXZRoki#zxGm{g3{mf$xsy)D1Qj^N}M*Y$9gDh{!%Vl5q<+eQxVpKPuy23}N+8 zj|BSJ{o`X+%!CmmXy2=o(DXq#{JLU9X^%{J=qE~SPsv5V+A7pI@hkD*onrdjk1yw= z_h?4x_^*2-djsoDUJomu-B9_Czn^Cd!>575$;o^ja7&=Budw019kI$e3>CuJy(w0g zPNN|~#h5`8 zOOyd1@n(<#Ak%Ban?VME7+%C`D;%T{G`%|9VzS<@p~Nix)WDBlAII-ror*dh+2%V! zOR(VS1pM%4(>i<=6&0xZFb&?%4GX&JLmyOC*{*IO`4-B4tru}CY<5UiZw7(MHJ3Ic z4eH}+)KLF*DY}r@mk5_k7mV9H4n;o|AurFW8izFG(<*v?XfjaZow(6ir4sox*rC4e ziT%dw0~hx~E1ZgN=-Tu7L6iL)jfz!@Wlr!xp-_-4zP#(X2!YFHW^v6SJ1ZMA`ez^^ zKLK}@+=YgK2Al{xfqm=u;idYQaADmAY}~lf+Eded?8Fo_TQPF8B>mn272CtKJ)V@z z|3ehXe9wFChSco#{jAFM{#&LX^H0qvDk{=GA0HpD30>3L+5-5{+lH-aMZ(7kV)Z&^ zA+vv>uNK-}%q*_CA<_rZQQ%&H-3`KRH@?3SufF~& zHo0%Yx<%_mIag~1P3O9kHbuTf1hpnpKW$?gj8-i4X6VBhXyicsHvrR03nyPbiPCkY zXusBuY15|R^y$-9ov$^5Hka#e#G?Kn1?OJv#-_sU_CA#n4PS2t1Wejo{`N97uV_%C zt|3*ytUYDHHZ)gF6>>2nc6E5|bMg4$<gn;45f0 zZ-&+J0Up)k(Q&{J9_j$rZTdM%{%Ti8>-}BpoeQ5Otx)R)zn5%*f@}3N8=A~;c;}^| zuaEii$Qz}UxY`tTkYRmAyZ6^lUPF^}6DEXA5OT@}@Da3RVs^Wf zgsKc?&w@JGCaq>=m<7e6ko-6~Y3)EEP1DYmV53Xg@=2^;zus(HmI#{7HAj0htoCT= zmlPHo_a-uOF4X=Wv5*?a{)KyczlFm?0LNa};E_;vSRZn)#9q%WmTQg+)qo0p4t)rouE~Xme>Z@nj?m=IM?O3*K8Fud6iIA`m1b-Eb^0snJ>Y9YY|8MX7 zLE4DoIR0%(heASw#x~J_;-71RgSLYmf+jd92<@aoTMI&6TwFSpm<(AQLL5SefH-z2 zZApe?$xt+unqvPDAy|;q)&^ASpN5bG8k_Xq#goe=7gPIUL%C0u<2~~3-SOq|d%ySI z_b$bdy_`i`Ya28g4aUaCU@#cam}|s7`y-?K`h#^S5(*5c2C#Z_wQ50=a-j>U@BxV8 zs4txS8j7NOh-Ql^_RW`0EXWeOe&GNQ9c}phZim|lPhQ#~6Jh^Rx(n~8@&}ZUKjH?> zuAQ0l6Ep3TCduQWOS~u3KHuJkubei@>qsfKIDJPrL`VP8%ko6KKh|AQp?E zqoV^2`37VZ87wFlu&LU_+?zS5ud2BXO=8Lknin(wL2!PACf9#G0jw8Nx-YnPyKsGo z`nAle1(n3y-{0>Ig+gNQ4k{jp$+t&3X@Hf znAgu^F}cXa(0;!kqw!IAuY0*T+#a^0UDXb+*IP0=6U2hPh+=Dllds%^;?W(Me@7MB z46&H0Wit}r67Y7>(XRLEw;qtPfyAqa&l`L(Gt!3HgT zANnx8ISoe7VEbSjcDtR6rwJPy8PhKPP1*v@n@WRo#OZu`n$s6f_aDJTm{MkeJzQHj~uc9SJd0P3+{JdTTw@{Hvi*hM* z%|wfGLB$0P1#w3fMP&Q)o&Iw_^PW31XPY_ayvvWz`vLBI@0mN#dCtr;&+>a}D_22y z!1CqG#flXx8eU&*wbewscJ1U(C@=-aH%*1{+qZ8o{|*J_&G;rTcF4H{m+V8&y=>Vt zE^}97)O=mAtQ)EXTGkC^+-1v_8GpyTi@2FC*%zVAWj{>%n7I^MUC?wxx%kYPGsO!p zykLBKeL&q%lR!bOR%_9#lS`R-m>544vdX@D_wHio(4o1%n{Doy69XfOnKl|Cw+LXBs zM*QV3e-V#9`l#4tmt9hQPU)Sl%nC}eQ!BK(=x3jOX8ipcYpfx+oA=*;KkcR4(29^& zKXkn_nKI}cW>zYNRu^5eWJ$yC7zAYwX}7hZ^#b!&EuzZ2P=D)=hr|lahcPj1D>G&W zPl*fP`ObHe4rd(Sb^ubY!O#aV+X1Kuw&hHG{3cRprOd9CIZm0uop;`ubPf&UfBNaCMsEre>e#VkP=!LEix)38D%9$$uP)~w zN}-a>H50AOS<$A<`FF*vP|9R7v)JOf_aT+prFWROCS?Xzi6l|x z(5nN=WU}3g5NLFD(4khwkjjkQO>R-<%-lmBzN`8mgScJEsL)AWbD_YhfHIY#%s|~x z6UtO(#tf~@O78 z|0r&~^;YrtHa_+zp5+G`tspG2VVzWc6J!rN}UO)72NcrJvVZyCrk zr?|s6-VA=ySOii_T{*o)_&WFAdvCegg~D;i9cNW$=4}%wzx(r_|15sPD-<{nzKXp#8CAO0Zjz4u=6@WT&_1q&7=8jJ5aXwV>W@WBU* zAO7%%&i5X0zyacSzx$nxoSJT^3Z*xPDjUAz=Rf~>ar)_}ry4(0e4}QoHVCcE$~~mU z-*?}A*IXVnXl+r-Z1XdR4rilC4?OUIJlx%V_ubOONQzB2-BcWTY z%S9YI_os~oh#7@MGmnm)yh(4{X~7&U3ZDI&ptc%HOY&>hkV*;r^);cJ=x`u zLkFCAfB{~|RZv^)bI(23qLo<( zGFNb!IiV3mpzE3#n;_hQi-^ z>#ZPTRsp1s-hA`T&b*k=P=|l73hg@41Dk7(16%2ho(UO#Yrcf zB=eio*m=zD{PWKjW5$e0RWij54Xw;J*;l0oFcg%T!FNbSG!u7GTR6K2q}ghD&!LAN zDoe7`V)W?IQlZnJ2%3j7Qwhp6bAZl%>qVjCLb{=mR-h#7XHjNKuZUu%LFlZxG82u; zK72DKyQGa$H#0wUoIulpY83)3Nw;(xb3WL3|++>gwiRei@DcMKN1sUj$nqpi1guWV&y0D~nv@xkLlc^Oh@BxihOW#Y6+g7g%*b=1&SIjZ zy)L=UXP$YcGZJaqC8!hZ)vK4YD1f3@J!qmb{aO=3-9uN&no?%nB1p^+9r6%z$|TqnrYp=alQV*DHX)3+(g6Nuw4vN$Tl6OsTh2KNjMR^sgcQiDu1d2V(p%TS~5eZqWyY9N;@WT%m7hG_G=-Rbw zlg}Y&=JMc!59aDMqfYdu!!I(A28?{e#iXTV&-Z}FKwmt3z*Xe~Y*jw7{Ln@5GgB=> z?y!y!zD~>veh`*=%1wx_4qy1f7o?r2h%EWOE}lQW-yVDHk?OnY;6YY)V-#icGZ#VF z>C!t_z{;x7E`gTq>+~T|lSe}z-?lpN0O$w65U4_;Q5AW?ld#Vk6Q+ljh})@iNTo1tK{ z2=Xo@4UeHB4{WU`>bA0}@XBn157{?SXf77bUh<8yOLxk)8(VYPlncIOUsq_Q%%N9@ z)@nDl=CUaleA5Zn)I~#vlNGACGAn_$RBr|-`|xcm7YjirTvN4JMLeCZL?bYJ_UzdD zJ(A~p^yuMy4<%5YJ9n1vP3!A~>VVJtf~$8ni-^n5OIj)vzc%naJ9X+Le@w9LO1w6A z?%a9`Xr6n|XW{TOC3}?-Fsc=$%qA#r1~;9Ae4WA4g`q=-%J-7O8O4u({9~EOk1|l> zMi<$njo`^)-e;eEa&c7q1UDNNRr)MOao&07$-Hhd|7c5W>WygfX1w#xJ2I`65;b2S z{~T)KK7IPsUsDT-jpBm)9%5IjRiWb%EJjI{86Z3e5O28Qh9f3r&SbKrpoN*)pV#F)$++SrAFx*u_e@6ZUM&@Lt= z(*bb%?YD2j{+W zT=S$$!IUXe#K@5&|9nmHpkI8c0p>z1v|LHMDSYt96lHv^IqY&(=L$)WJ;U;n!J z=}&)}`n$0OvsK@I`|Wb9Aw!1Lf5!m@g+J@8v&0*3ypj6a0D;=bZ?d#`=0Nz9pZp{> zAv_B8i(mXgnkJkhw%KNz`r(^`U*&P)#}-sLdW?!fz36C zEz1FipFHCyC1Avc%ZgaM&XY? z{`kz}SE&&^^ZV*ozbfa;L#zWLOm-w+s6xpa%8cw&Gbh$jLZrhXE%mKR`(Dbby48vqEV-bsL_V9 z%cfil2(pg`kpP641f#IE^NwG3-*UxD5LM>PJywz&g3^HNj2kyjMhlaeFT9^G4}Tod zv7|(STWz(KY{0p2;llcB*wD~e(Fyh9i!W}t)-%sMBYE5K7$_i2n^N(;e3==1SHj+O z9sue=wk5}_8bJ8=peobP3?F>(fpo8NJ))^mLP-vkgwx}qh|y#t=1W^QXwujPiy+{! zomWyTbf}_AB3}dn(gL>|PwUTr{&P8*xK)v@aKwla^5N0JHSnWyqki?PU)5hH3{KeD zXR=aS5P@T7fvYbrYfj0YMMWvD4s6aVuDC)T;>ZzE;QxE>xu^K=fB&25JO2CM|CS3w zC{GG-#Wzr9m6Mc8p{;VKpAT2QTG~S>s06>L%M8voWgY= z(9mU5JP77xb zl{W)rsv4t_scdS-j2SY#OQN|CRF$8ZoNc-Sn6d$VnM7p=jPfp`Muk=^^(K_fXrv32 z$>Z)DKYqNo8(Mavkx7|(uttpP>fBsoPKzti&d6j04bJ#``h0dRwDlIs!$G{ zHOCxrCq^sTab;pVrv*_?s&bNa;nLGEqu>zcIshUUyiMGnEHd)lnYgAd%F|hvGLzCt zS(U4OF_R35a9#PG8U$u$^Nj*#P&5o+VhuJkyRD$|5kj?egYk#36d3KKkgRWyCIS^*s6H zlbihim%sd_ET1=RSzWqxX=qtYiYU>+vU4+RARmI_%83b)_FTb} zXiD8s{LFlJQ$B`{GNWL=_?ek!G~XrZ_+^$&xlBCYc`Iw zmqMr8oRVF#BCd5>Xq(kWvrx9|L!%Uhj*^Z0MpYAyK~oKD0NZ%DYl%6GyoQGgE z(54D~%T3A*GAVQtfrdoc{LE!Gf-gJKs0xSgXd4RkZ<%11^`bsk2fiRZP^cM9vf{@@ zph9kSuCW=H)K&O1qP+!ujZK*rx#Q$J(?k<$FQ^byMALS)4 z`>Lz1l7ENZm2Ablnfam9Fd8KVHw1yS1W@n`xgvadzT8#ZL>e5SkSMZ#Q{iPk_Sj>^ zQ%^l*l|8bBqc0RFgFEJ!W194@@dTX`o+MRa)#SCf3l?#rhM$h@iW}M70jCDFd}(BYjA^d{?JZ>N zY5I-R*91y57ifwEDG!uladZ(`0EI%_cSwsQhi?-BkW-0_S#FD67Y~fR{-xw z5enTBWZy)g)kR&UJ0X?13dt_M5{)?IK^&75T$>)1MMcc}z zl8=vx5eMW+|3Mg0p#W2?qfvw|WNt~amkO;8L1hw=K+%N~n7%`30vuptU{w@ZCh$9m zU*P78zDGac+JL+3kw+eh-D=Y)G;_G~&O4693Bor;P6zFurzJjwEBB& z1;u%M>=P$WOg{k+VB9nc9V)(2bG4i;%9}y7t2sj_8`r^2*=CzXJEGDlC;#~**ZY$zYyj++Z;$KV4#%BIda=Ny@lS9D2S+IAEs z_&BRId^)r;n@-f6?m5KJN+C3-gX$+^LR^EKD0nX`FciH$;G=A6`|Y=v_AK&@Dz!3k zOy(WqW?32e9L%q9Z|8xplC`=*NApTUz*RQIR>?};lFO!C@R>?LS1NvVlvy?v2cNR9 zD|Fh`DGOR_xjnhjtePg1%Hk{ zGa8W(L*$R{Tei|69%R!(GG)pXaqhY2N`=mYvUep+92d=kZ+e-zXB3pAk;9x9RZwPE3TOzIaIG~fbI5=ZK4_OR+c1Cre7Q2`MU|Bqs9b8_ zD1}bflI zQknr>ekkt22Olh3+?4^$2P)DJIph#$qETod`yl+#wh7t188pyr&dLlZZ$hbPddcdP zBn4D&+pIuax+Ks)OM+8b$_&^IC1J z3Q^^P`VNqrAG*wrN6n?%6yL#?Vj2gO*whZWC6!HO0S}WY0-1{++QrWt8dVM)gzofJ z1%Bo->4Y&elrl#tbu;rr#|bnfT-~P1b!)s;Ov za%wL})me2yuMSmh1mD_aA5~_Mh#$J@?x9eKBYH1_P0D8Cg_gbU%`l+|*}D$kHrdDW zL)$vUw&tz2s7CO%)v4^mcM$_)m+U3cAeV&TGtnZF;3Y|B{WX4>YCAC}4(7^h6{dH?hvv9;NVBK z#}iLHA^%U+Ih3#@-@~ZS++B7f?TAsRveIV(4;1$YKI$l#1AKv1M5yyh&8EzHFS-!W z4>U{Ccnen7&dH} z-1f@?rCMj4aYkw5X92qjmFqfud6Jqav~N}&6HF&+o=Uby+BbyYbfAohLR?G-TSL(} z&?}I`A|{9ea=QEOyCq{$5-NeXyqL7EIaWH_TqJ2w1Uhxuqsm>F=C=*k=-FQ%qyv5H_Jtzx2)>9xZTKU~_|lP6D> z6a;#yKCV5T2O8)ai;6Yc?ia=)n!|G=)7Y%gTt&eRgvXhc8)C&M=FFKR zF2DS8v0%Xh<28NlN<2`6^C5WD!MtrPFnpFxVKbYQ8DKLGAo4iW&o3GZpms( z#EuTW`I!;dg4aS934J{l=VOkoBuDkA%D_%%2PL{sn*xj^T z*kg}9#HdlD#A~m;CSUK@ub*U0)enHfhYy!4)JreDr~O>r5<9>HTIN|*t9!{-Wk}7LMK&b7odto0iJyF z$<&8JSCx%UMAEx=Z!u`lpv>P9Vd0;q?ZmWc(_}Uq5kkx;-J7xAdh1DBop3k@vyh$~ zu1z2)O0%oJuP@~FW=Ib0Rez?}rb~Hs>C#24yY9N;xJAc_iAyJnNgXGN?dNTuI>@5R z1$8?-x3qnAJYuCG^qmHA{LHqdmU(~@5&i}U)a07uA%da5Onzpc{{6Jx3{#>}r&WJG zYxlp-Tq>B?X{}D;uqB6yiJc~j1@A48eQA>3FMT1?Wt>Z)%kFrTw{$1ZLA2^+Q%SQ4 zpytCw;dg~3BLhBS8 zCgR3S3Y{bh77BU!na?}#JfjOPDavjHUj&_SR&Pd@L?e{H*UDaEZu_~$6a^iw2bpnG zD|FoIP!!>{EjJ@hnF!#JMVA#-2xo^T;0YPdwtcq^S8gcYYyY0JoXr*AK$%reQeuS; zO+-Rpz6T$C(0RbL_0>>Jl)Avkug1-$C%+R|$x=W--638WS8{%6UpjN!cH3 z9o;gy!Fg77pFn9RO`6oCA7XP!G_r-bd9Cw`&f=5ypUB1P&1G-O6?^sC>hfMFWi}oF zSIs+`dYniSp*e!#9(knvf0C3>y`?epwpCx00TvZnFe`;FGttN= zo77sX{(Rd0Q*r;QKi}){J#om#hls0}TrFL>>b$~_&JlvLo6Or-g)V|4_@j?L%6$zR z=FOW||2M_1?elRhSd+Awz)eMx~M}CgeZ{B_y$k7-i&g$ z-FB0e+N|0pkYak$NhisFGiL-xhgf(ossdUjH@C7WuGMQrFR^gVg$*oC%T_EC57!aIE7NAGR&wUv^GPCzn||6nf?eZ+jKx;Mjwp(}=px7K+}ELyUtE_amqwAD@% z%NH&eLlzGaGgqG}mUdh!HtoHs%yPt}Kn~qjbQ2$}`onh~y~b!!n_m-aytsz=bn8zW zR%)X{W1QbH^X$z?zQe>)0LZw8MPT=@MnX?q7IA1_uGA6Jh0*casJcii=I7tioI6uC63wb z7;(h&M~KZ<+pPZC&MP~M#kIxa+RoRC$Cf-M#ymAfblsq<(X-S*r>m4X`h|ds0)_T7 zqg19Skk6n6D}bJu5A^eb=|o+GpBdSk#_(0@AE(R^SDKVLuk88kz!d|Wd`0x%Qq57%|A+v-FU3nYQa|Z#4@}dllo7RcKE2NqeS1e z`^xvn9t!om(&*~UheH>%ax-ll!6A9}fC^`q$n7gGOHURH-(4tnetu`suSY*= zMv}2-x*v6gR?4hTL@BlM_l1Jm8C*e=(EQ9OlP^Z2v~Vf2Puaun`? z)~fBE+fJPL`iY|7#{I-5n{U!YG5MSSZ`*#`x_QUW(0f^LF{;BT@!6K2iSFII%X5y+ zQmFGoNBbv7l{w^Aiz4eu+6qdbp{v8y&R{ZgLNl=P5b5U?9ll93ZP|$^GZbM_Z-(!M zWYDrfV&e}s7DM_Ck*h4@aqsnA5nUq?rki-Y)~i>q`ikwUL#&yUS^YaSJy@JFGj{0K zX=-IQDYK7SHyf1PRo8^*+@m4g5a8Mnyt6W!l-bwZRjTMIwNu2LzH?-NivykO_$fZzFtCP)U4(%RO50lF^7*d&{CY}x@`#hkc#s%gEzeto< z+LRaL1FGPHTomN1&T7$dn78RcPWpYC5Y6ajMhInsiKq?bgL@3;wMm&n?#ODPQV+68 zne#3rb+ShFw=y-_&@#dOh06m@?&#~GcO_+JnO0_W&PP9&{{ug+PmGNuotppv002ov JPDHLkV1fo+-2wmr diff --git a/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-dev-76x76@1x.png b/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-dev-76x76@1x.png index b4d734b09d3c377d6e3c35dbabdf36f63766c94f..fc8eefe7defe4df68e681759aaea1f8e0884580b 100644 GIT binary patch literal 5611 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 FV1lW((7gZv literal 4378 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 UL6Z^|zyJUM07*qoM6N<$f**^VssI20 diff --git a/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-dev-76x76@2x.png b/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-dev-76x76@2x.png index 2063f8ec59ea4b906eb6262a09b86c6dd239770c..399ff90e32d91692507cdddde20df10cabc36b89 100644 GIT binary patch literal 11139 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 kg^dx~)b9-IZMN6Gs76nN(Q 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 diff --git a/lib/dialogs/color_picker_dialog.dart b/lib/dialogs/color_picker_dialog.dart index 2f61190..b72cee6 100644 --- a/lib/dialogs/color_picker_dialog.dart +++ b/lib/dialogs/color_picker_dialog.dart @@ -99,8 +99,8 @@ showColorPickerDialog(BuildContext context, Color currentColor, contentPadding: const EdgeInsets.all(8), title: Text("Choose a Color"), actions: [ - FlatButton(child: Text("Cancel"), onPressed: _onCancel), - FlatButton( + TextButton(child: Text("Cancel"), onPressed: _onCancel), + ElevatedButton( child: Text("Apply"), onPressed: () { onColorChanged(selected); diff --git a/lib/dialogs/export_dialog.dart b/lib/dialogs/export_dialog.dart index ffedd11..593fa55 100644 --- a/lib/dialogs/export_dialog.dart +++ b/lib/dialogs/export_dialog.dart @@ -34,14 +34,14 @@ showExportDialog(BuildContext context, Note note) { onChanged: (v) => setState(() => current = v)), ]), actions: [ - new FlatButton( + new TextButton( child: Text("Cancel"), onPressed: () { Navigator.of(context).pop(); }, ), // usually buttons at the bottom of the dialog - new FlatButton( + new ElevatedButton( child: new Text("Export"), onPressed: () { _export(); diff --git a/lib/editor_views/additional_info.dart b/lib/editor_views/additional_info.dart index 36b5521..381b235 100644 --- a/lib/editor_views/additional_info.dart +++ b/lib/editor_views/additional_info.dart @@ -71,12 +71,12 @@ class NoteEditorAdditionalInfo extends StatelessWidget { _edit( initial: note.label == null ? "" : note.label.toString(), title: "Label", - hint: "Idea, Rock, Pop...", + hint: "Idea, Rock, Pop ...", onChanged: changeLabel), _edit( initial: note.artist == null ? "" : note.artist.toString(), title: "Artist", - hint: "leave empty if you are the artist", + hint: "Passenger, Ed Sheeran ...", onChanged: changeArtist), ]); } diff --git a/lib/editor_views/section.dart b/lib/editor_views/section.dart index 790b5b7..ad5fe9d 100644 --- a/lib/editor_views/section.dart +++ b/lib/editor_views/section.dart @@ -82,7 +82,7 @@ class AddSectionItem extends StatelessWidget { decoration: BoxDecoration( border: Border.all(color: Theme.of(context).cardColor, width: 2)), - child: FlatButton( + child: TextButton( child: Text("Add Section", style: Theme.of(context).textTheme.caption), onPressed: () => addSection(Section(title: "", content: "")), diff --git a/lib/export_note.dart b/lib/export_note.dart index 6f6c030..ce92277 100644 --- a/lib/export_note.dart +++ b/lib/export_note.dart @@ -87,8 +87,8 @@ class ExportNoteState extends State { width: 100, child: Padding( padding: EdgeInsets.only(left: 10), - child: - RaisedButton(onPressed: _export, child: Text("Export"))), + child: ElevatedButton( + onPressed: _export, child: Text("Export"))), ) ]) ]); diff --git a/lib/local_storage.dart b/lib/local_storage.dart index 42cbea4..5089e78 100644 --- a/lib/local_storage.dart +++ b/lib/local_storage.dart @@ -111,6 +111,7 @@ class LocalStorage { Future syncNote(Note note) async { print( "Syncing note ${note.id} with title ${note.title} and ${note.audioFiles} audio files"); + final db = await getDatabase(); for (int i = 0; i < note.sections.length; i++) { @@ -381,6 +382,8 @@ class LocalStorage { } Future syncNoteAttr(Note note, String attr) async { + if (["sections", "title", "audioFiles", "tuning"].contains(attr)) + note.lastModified = DateTime.now(); await syncNote(note); _controller.sink.add(await getNotes()); } diff --git a/lib/looper.dart b/lib/looper.dart index ece679d..8dee4f3 100644 --- a/lib/looper.dart +++ b/lib/looper.dart @@ -9,7 +9,9 @@ import 'range_slider.dart' as frs; class Looper extends StatefulWidget { final Color color; - Looper(this.color, {Key key}) : super(key: key); + final Function onMinimize; + + Looper(this.color, this.onMinimize, {Key key}) : super(key: key); @override _LooperState createState() => _LooperState(); @@ -56,15 +58,24 @@ class _LooperState extends State with StoreWatcherMixin { color: widget.color, height: 100, child: Column(children: [ - Row(mainAxisAlignment: MainAxisAlignment.end, children: [ - Padding( - padding: EdgeInsets.only(right: 8), - child: FlatButton( - visualDensity: VisualDensity.compact, - child: Text("Reset Loop"), - onPressed: - (range != null) ? () => _changeRangeValues(null) : null)) - ]), + Row( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Padding( + padding: EdgeInsets.only(left: 8), + child: IconButton( + onPressed: widget.onMinimize, + icon: Icon(Icons.arrow_downward), + )), + Padding( + padding: EdgeInsets.only(right: 8), + child: TextButton( + child: Text("Reset Loop"), + onPressed: (range != null) + ? () => _changeRangeValues(null) + : null)) + ]), Text( "Looper:", ), diff --git a/lib/main.dart b/lib/main.dart index 674d07c..a848c94 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -65,7 +65,7 @@ class AppState extends State with StoreWatcherMixin { Widget build(BuildContext context) { final ThemeData dark = ThemeData.dark().copyWith( indicatorColor: mainColor, - primaryColor: mainColor, + primaryColor: Colors.white, accentColor: mainColor, buttonColor: mainColor, colorScheme: ColorScheme.light().copyWith( @@ -106,7 +106,7 @@ class AppState extends State with StoreWatcherMixin { // foregroundColor: Theme.of(context).appBarTheme.backgroundColor, // backgroundColor: Theme.of(context).appBarTheme.textTheme.button.color, final ThemeData light = ThemeData.light().copyWith( - primaryColor: mainColor, + primaryColor: Colors.white, textSelectionTheme: ThemeData().textSelectionTheme.copyWith( selectionColor: mainColor, cursorColor: mainColor, @@ -139,7 +139,7 @@ class AppState extends State with StoreWatcherMixin { inactiveTrackColor: appBarColor), visualDensity: VisualDensity.adaptivePlatformDensity, floatingActionButtonTheme: FloatingActionButtonThemeData( - foregroundColor: Colors.white70, + foregroundColor: Colors.white, backgroundColor: appBarColor, )); diff --git a/lib/model.dart b/lib/model.dart index bca7670..2ca227e 100644 --- a/lib/model.dart +++ b/lib/model.dart @@ -148,13 +148,20 @@ String serializeDateTime(DateTime t) { return "${t.year}-${t.month}-${t.day}-${t.hour}-${t.minute}-${t.second}-${t.microsecond}-${t.millisecond}"; } -List serializeColor(Color color) { - return [color.alpha, color.red, color.green, color.blue]; +String serializeColor(Color color) { + return "${color.alpha};${color.red};${color.green};${color.blue}"; } -Color deserializeColor(List data) { - if (data == null) return null; - return Color.fromARGB(data[0], data[1], data[2], data[3]); +Color deserializeColor(dynamic data) { + if (data == null || data is List) return null; + try { + List args = + (data as String).split(";").map((e) => int.parse(e)).toList(); + return Color.fromARGB(args[0], args[1], args[2], args[3]); + } catch (e) { + print("error: could not parse color $data"); + } + return null; } class Note { diff --git a/lib/note_editor.dart b/lib/note_editor.dart index 0603e53..a9c740c 100644 --- a/lib/note_editor.dart +++ b/lib/note_editor.dart @@ -66,14 +66,15 @@ class NoteEditorContent extends StatefulWidget { enum TabType { structure, info, audio } class NoteEditorState extends State - with StoreWatcherMixin { + with StoreWatcherMixin, WidgetsBindingObserver { RecorderBottomSheetStore recorderStore; NoteEditorStore store; GlobalKey _globalKey = GlobalKey(); List popupMenuActions = ["share", "copy", "add"]; List popupMenuActionsLong = ["Share", "Copy", "Add To Set"]; bool get useTabs => widget.view == EditorView.tabs; - + var _isKeyboardVisible = false; + final Key bottomSheetKey = Key('bottomSheet'); Map dismissables = {}; @override @@ -131,7 +132,7 @@ class NoteEditorState extends State hardDeleteAudioFile(file); } }, - mainButton: FlatButton( + mainButton: TextButton( child: Text("Undo"), onPressed: () { if (!store.note.audioFiles.contains(file)) { @@ -153,7 +154,7 @@ class NoteEditorState extends State final snackBar = SnackBar( content: Text('Copied to Clipboard'), ); - _globalKey.currentState.showSnackBar(snackBar); + ScaffoldMessenger.of(context).showSnackBar(snackBar); }); } @@ -185,6 +186,17 @@ class NoteEditorState extends State )); } + @override + void didChangeMetrics() { + final bottomInset = WidgetsBinding.instance.window.viewInsets.bottom; + final newValue = bottomInset > 0.0; + if (newValue != _isKeyboardVisible) { + setState(() { + _isKeyboardVisible = newValue; + }); + } + } + @override Widget build(BuildContext context) { // map widgets to tabs @@ -352,7 +364,20 @@ class NoteEditorState extends State List categories = ["Structure", "Info", "Audio"]; List stackChildren = []; + + // add container to prevent from seeing all content + if (showSheet && useTabs) { + TabType.values.forEach((tt) { + items[tt].add(Container(height: recorderStore.minimized ? 70 : 300)); + }); + } + if (!useTabs) { + if (showSheet) { + items[TabType.audio] + .add(Container(height: recorderStore.minimized ? 70 : 300)); + } + stackChildren.add(_buildTabView(items[TabType.structure] ..addAll(items[TabType.info]) ..addAll(items[TabType.audio]))); @@ -372,7 +397,7 @@ class NoteEditorState extends State : null, ), bottomSheet: - showSheet ? RecorderBottomSheet(key: Key("bottomSheet")) : null, + showSheet ? RecorderBottomSheet(key: bottomSheetKey) : null, body: useTabs ? TabBarView( children: List.generate(categories.length, (int index) { diff --git a/lib/note_viewer.dart b/lib/note_viewer.dart index 3c0adb0..4de0f4a 100644 --- a/lib/note_viewer.dart +++ b/lib/note_viewer.dart @@ -1,11 +1,13 @@ import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; +import 'package:flutter_flux/flutter_flux.dart'; import 'package:sound/editor_views/additional_info.dart'; import 'package:sound/editor_views/audio.dart'; import 'package:sound/editor_views/section.dart'; import 'package:sound/local_storage.dart'; import 'package:sound/model.dart'; import 'package:sound/recorder_bottom_sheet.dart'; +import 'package:sound/recorder_store.dart'; class NoteViewer extends StatefulWidget { final Note note; @@ -30,16 +32,20 @@ class NoteViewer extends StatefulWidget { _NoteViewerState createState() => _NoteViewerState(); } -class _NoteViewerState extends State { +class _NoteViewerState extends State + with StoreWatcherMixin { ScrollController _controller; bool showButtons = true; double textScaleFactor = 1.0; bool isPlaying = false; double offset = 1.0; + RecorderBottomSheetStore recorderStore; @override void initState() { super.initState(); + recorderStore = listenToStore(recorderBottomSheetStoreToken); + print("note viewer minimize state: ${recorderStore.minimized}"); _controller = ScrollController() ..addListener(() { bool upDirection = @@ -208,6 +214,11 @@ class _NoteViewerState extends State { }); })); } + + if (widget.showSheet) { + items.add(Container(height: recorderStore.minimized ? 70 : 300)); + } + if (widget.actions != null) { actions.addAll(widget.actions); } diff --git a/lib/recorder_bottom_sheet.dart b/lib/recorder_bottom_sheet.dart index 97e8535..3bff2c2 100644 --- a/lib/recorder_bottom_sheet.dart +++ b/lib/recorder_bottom_sheet.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_flux/flutter_flux.dart'; import 'package:sound/looper.dart'; +import 'package:sound/utils.dart'; import 'recorder_store.dart'; class BottomInfo extends StatefulWidget { @@ -175,18 +176,75 @@ class RecorderBottomSheet extends StatefulWidget { } class _RecorderBottomSheetState extends State - with StoreWatcherMixin { + with StoreWatcherMixin, TickerProviderStateMixin { RecorderBottomSheetStore store; + double height; + + final double maxMinimizeHeight = 200; + final double bottomHeight = 60; + AnimationController _controller; + + Animation _slideAnimation; + Animation _scaleAnimation, _sheetScaleAnimation; + + bool forward = false; + ActionSubscription sub; @override void initState() { super.initState(); store = listenToStore(recorderBottomSheetStoreToken); - print("INIT STATE...."); + + height = maxMinimizeHeight; + _controller = + AnimationController(vsync: this, duration: Duration(milliseconds: 500)); + + _slideAnimation = Tween(begin: Offset(0, 0), end: Offset(0, 1.5)) + .animate(_controller); + + _sheetScaleAnimation = + Tween(begin: 1.0, end: -1.0).animate(_controller); + + _controller.addStatusListener((status) { + print(status); + if (status == AnimationStatus.forward) { + setState(() { + forward = true; + }); + } else if (status == AnimationStatus.reverse) { + setState(() { + forward = false; + }); + } else if (status == AnimationStatus.completed || + status == AnimationStatus.dismissed) { + setMinimized(forward); + } + }); + print("init recorder bottom sheet state"); + + Future.delayed(Duration(milliseconds: 100), () { + if (store.minimized) { + _controller.forward(); + } else { + _controller.reverse(); + } + }); + + sub = setMinimized.listen((m) { + if (forward != m) { + if (forward) { + _controller.reverse(); + } else { + _controller.forward(); + } + } + }); } @override void dispose() { + sub.cancel(); + _controller.dispose(); super.dispose(); } @@ -208,33 +266,62 @@ class _RecorderBottomSheetState extends State double width = MediaQuery.of(context).size.width; - Looper looper = Looper(color); + Looper looper = Looper(color, () { + _controller?.forward(); + }); BottomInfo info = BottomInfo(color); - if (showLooper) { - return Container( - // decoration: BoxDecoration( - // color: Theme.of(context).bottomAppBarColor, - // borderRadius: BorderRadius.all(Radius.circular(15)), - // boxShadow: [ - // BoxShadow( - // color: Theme.of(context).appBarTheme.color, - // spreadRadius: 2, - // blurRadius: 10, - // ), - // ]), - color: Theme.of(context).bottomAppBarColor, - height: 300, - width: width, - child: Column(children: [ - SizedBox(height: 10), - looper, - SizedBox(height: 50), - Text("Player:"), - PlayerSlider(), - Expanded(child: Container()), - info - ])); + return GestureDetector( + child: Column( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.end, + children: [ + SizeTransition( + axis: Axis.vertical, + sizeFactor: _sheetScaleAnimation, + child: Container( + // decoration: BoxDecoration( + // color: Theme.of(context).bottomAppBarColor, + // borderRadius: BorderRadius.all(Radius.circular(15)), + // boxShadow: [ + // BoxShadow( + // color: Theme.of(context).appBarTheme.color, + // spreadRadius: 2, + // blurRadius: 10, + // ), + // ]), + color: Theme.of(context).bottomAppBarColor, + height: bottomHeight + maxMinimizeHeight, + width: width, + child: Column(children: [ + SlideTransition( + position: _slideAnimation, + child: Container( + child: Column(children: [ + SizedBox(height: 10), + looper, + SizedBox(height: 50), + Text("Player:"), + PlayerSlider(), + ]))), + //Expanded(child: Container()), + ]), + )), + store.minimized + ? GestureDetector( + onTap: () => _controller.reverse(), + child: Container( + height: 20, + width: width, + alignment: Alignment.topCenter, + color: Theme.of(context).bottomAppBarColor, + child: IconButton( + icon: Icon(Icons.arrow_upward, size: 16)), + )) + : Container(), + info + ]), + ); } else { return info; } diff --git a/lib/recorder_store.dart b/lib/recorder_store.dart index e1e6f27..2fa26c7 100644 --- a/lib/recorder_store.dart +++ b/lib/recorder_store.dart @@ -65,6 +65,9 @@ class RecorderBottomSheetStore extends Store { RecorderState _state = RecorderState.STOP; String _currentPath; + bool _minimized; + bool get minimized => _minimized; + Duration _recordTime; Duration get recordTime => _recordTime; @@ -236,6 +239,7 @@ class RecorderBottomSheetStore extends Store { } RecorderBottomSheetStore() { + _minimized = false; // sound = FlutterSound(); startPlaybackAction.listen((AudioFile f) { if (_state == RecorderState.STOP || _state == RecorderState.PAUSING) { @@ -342,6 +346,14 @@ class RecorderBottomSheetStore extends Store { } }); + setMinimized.listen((m) { + print("set minimized internal: $m"); + if (m != minimized) { + _minimized = m; + trigger(); + } + }); + setDefaultAudioFormat.listen((format) { _audioFormat = format; print("ping"); @@ -365,6 +377,7 @@ Action recordingFinished = Action(); Action resetRecorderState = Action(); Action setLoopRange = Action(); Action setAudioFormat = Action(); +Action setMinimized = Action(); StoreToken recorderBottomSheetStoreToken = StoreToken(RecorderBottomSheetStore()); diff --git a/lib/settings.dart b/lib/settings.dart index 94c75cc..2739e4d 100644 --- a/lib/settings.dart +++ b/lib/settings.dart @@ -55,7 +55,7 @@ class SettingsState extends State with StoreWatcherMixin { mainAxisAlignment: MainAxisAlignment.spaceAround, children: [ Expanded(child: Text("Theme: ")), - RaisedButton( + ElevatedButton( child: Text(_themeAsString()), onPressed: toggleTheme, ), @@ -83,7 +83,7 @@ class SettingsState extends State with StoreWatcherMixin { mainAxisAlignment: MainAxisAlignment.spaceAround, children: [ Expanded(child: Text("AudioFormat: ")), - RaisedButton( + ElevatedButton( child: Text(_audioFormatAsString()), onPressed: _toggleAudioFormat), ], )); @@ -112,7 +112,7 @@ class SettingsState extends State with StoreWatcherMixin { mainAxisAlignment: MainAxisAlignment.spaceAround, children: [ Expanded(child: Text("EditorView: ")), - RaisedButton( + ElevatedButton( child: Text(_editorViewAsString()), onPressed: _toggleEditorView), ], )); @@ -132,7 +132,7 @@ class SettingsState extends State with StoreWatcherMixin { textScaleFactor: 0.4, ) ])), - RaisedButton( + ElevatedButton( child: Text(store.name == null ? "Edit" : store.name), onPressed: _showEditNameDialog), ], @@ -157,14 +157,14 @@ class SettingsState extends State with StoreWatcherMixin { controller: _controller, ), actions: [ - new FlatButton( + new TextButton( child: Text("Cancel"), onPressed: () { Navigator.of(context).pop(); }, ), // usually buttons at the bottom of the dialog - new FlatButton( + new ElevatedButton( child: new Text("Apply"), onPressed: () { setName(_controller.value.text); diff --git a/lib/utils.dart b/lib/utils.dart index 86c31c6..e67dcfe 100644 --- a/lib/utils.dart +++ b/lib/utils.dart @@ -1,4 +1,33 @@ import 'package:flutter/material.dart'; +import 'package:flutter/foundation.dart'; + +class LifecycleEventHandler extends WidgetsBindingObserver { + final AsyncCallback resumeCallBack; + final AsyncCallback suspendingCallBack; + + LifecycleEventHandler({ + this.resumeCallBack, + this.suspendingCallBack, + }); + + @override + Future didChangeAppLifecycleState(AppLifecycleState state) async { + switch (state) { + case AppLifecycleState.resumed: + if (resumeCallBack != null) { + await resumeCallBack(); + } + break; + case AppLifecycleState.inactive: + case AppLifecycleState.paused: + case AppLifecycleState.detached: + if (suspendingCallBack != null) { + await suspendingCallBack(); + } + break; + } + } +} const defaultDuration = Duration(seconds: 2); showUndoSnackbar(ScaffoldState state, String dataString, dynamic data, diff --git a/pubspec.lock b/pubspec.lock index 7973518..e3f9919 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -21,7 +21,7 @@ packages: name: async url: "https://pub.dartlang.org" source: hosted - version: "2.4.2" + version: "2.6.1" audioplayers: dependency: "direct main" description: @@ -42,21 +42,21 @@ packages: name: boolean_selector url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.1.0" characters: dependency: transitive description: name: characters url: "https://pub.dartlang.org" source: hosted - version: "1.0.0" + version: "1.1.0" charcode: dependency: transitive description: name: charcode url: "https://pub.dartlang.org" source: hosted - version: "1.1.3" + version: "1.2.0" clipboard_manager: dependency: "direct main" description: @@ -70,14 +70,14 @@ packages: name: clock url: "https://pub.dartlang.org" source: hosted - version: "1.0.1" + version: "1.1.0" collection: dependency: transitive description: name: collection url: "https://pub.dartlang.org" source: hosted - version: "1.14.13" + version: "1.15.0" convert: dependency: transitive description: @@ -105,7 +105,7 @@ packages: name: fake_async url: "https://pub.dartlang.org" source: hosted - version: "1.1.0" + version: "1.2.0" file: dependency: transitive description: @@ -146,6 +146,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.5.5" + flutter_file_dialog: + dependency: "direct main" + description: + name: flutter_file_dialog + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.0" flutter_flux: dependency: "direct main" description: @@ -153,6 +160,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "4.1.3" + flutter_launcher_icons: + dependency: "direct main" + description: + name: flutter_launcher_icons + url: "https://pub.dartlang.org" + source: hosted + version: "0.8.1" flutter_plugin_android_lifecycle: dependency: transitive description: @@ -177,6 +191,27 @@ packages: description: flutter source: sdk version: "0.0.0" + google_fonts: + dependency: "direct main" + description: + name: google_fonts + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.2" + http: + dependency: transitive + description: + name: http + url: "https://pub.dartlang.org" + source: hosted + version: "0.12.2" + http_parser: + dependency: transitive + description: + name: http_parser + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.4" image: dependency: transitive description: @@ -191,27 +226,34 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.16.1" + js: + dependency: transitive + description: + name: js + url: "https://pub.dartlang.org" + source: hosted + version: "0.6.3" matcher: dependency: transitive description: name: matcher url: "https://pub.dartlang.org" source: hosted - version: "0.12.8" + version: "0.12.10" meta: dependency: transitive description: name: meta url: "https://pub.dartlang.org" source: hosted - version: "1.1.8" + version: "1.3.0" path: dependency: "direct main" description: name: path url: "https://pub.dartlang.org" source: hosted - version: "1.7.0" + version: "1.8.0" path_parsing: dependency: transitive description: @@ -254,6 +296,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.11.1" + pedantic: + dependency: transitive + description: + name: pedantic + url: "https://pub.dartlang.org" + source: hosted + version: "1.11.1" permission_handler: dependency: "direct main" description: @@ -363,42 +412,63 @@ packages: name: source_span url: "https://pub.dartlang.org" source: hosted - version: "1.7.0" + version: "1.8.1" + sqflite: + dependency: "direct main" + description: + name: sqflite + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.2+4" + sqflite_common: + dependency: transitive + description: + name: sqflite_common + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.3+3" stack_trace: dependency: transitive description: name: stack_trace url: "https://pub.dartlang.org" source: hosted - version: "1.9.5" + version: "1.10.0" stream_channel: dependency: transitive description: name: stream_channel url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.1.0" string_scanner: dependency: transitive description: name: string_scanner url: "https://pub.dartlang.org" source: hosted - version: "1.0.5" + version: "1.1.0" + synchronized: + dependency: transitive + description: + name: synchronized + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.0+2" term_glyph: dependency: transitive description: name: term_glyph url: "https://pub.dartlang.org" source: hosted - version: "1.1.0" + version: "1.2.0" test_api: dependency: transitive description: name: test_api url: "https://pub.dartlang.org" source: hosted - version: "0.2.17" + version: "0.3.0" tuple: dependency: "direct main" description: @@ -412,7 +482,7 @@ packages: name: typed_data url: "https://pub.dartlang.org" source: hosted - version: "1.2.0" + version: "1.3.0" utf: dependency: transitive description: @@ -433,7 +503,7 @@ packages: name: vector_math url: "https://pub.dartlang.org" source: hosted - version: "2.0.8" + version: "2.1.0" xdg_directories: dependency: transitive description: @@ -448,6 +518,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "4.2.0" + yaml: + dependency: transitive + description: + name: yaml + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.1" sdks: - dart: ">=2.9.0-14.0.dev <3.0.0" - flutter: ">=1.12.13+hotfix.5 <2.0.0" + dart: ">=2.12.0 <3.0.0" + flutter: ">=1.22.2" From 4386ba58b09e1d47ae9338b1a370274bb2168575 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sat, 10 Jul 2021 16:01:23 +0200 Subject: [PATCH 024/146] Swiping motions for playback / looper - detect keyboard open / close - change brightness of app bar to make it visible --- lib/main.dart | 9 ++++-- lib/note_editor.dart | 14 +--------- lib/recorder_bottom_sheet.dart | 51 ++++++++++++++++++++++++++-------- 3 files changed, 48 insertions(+), 26 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index a848c94..d0a099d 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,5 +1,6 @@ import 'dart:async'; +import 'package:flutter/services.dart'; import 'package:flutter_flux/flutter_flux.dart'; import 'package:flutter/material.dart'; import 'package:receive_sharing_intent/receive_sharing_intent.dart'; @@ -81,7 +82,9 @@ class AppState extends State with StoreWatcherMixin { cardColor: Colors.grey.shade800, selectedRowColor: mainColor, appBarTheme: ThemeData.dark().appBarTheme.copyWith( - color: appBarColor, textTheme: ThemeData.dark().textTheme), + brightness: Brightness.dark, + color: appBarColor, + textTheme: ThemeData.dark().textTheme), buttonTheme: ThemeData.dark().buttonTheme.copyWith(buttonColor: mainColor), chipTheme: @@ -118,7 +121,9 @@ class AppState extends State with StoreWatcherMixin { background: Colors.black54, surface: Colors.black54), appBarTheme: ThemeData.light().appBarTheme.copyWith( - color: appBarColor, textTheme: ThemeData.light().accentTextTheme), + brightness: Brightness.dark, + color: appBarColor, + textTheme: ThemeData.light().accentTextTheme), chipTheme: ThemeData.light().chipTheme.copyWith(selectedColor: mainColor), indicatorColor: mainColor, diff --git a/lib/note_editor.dart b/lib/note_editor.dart index a9c740c..a2c2ead 100644 --- a/lib/note_editor.dart +++ b/lib/note_editor.dart @@ -66,14 +66,13 @@ class NoteEditorContent extends StatefulWidget { enum TabType { structure, info, audio } class NoteEditorState extends State - with StoreWatcherMixin, WidgetsBindingObserver { + with StoreWatcherMixin { RecorderBottomSheetStore recorderStore; NoteEditorStore store; GlobalKey _globalKey = GlobalKey(); List popupMenuActions = ["share", "copy", "add"]; List popupMenuActionsLong = ["Share", "Copy", "Add To Set"]; bool get useTabs => widget.view == EditorView.tabs; - var _isKeyboardVisible = false; final Key bottomSheetKey = Key('bottomSheet'); Map dismissables = {}; @@ -186,17 +185,6 @@ class NoteEditorState extends State )); } - @override - void didChangeMetrics() { - final bottomInset = WidgetsBinding.instance.window.viewInsets.bottom; - final newValue = bottomInset > 0.0; - if (newValue != _isKeyboardVisible) { - setState(() { - _isKeyboardVisible = newValue; - }); - } - } - @override Widget build(BuildContext context) { // map widgets to tabs diff --git a/lib/recorder_bottom_sheet.dart b/lib/recorder_bottom_sheet.dart index 3bff2c2..f88944f 100644 --- a/lib/recorder_bottom_sheet.dart +++ b/lib/recorder_bottom_sheet.dart @@ -176,7 +176,10 @@ class RecorderBottomSheet extends StatefulWidget { } class _RecorderBottomSheetState extends State - with StoreWatcherMixin, TickerProviderStateMixin { + with + StoreWatcherMixin, + TickerProviderStateMixin, + WidgetsBindingObserver { RecorderBottomSheetStore store; double height; @@ -195,9 +198,15 @@ class _RecorderBottomSheetState extends State super.initState(); store = listenToStore(recorderBottomSheetStoreToken); + WidgetsBinding.instance.addObserver(this); + final keyboardOpen = WidgetsBinding.instance.window.viewInsets.bottom > 0; + forward = keyboardOpen || store.minimized; + height = maxMinimizeHeight; - _controller = - AnimationController(vsync: this, duration: Duration(milliseconds: 500)); + _controller = AnimationController( + value: (forward) ? 1.0 : 0.0, // TODO check this + vsync: this, + duration: Duration(milliseconds: 500)); _slideAnimation = Tween(begin: Offset(0, 0), end: Offset(0, 1.5)) .animate(_controller); @@ -222,13 +231,13 @@ class _RecorderBottomSheetState extends State }); print("init recorder bottom sheet state"); - Future.delayed(Duration(milliseconds: 100), () { - if (store.minimized) { - _controller.forward(); - } else { - _controller.reverse(); - } - }); + // Future.delayed(Duration(milliseconds: 100), () { + // if (store.minimized) { + // _controller.forward(); + // } else { + // _controller.reverse(); + // } + // }); sub = setMinimized.listen((m) { if (forward != m) { @@ -245,9 +254,20 @@ class _RecorderBottomSheetState extends State void dispose() { sub.cancel(); _controller.dispose(); + WidgetsBinding.instance.removeObserver(this); super.dispose(); } + @override + void didChangeMetrics() { + final bottomInset = WidgetsBinding.instance.window.viewInsets.bottom; + print("bottomInsets: $bottomInset"); + + if (bottomInset > 0.0 && !store.minimized) { + _controller.forward(); + } + } + @override Widget build(BuildContext context) { if (store.state == RecorderState.STOP) @@ -261,7 +281,7 @@ class _RecorderBottomSheetState extends State store.state == RecorderState.PAUSING) { color = Theme.of(context).bottomAppBarColor; } else if (store.state == RecorderState.RECORDING) { - color = Theme.of(context).primaryColor; + color = Theme.of(context).accentColor; } double width = MediaQuery.of(context).size.width; @@ -270,8 +290,17 @@ class _RecorderBottomSheetState extends State _controller?.forward(); }); BottomInfo info = BottomInfo(color); + if (showLooper) { return GestureDetector( + onPanUpdate: (details) { + if (details.delta.dy < -5 && forward && store.minimized) { + print("reverse ${details.delta.dy}"); + _controller.reverse(); + } else if (details.delta.dy > 5 && !forward && !store.minimized) { + _controller.forward(); + } + }, child: Column( mainAxisSize: MainAxisSize.min, mainAxisAlignment: MainAxisAlignment.end, From 493ba25ecdf875a15230d393f2ea800bba80e208 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sat, 10 Jul 2021 19:19:49 +0200 Subject: [PATCH 025/146] Multi-Note Viewer - NoteCollectionViewer - Add indicator for position in the set --- lib/collections.dart | 8 ++ lib/note_viewer.dart | 329 ++++++++++++++++++++++++++++++++----------- 2 files changed, 258 insertions(+), 79 deletions(-) diff --git a/lib/collections.dart b/lib/collections.dart index 061d32c..a614f40 100644 --- a/lib/collections.dart +++ b/lib/collections.dart @@ -7,6 +7,7 @@ import 'package:sound/local_storage.dart'; import 'package:sound/model.dart'; import 'package:sound/collections_store.dart'; import 'package:sound/note_search_view.dart'; +import 'package:sound/note_viewer.dart'; import 'package:sound/utils.dart'; class NoteCollectionItemModel { @@ -251,6 +252,12 @@ class _CollectionEditorState extends State // }); } + _onPlay() { + Navigator.of(context).push(MaterialPageRoute(builder: (context) { + return NoteCollectionViewer(store.collection); + })); + } + @override Widget build(BuildContext context) { var notes = []; @@ -306,6 +313,7 @@ class _CollectionEditorState extends State ))); List actions = [ + IconButton(icon: Icon(Icons.play_circle), onPressed: _onPlay), IconButton( icon: Icon((store.collection.starred) ? Icons.star : Icons.star_border), diff --git a/lib/note_viewer.dart b/lib/note_viewer.dart index 4de0f4a..b9b30f8 100644 --- a/lib/note_viewer.dart +++ b/lib/note_viewer.dart @@ -9,7 +9,101 @@ import 'package:sound/model.dart'; import 'package:sound/recorder_bottom_sheet.dart'; import 'package:sound/recorder_store.dart'; -class NoteViewer extends StatefulWidget { +class NoteCollectionViewer extends StatelessWidget { + final NoteCollection collection; + + NoteCollectionViewer(this.collection, {Key key}); + + @override + Widget build(BuildContext context) { + return NotesViewer(collection.notes, + showAdditionalInformation: false, + showTitle: true, + showZoomPlayback: true, + showAudioFiles: false); + } +} + +class NoteViewerContent extends StatelessWidget { + final Note note; + final bool showTitle, + showAdditionalInformation, + showAudioFiles, + showSheet, + sheetMinimized; + final double textScaleFactor; + final ScrollController controller; + + const NoteViewerContent(this.note, this.sheetMinimized, + {this.controller, + this.textScaleFactor = 1.0, + this.showAdditionalInformation = true, + this.showTitle = true, + this.showAudioFiles = false, + this.showSheet = false, + Key key}) + : super(key: key); + + @override + Widget build(BuildContext context) { + List items = []; + + if (showTitle) { + items.add(NoteEditorTitle( + title: note.title, + allowEdit: false, + onChange: (_) {}, + )); + } + + for (Section section in note.sections) { + items.add(SectionView( + section: section, + textScaleFactor: textScaleFactor, + richChords: true)); + } + + if (showAdditionalInformation) { + items.add(NoteEditorAdditionalInfo( + note, + allowEdit: false, + )); + } + + if (showAudioFiles) { + items.add(Padding( + padding: EdgeInsets.symmetric(vertical: 20), + child: Text( + 'Audio Files', + style: Theme.of(context).textTheme.subtitle1, + ))); + + items.addAll(note.audioFiles.map((e) { + return AudioFileListItem(e, onPressed: () { + playInDialog(context, e); + }); + })); + } + + if (showSheet) { + items.add(Container(height: sheetMinimized ? 70 : 300)); + } + + return Container( + child: Stack(children: [ + Container( + padding: EdgeInsets.all(16), + child: ListView.builder( + controller: controller, + itemBuilder: (context, index) => items[index], + itemCount: items.length, + )), + ]), + ); + } +} + +class NoteViewer extends StatelessWidget { final Note note; final List actions; final bool showAudioFiles, @@ -28,36 +122,81 @@ class NoteViewer extends StatefulWidget { Key key}) : super(key: key); + @override + Widget build(BuildContext context) { + return NotesViewer( + [this.note], + actions: actions, + showZoomPlayback: showZoomPlayback, + showTitle: showTitle, + showSheet: showSheet, + showAdditionalInformation: showAdditionalInformation, + ); + } +} + +class NotesViewer extends StatefulWidget { + final List notes; + final List actions; + + final bool showAudioFiles, + showAdditionalInformation, + showTitle, + showZoomPlayback, + showSheet; + + NotesViewer(this.notes, + {this.actions, + this.showZoomPlayback = true, + this.showAudioFiles = true, + this.showTitle = true, + this.showSheet = false, + this.showAdditionalInformation = true, + Key key}) + : super(key: key); + @override _NoteViewerState createState() => _NoteViewerState(); } -class _NoteViewerState extends State - with StoreWatcherMixin { - ScrollController _controller; - bool showButtons = true; +class _NoteViewerState extends State + with StoreWatcherMixin, TickerProviderStateMixin { + ScrollController _scollController; + AnimationController _animationController; + + Animation _sizeController; + double textScaleFactor = 1.0; bool isPlaying = false; double offset = 1.0; RecorderBottomSheetStore recorderStore; + int page = 0; + PageController pageController; + + Note get note => widget.notes[page]; @override void initState() { super.initState(); + pageController = PageController(initialPage: page); + _scollController = ScrollController(debugLabel: "contentController"); + + _animationController = AnimationController( + value: 1.0, vsync: this, duration: Duration(milliseconds: 500)); + + _sizeController = + Tween(begin: 0.8, end: 1.0).animate(_animationController); + recorderStore = listenToStore(recorderBottomSheetStoreToken); print("note viewer minimize state: ${recorderStore.minimized}"); - _controller = ScrollController() - ..addListener(() { - bool upDirection = - _controller.position.userScrollDirection == ScrollDirection.forward; - }); - - textScaleFactor = widget.note.zoom; - offset = widget.note.scrollOffset; + + textScaleFactor = note.zoom; + offset = note.scrollOffset == null ? 1.0 : note.scrollOffset; } @override void dispose() { + _animationController.dispose(); // setState(() { // isPlaying = false; // }); @@ -65,47 +204,51 @@ class _NoteViewerState extends State } _updateZoom() async { - Note note = widget.note; note.zoom = textScaleFactor; await LocalStorage().syncNoteAttr(note, "zoom"); } _updateScrollOffset() async { - Note note = widget.note; note.scrollOffset = offset; await LocalStorage().syncNoteAttr(note, "scrollOffset"); } - @override - Widget build(BuildContext context) { - List items = []; + _getNoteViewerContent(Note note) { + return NoteViewerContent( + note, + recorderStore.minimized, + controller: _scollController, + textScaleFactor: textScaleFactor, + showAdditionalInformation: widget.showAdditionalInformation, + showAudioFiles: widget.showAudioFiles, + showSheet: widget.showSheet, + showTitle: widget.showTitle, + ); + } - if (widget.showTitle) { - items.add(NoteEditorTitle( - title: widget.note.title, - allowEdit: false, - onChange: (_) {}, - )); - } + _onPageChange(_page) { + _animationController.reverse(); - for (Section section in widget.note.sections) { - items.add(SectionView( - section: section, - textScaleFactor: textScaleFactor, - richChords: true)); - } + setState(() { + offset = widget.notes[_page].scrollOffset; + textScaleFactor = widget.notes[_page].zoom; + page = _page; + }); + _animationController.forward(); + } + @override + Widget build(BuildContext context) { List playingActions = [ IconButton( - color: Theme.of(context).accentColor, icon: Icon(Icons.stop), onPressed: () { setState(() { isPlaying = false; }); }), + Container(width: 48, height: 48), IconButton( - color: Theme.of(context).accentColor, icon: Icon(Icons.fast_rewind), onPressed: () { setState(() { @@ -114,7 +257,6 @@ class _NoteViewerState extends State _updateScrollOffset(); }), IconButton( - color: Theme.of(context).accentColor, icon: Icon(Icons.fast_forward), onPressed: () { setState(() { @@ -126,7 +268,7 @@ class _NoteViewerState extends State List actions = []; - if (widget.showZoomPlayback) { + if (widget.showZoomPlayback && !isPlaying) { actions.addAll([ IconButton( icon: Icon(Icons.play_arrow), @@ -139,10 +281,11 @@ class _NoteViewerState extends State Future.microtask(() async { bool atEdge = false; while (!atEdge && isPlaying) { - await _controller.animateTo(_controller.offset + offset, + await _scollController.animateTo( + _scollController.offset + offset, duration: Duration(milliseconds: 50), curve: Curves.ease); - atEdge = _controller.position.atEdge; + atEdge = _scollController.position.atEdge; } setState(() { isPlaying = false; @@ -181,6 +324,8 @@ class _NoteViewerState extends State }, ) ]); + } else if (isPlaying) { + actions.addAll(playingActions); } // Widget overlay = Container( // decoration: BoxDecoration( @@ -192,59 +337,85 @@ class _NoteViewerState extends State // children: (isPlaying) ? playingActions : actions, // )); - if (widget.showAdditionalInformation) { - items.add(NoteEditorAdditionalInfo( - widget.note, - allowEdit: false, - )); - } - // add audio files - if (widget.showAudioFiles) { - items.add(Padding( - padding: EdgeInsets.symmetric(vertical: 20), - child: Text( - 'Audio Files', - style: Theme.of(context).textTheme.subtitle1, - ))); - items.addAll(widget.note.audioFiles.map((e) { - return AudioFileListItem(e, onPressed: () { - playInDialog(context, e); - }); - })); + if (widget.actions != null) { + actions.addAll(widget.actions); } - if (widget.showSheet) { - items.add(Container(height: recorderStore.minimized ? 70 : 300)); + Widget body; + + if (widget.notes.length > 1) { + body = Container( + child: PageView( + controller: isPlaying ? null : pageController, + onPageChanged: _onPageChange, + children: widget.notes + .map((Note n) => _getNoteViewerContent(n)) + .toList())); + } else { + body = _getNoteViewerContent(note); } - if (widget.actions != null) { - actions.addAll(widget.actions); + double prefferedHeight = 24; + double noteIndicatorHeight = prefferedHeight - 8; + double noteIndicatorPadding = 4; + double noteIndicatorOffsetRight = 80; + + double noteIndicatorWidth = (MediaQuery.of(context).size.width - + noteIndicatorPadding * widget.notes.length - + noteIndicatorOffsetRight) / + widget.notes.length; + Color indicatorColor = Theme.of(context).scaffoldBackgroundColor; + Color highlightColor = Theme.of(context).accentColor; + + _buildIndicator(int index) { + return Container( + decoration: BoxDecoration( + color: (index == page) ? highlightColor : indicatorColor, + borderRadius: BorderRadius.circular(5)), + padding: null, + width: noteIndicatorWidth, + height: noteIndicatorHeight, + ); } - return Scaffold( - appBar: AppBar( - actions: actions, + Widget indicator = PreferredSize( + preferredSize: Size.fromHeight(prefferedHeight), + child: Container( + child: Row( + children: widget.notes + .asMap() + .map( + (int index, Note _note) => MapEntry( + index, + Padding( + padding: EdgeInsets.only( + left: noteIndicatorPadding, + bottom: noteIndicatorPadding, + ), + child: Transform.scale( + scale: (index == page) ? _sizeController.value : 0.8, + child: _buildIndicator(index), + ), + )), + ) + .values + .toList() + ..add(Expanded( + child: Container( + alignment: Alignment.centerRight, + padding: EdgeInsets.only(right: 8, bottom: 8), + child: Text("${page + 1}/${widget.notes.length}")))), ), + ), + ); + + return Scaffold( + appBar: AppBar(actions: actions, bottom: indicator), bottomSheet: widget.showSheet ? RecorderBottomSheet(key: Key("bottomSheetViewer")) : null, - body: Container( - child: Stack(children: [ - Container( - padding: EdgeInsets.all(16), - child: ListView.builder( - controller: _controller, - itemBuilder: (context, index) => items[index], - itemCount: items.length, - )), - // Positioned( - // child: widget.showZoomPlayback ? overlay : Container(), - // top: 32, - // right: 8, - // ), - ]), - )); + body: body); } } From 1e3d95886b148753e663b67805badbf13147f43f Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sat, 10 Jul 2021 20:17:24 +0200 Subject: [PATCH 026/146] Only show indicator when > 1 --- lib/note_viewer.dart | 110 +++++++++++++++++++++---------------------- 1 file changed, 55 insertions(+), 55 deletions(-) diff --git a/lib/note_viewer.dart b/lib/note_viewer.dart index b9b30f8..71772be 100644 --- a/lib/note_viewer.dart +++ b/lib/note_viewer.dart @@ -343,7 +343,7 @@ class _NoteViewerState extends State actions.addAll(widget.actions); } - Widget body; + Widget body, indicator; if (widget.notes.length > 1) { body = Container( @@ -353,64 +353,64 @@ class _NoteViewerState extends State children: widget.notes .map((Note n) => _getNoteViewerContent(n)) .toList())); - } else { - body = _getNoteViewerContent(note); - } - double prefferedHeight = 24; - double noteIndicatorHeight = prefferedHeight - 8; - double noteIndicatorPadding = 4; - double noteIndicatorOffsetRight = 80; - - double noteIndicatorWidth = (MediaQuery.of(context).size.width - - noteIndicatorPadding * widget.notes.length - - noteIndicatorOffsetRight) / - widget.notes.length; - Color indicatorColor = Theme.of(context).scaffoldBackgroundColor; - Color highlightColor = Theme.of(context).accentColor; - - _buildIndicator(int index) { - return Container( - decoration: BoxDecoration( - color: (index == page) ? highlightColor : indicatorColor, - borderRadius: BorderRadius.circular(5)), - padding: null, - width: noteIndicatorWidth, - height: noteIndicatorHeight, + double prefferedHeight = 24; + double noteIndicatorHeight = prefferedHeight - 8; + double noteIndicatorPadding = 4; + double noteIndicatorOffsetRight = 80; + + double noteIndicatorWidth = (MediaQuery.of(context).size.width - + noteIndicatorPadding * widget.notes.length - + noteIndicatorOffsetRight) / + widget.notes.length; + Color indicatorColor = Theme.of(context).scaffoldBackgroundColor; + Color highlightColor = Theme.of(context).accentColor; + + _buildIndicator(int index) { + return Container( + decoration: BoxDecoration( + color: (index == page) ? highlightColor : indicatorColor, + borderRadius: BorderRadius.circular(5)), + padding: null, + width: noteIndicatorWidth, + height: noteIndicatorHeight, + ); + } + + indicator = PreferredSize( + preferredSize: Size.fromHeight(prefferedHeight), + child: Container( + child: Row( + children: widget.notes + .asMap() + .map( + (int index, Note _note) => MapEntry( + index, + Padding( + padding: EdgeInsets.only( + left: noteIndicatorPadding, + bottom: noteIndicatorPadding, + ), + child: Transform.scale( + scale: (index == page) ? _sizeController.value : 0.8, + child: _buildIndicator(index), + ), + )), + ) + .values + .toList() + ..add(Expanded( + child: Container( + alignment: Alignment.centerRight, + padding: EdgeInsets.only(right: 8, bottom: 8), + child: Text("${page + 1}/${widget.notes.length}")))), + ), + ), ); + } else { + body = _getNoteViewerContent(note); } - Widget indicator = PreferredSize( - preferredSize: Size.fromHeight(prefferedHeight), - child: Container( - child: Row( - children: widget.notes - .asMap() - .map( - (int index, Note _note) => MapEntry( - index, - Padding( - padding: EdgeInsets.only( - left: noteIndicatorPadding, - bottom: noteIndicatorPadding, - ), - child: Transform.scale( - scale: (index == page) ? _sizeController.value : 0.8, - child: _buildIndicator(index), - ), - )), - ) - .values - .toList() - ..add(Expanded( - child: Container( - alignment: Alignment.centerRight, - padding: EdgeInsets.only(right: 8, bottom: 8), - child: Text("${page + 1}/${widget.notes.length}")))), - ), - ), - ); - return Scaffold( appBar: AppBar(actions: actions, bottom: indicator), bottomSheet: widget.showSheet From 80053c793f33a387f9b0c878bbd63ee28af9607d Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sat, 10 Jul 2021 20:17:29 +0200 Subject: [PATCH 027/146] Add itemsByFrequency --- lib/utils.dart | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/lib/utils.dart b/lib/utils.dart index e67dcfe..a3a25a7 100644 --- a/lib/utils.dart +++ b/lib/utils.dart @@ -1,6 +1,18 @@ import 'package:flutter/material.dart'; import 'package:flutter/foundation.dart'; +List itemsByFrequency(List input) => [ + ...(input + .fold>( + {}, + (map, letter) => map + ..update(letter, (value) => value + 1, ifAbsent: () => 1)) + .entries + .toList() + ..sort((e1, e2) => e2.value.compareTo(e1.value))) + .map((e) => e.key) + ]; + class LifecycleEventHandler extends WidgetsBindingObserver { final AsyncCallback resumeCallBack; final AsyncCallback suspendingCallBack; From 865c5e551c91826db54618ab2986f86848cad7a9 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sat, 10 Jul 2021 20:17:50 +0200 Subject: [PATCH 028/146] Add focus information from additional info --- lib/editor_views/additional_info.dart | 121 +++++++++++++++++++------- 1 file changed, 89 insertions(+), 32 deletions(-) diff --git a/lib/editor_views/additional_info.dart b/lib/editor_views/additional_info.dart index 381b235..32bd268 100644 --- a/lib/editor_views/additional_info.dart +++ b/lib/editor_views/additional_info.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:sound/editor_store.dart'; import 'package:sound/model.dart'; +import 'package:tuple/tuple.dart'; class NoteEditorTitle extends StatelessWidget { final String title, hintText, labelText; @@ -32,52 +33,108 @@ class NoteEditorTitle extends StatelessWidget { } } -class NoteEditorAdditionalInfo extends StatelessWidget { +enum AdditionalInfoItem { tuning, capo, key, label, artist } + +class NoteEditorAdditionalInfo extends StatefulWidget { final Note note; final bool allowEdit; + final List items; + final ValueChanged onFocusChange; - const NoteEditorAdditionalInfo(this.note, {this.allowEdit = true, Key key}) + const NoteEditorAdditionalInfo(this.note, + {this.allowEdit = true, + this.items = AdditionalInfoItem.values, + this.onFocusChange, + Key key}) : super(key: key); - _edit({initial, title, hint, onChanged}) { + @override + _NoteEditorAdditionalInfoState createState() => + _NoteEditorAdditionalInfoState(); +} + +class _NoteEditorAdditionalInfoState extends State { + Map focusNodes = {}; + + @override + void initState() { + super.initState(); + widget.items.forEach((item) { + FocusNode node = FocusNode(); + node.addListener(() { + if (widget.onFocusChange != null && node.hasFocus) { + print("focused $item"); + widget.onFocusChange(item); + } + }); + focusNodes[item] = node; + }); + } + + _edit({initial, title, hint, onChanged, focus}) { return TextFormField( initialValue: initial, + focusNode: focus, decoration: InputDecoration( labelText: title, border: InputBorder.none, hintText: hint), - enabled: allowEdit, + enabled: widget.allowEdit, onChanged: (v) => onChanged(v), maxLines: 1); } + getEdit(AdditionalInfoItem item) { + switch (item) { + case AdditionalInfoItem.tuning: + return _edit( + initial: widget.note.tuning == null ? "" : widget.note.tuning, + title: "Tuning", + hint: "Standard, Dadgad ...", + focus: focusNodes[item], + onChanged: changeTuning); + + case AdditionalInfoItem.capo: + return _edit( + initial: + widget.note.capo == null ? "" : widget.note.capo.toString(), + title: "Capo", + hint: "7, 5 ...", + focus: focusNodes[item], + onChanged: changeCapo); + + case AdditionalInfoItem.key: + return _edit( + initial: widget.note.key == null ? "" : widget.note.key.toString(), + title: "Key", + hint: "C Major, A Minor ...", + focus: focusNodes[item], + onChanged: changeKey); + case AdditionalInfoItem.label: + return _edit( + initial: + widget.note.label == null ? "" : widget.note.label.toString(), + title: "Label", + hint: "Idea, Rock, Pop ...", + focus: focusNodes[item], + onChanged: changeLabel); + + case AdditionalInfoItem.artist: + return _edit( + initial: + widget.note.artist == null ? "" : widget.note.artist.toString(), + title: "Artist", + hint: "Passenger, Ed Sheeran ...", + focus: focusNodes[item], + onChanged: changeArtist); + default: + return null; + break; + } + } + @override Widget build(BuildContext context) { - // EdgeInsets.only(left: 10, top: 10) - return Wrap(runSpacing: 1, children: [ - _edit( - initial: note.tuning == null ? "" : note.tuning, - title: "Tuning", - hint: "Standard, Dadgad ...", - onChanged: changeTuning), - _edit( - initial: note.capo == null ? "" : note.capo.toString(), - title: "Capo", - hint: "7, 5 ...", - onChanged: changeCapo), - _edit( - initial: note.key == null ? "" : note.key.toString(), - title: "Key", - hint: "C Major, A Minor ...", - onChanged: changeKey), - _edit( - initial: note.label == null ? "" : note.label.toString(), - title: "Label", - hint: "Idea, Rock, Pop ...", - onChanged: changeLabel), - _edit( - initial: note.artist == null ? "" : note.artist.toString(), - title: "Artist", - hint: "Passenger, Ed Sheeran ...", - onChanged: changeArtist), - ]); + return Wrap( + runSpacing: 1, + children: widget.items.map((item) => getEdit(item)).toList()); } } From 1cd21ecaeba48e9f9f906d2462383dac36a3b587 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sat, 10 Jul 2021 22:11:13 +0200 Subject: [PATCH 029/146] Fix empty string and not updating edit field bug --- lib/editor_store.dart | 5 - lib/editor_views/additional_info.dart | 112 ++++++++++++++++------- lib/note_editor.dart | 126 +++++++++++++++++++++++++- 3 files changed, 202 insertions(+), 41 deletions(-) diff --git a/lib/editor_store.dart b/lib/editor_store.dart index 28eab24..f7f4a05 100644 --- a/lib/editor_store.dart +++ b/lib/editor_store.dart @@ -129,31 +129,26 @@ class NoteEditorStore extends Store { }); changeTuning.listen((String x) async { - if (x.trim() == "") return; _note.tuning = x; await LocalStorage().syncNoteAttr(_note, 'tuning'); trigger(); }); changeKey.listen((String x) async { - if (x.trim() == "") return; _note.key = x; await LocalStorage().syncNoteAttr(_note, 'key'); trigger(); }); changeLabel.listen((String x) async { - if (x.trim() == "") return; _note.label = x; await LocalStorage().syncNoteAttr(_note, 'label'); trigger(); }); changeArtist.listen((String x) async { - if (x.trim() == "") return; _note.artist = x; await LocalStorage().syncNoteAttr(_note, 'artist'); trigger(); }); changeInstrument.listen((String x) async { - if (x.trim() == "") return; _note.instrument = x; await LocalStorage().syncNoteAttr(_note, 'instrument'); trigger(); diff --git a/lib/editor_views/additional_info.dart b/lib/editor_views/additional_info.dart index 32bd268..c19d6e9 100644 --- a/lib/editor_views/additional_info.dart +++ b/lib/editor_views/additional_info.dart @@ -35,16 +35,36 @@ class NoteEditorTitle extends StatelessWidget { enum AdditionalInfoItem { tuning, capo, key, label, artist } +getAddtionalInfoItemFromNote(Note note, AdditionalInfoItem item) { + switch (item) { + case AdditionalInfoItem.key: + return note.key; + case AdditionalInfoItem.tuning: + return note.tuning; + case AdditionalInfoItem.capo: + return note.capo; + case AdditionalInfoItem.label: + return note.label; + case AdditionalInfoItem.artist: + return note.artist; + default: + return null; + } +} + class NoteEditorAdditionalInfo extends StatefulWidget { final Note note; final bool allowEdit; final List items; final ValueChanged onFocusChange; + final ValueChanged> + onChange; // general any value change (to update suggestions) const NoteEditorAdditionalInfo(this.note, {this.allowEdit = true, this.items = AdditionalInfoItem.values, this.onFocusChange, + this.onChange, Key key}) : super(key: key); @@ -55,10 +75,33 @@ class NoteEditorAdditionalInfo extends StatefulWidget { class _NoteEditorAdditionalInfoState extends State { Map focusNodes = {}; + Map controllers = {}; + + @override + void didUpdateWidget(NoteEditorAdditionalInfo oldWidget) { + super.didUpdateWidget(oldWidget); + + print("Addtional Info Widget Update"); + widget.items.forEach((item) { + String data = getAddtionalInfoItemFromNote(widget.note, item); + print(item); + print("note value: $data"); + print("controller value: ${controllers[item].text}"); + if (data == null) data = ""; + + if (controllers[item].text != data && data != null) { + print("update from note"); + controllers[item].text = data; + controllers[item].selection = + TextSelection.fromPosition(TextPosition(offset: data.length)); + } + }); + } @override void initState() { super.initState(); + widget.items.forEach((item) { FocusNode node = FocusNode(); node.addListener(() { @@ -68,17 +111,23 @@ class _NoteEditorAdditionalInfoState extends State { } }); focusNodes[item] = node; + + String text = getAddtionalInfoItemFromNote(widget.note, item); + controllers[item] = TextEditingController(text: text == null ? "" : text); }); } - _edit({initial, title, hint, onChanged, focus}) { + _edit({initial, title, hint, item}) { return TextFormField( - initialValue: initial, - focusNode: focus, + focusNode: focusNodes[item], decoration: InputDecoration( labelText: title, border: InputBorder.none, hintText: hint), enabled: widget.allowEdit, - onChanged: (v) => onChanged(v), + onChanged: (v) { + print("$item on changed => ${v == null}"); + if (widget.onChange != null) widget.onChange(Tuple2(item, v)); + }, + controller: controllers[item], maxLines: 1); } @@ -86,45 +135,44 @@ class _NoteEditorAdditionalInfoState extends State { switch (item) { case AdditionalInfoItem.tuning: return _edit( - initial: widget.note.tuning == null ? "" : widget.note.tuning, - title: "Tuning", - hint: "Standard, Dadgad ...", - focus: focusNodes[item], - onChanged: changeTuning); + initial: widget.note.tuning == null ? "" : widget.note.tuning, + title: "Tuning", + hint: "Standard, Dadgad ...", + item: item, + ); case AdditionalInfoItem.capo: return _edit( - initial: - widget.note.capo == null ? "" : widget.note.capo.toString(), - title: "Capo", - hint: "7, 5 ...", - focus: focusNodes[item], - onChanged: changeCapo); + initial: widget.note.capo == null ? "" : widget.note.capo.toString(), + title: "Capo", + hint: "7, 5 ...", + item: item, + ); case AdditionalInfoItem.key: return _edit( - initial: widget.note.key == null ? "" : widget.note.key.toString(), - title: "Key", - hint: "C Major, A Minor ...", - focus: focusNodes[item], - onChanged: changeKey); + initial: widget.note.key == null ? "" : widget.note.key.toString(), + title: "Key", + hint: "C Major, A Minor ...", + item: item, + ); case AdditionalInfoItem.label: return _edit( - initial: - widget.note.label == null ? "" : widget.note.label.toString(), - title: "Label", - hint: "Idea, Rock, Pop ...", - focus: focusNodes[item], - onChanged: changeLabel); + initial: + widget.note.label == null ? "" : widget.note.label.toString(), + title: "Label", + hint: "Idea, Rock, Pop ...", + item: item, + ); case AdditionalInfoItem.artist: return _edit( - initial: - widget.note.artist == null ? "" : widget.note.artist.toString(), - title: "Artist", - hint: "Passenger, Ed Sheeran ...", - focus: focusNodes[item], - onChanged: changeArtist); + initial: + widget.note.artist == null ? "" : widget.note.artist.toString(), + title: "Artist", + hint: "Passenger, Ed Sheeran ...", + item: item, + ); default: return null; break; diff --git a/lib/note_editor.dart b/lib/note_editor.dart index a2c2ead..4026ddb 100644 --- a/lib/note_editor.dart +++ b/lib/note_editor.dart @@ -66,7 +66,7 @@ class NoteEditorContent extends StatefulWidget { enum TabType { structure, info, audio } class NoteEditorState extends State - with StoreWatcherMixin { + with StoreWatcherMixin, WidgetsBindingObserver { RecorderBottomSheetStore recorderStore; NoteEditorStore store; GlobalKey _globalKey = GlobalKey(); @@ -75,13 +75,17 @@ class NoteEditorState extends State bool get useTabs => widget.view == EditorView.tabs; final Key bottomSheetKey = Key('bottomSheet'); Map dismissables = {}; + AdditionalInfoItem focusedAdditionalInfoItem; + List additionalItemSuggestions = []; @override void initState() { super.initState(); + WidgetsBinding.instance.addObserver(this); recorderStore = listenToStore(recorderBottomSheetStoreToken); store = listenToStore(noteEditorStoreToken); store.setNote(widget.note); + print("INIT EDITOR"); recordingFinished.clearListeners(); @@ -103,6 +107,7 @@ class NoteEditorState extends State @override void dispose() { + WidgetsBinding.instance.removeObserver(this); recordingFinished.clearListeners(); //store.dispose(); //recorderStore.dispose(); @@ -185,6 +190,97 @@ class NoteEditorState extends State )); } + _onAdditionalInfoValueChange(AdditionalInfoItem item, String value) { + _onAdditionalInfoFocusChange(item); + _onSuggestionTap(value); + } + + _onAdditionalInfoFocusChange(AdditionalInfoItem item) async { + var suggestions = await _getInfoSuggestions(item); + setState(() { + additionalItemSuggestions = suggestions; + focusedAdditionalInfoItem = item; + }); + } + + Future> _getInfoSuggestions(AdditionalInfoItem item) async { + if (item == null) return []; + + Iterable notes = (await LocalStorage().getActiveNotes()) + .where((element) => element.id != store.note.id); + + String search = getAddtionalInfoItemFromNote(store.note, item); + + if (search != null) search = search.toLowerCase(); + + switch (item) { + case AdditionalInfoItem.key: + return itemsByFrequency(notes + .map((note) => note.key) + .where((element) => + element != null && + element.trim().length != 0 && + (search == null || element.toLowerCase().contains(search))) + .toList()); + case AdditionalInfoItem.tuning: + return itemsByFrequency(notes + .map((note) => note.tuning) + .where((element) => + element != null && + element.trim().length != 0 && + (search == null || element.toLowerCase().contains(search))) + .toList()); + case AdditionalInfoItem.capo: + return itemsByFrequency(notes + .map((note) => note.capo) + .where((element) => + element != null && + element.trim().length != 0 && + (search == null || element.toLowerCase().contains(search))) + .toList()); + case AdditionalInfoItem.label: + return itemsByFrequency(notes + .map((note) => note.label) + .where((element) => + element != null && + element.trim().length != 0 && + (search == null || element.toLowerCase().contains(search))) + .toList()); + case AdditionalInfoItem.artist: + return itemsByFrequency(notes + .map((note) => note.artist) + .where((element) => + element != null && + element.trim().length != 0 && + (search == null || element.toLowerCase().contains(search))) + .toList()); + default: + return []; + } + } + + _onSuggestionTap(String text) { + switch (focusedAdditionalInfoItem) { + case AdditionalInfoItem.key: + changeKey(text); + break; + case AdditionalInfoItem.tuning: + changeTuning(text); + break; + case AdditionalInfoItem.capo: + changeCapo(text); + break; + case AdditionalInfoItem.label: + changeLabel(text); + break; + case AdditionalInfoItem.artist: + changeArtist(text); + break; + default: + break; + } + } + @override Widget build(BuildContext context) { // map widgets to tabs @@ -218,7 +314,10 @@ class NoteEditorState extends State items[TabType.structure].add(AddSectionItem()); // all additional info - items[TabType.info].add(NoteEditorAdditionalInfo(store.note)); + items[TabType.info].add(NoteEditorAdditionalInfo(store.note, + onChange: (data) => + _onAdditionalInfoValueChange(data.item1, data.item2), + onFocusChange: _onAdditionalInfoFocusChange)); // audio files as stack if (store.note.audioFiles.length > 0 && !useTabs) @@ -371,6 +470,22 @@ class NoteEditorState extends State ..addAll(items[TabType.audio]))); } + final keyboardOpen = WidgetsBinding.instance.window.viewInsets.bottom > 0; + + Widget suggestionSheet = PreferredSize( + preferredSize: Size.fromHeight(20), + child: Container( + padding: EdgeInsets.only(left: 8), + child: Wrap( + alignment: WrapAlignment.start, + spacing: 8, + children: additionalItemSuggestions + .map((o) => GestureDetector( + onTap: () => _onSuggestionTap(o), + child: Chip(label: Text(o)))) + .toList()), + )); + Scaffold scaffold = Scaffold( key: _globalKey, appBar: AppBar( @@ -384,8 +499,11 @@ class NoteEditorState extends State })) : null, ), - bottomSheet: - showSheet ? RecorderBottomSheet(key: bottomSheetKey) : null, + bottomSheet: showSheet + ? RecorderBottomSheet(key: bottomSheetKey) + : (keyboardOpen && focusedAdditionalInfoItem != null) + ? suggestionSheet + : null, body: useTabs ? TabBarView( children: List.generate(categories.length, (int index) { From f66acbf9089550304868fd2226f476ea0a65f47b Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sat, 10 Jul 2021 22:11:21 +0200 Subject: [PATCH 030/146] Use rich text --- lib/note_item.dart | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/lib/note_item.dart b/lib/note_item.dart index 6b407b1..6b3bd7a 100644 --- a/lib/note_item.dart +++ b/lib/note_item.dart @@ -247,6 +247,20 @@ class NoteItem extends AbstractNoteItem { ); } + _richText(String text) { + return Text.rich( + TextSpan( + text: text, + ), + //softWrap: true, + //overflow: TextOverflow.clip, + //maxLines: 1, + //style: Theme.of(context).textTheme.headline6, + textScaleFactor: 1.0, + textAlign: TextAlign.right, + ); + } + _bottom() { return Padding( padding: EdgeInsets.all(padding), @@ -254,7 +268,7 @@ class NoteItem extends AbstractNoteItem { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text("${note.sections.length} Sections"), - Text((note.tuning == null) ? "Standard" : "${note.tuning}") + _richText((note.tuning == null) ? "Standard" : "${note.tuning}") ], )); } From ddaebc1c5ce03c4bb8596f9cb5d85a85df65d634 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sat, 10 Jul 2021 22:52:24 +0200 Subject: [PATCH 031/146] Fix a-z sorting --- lib/storage.dart | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/lib/storage.dart b/lib/storage.dart index 1aff264..a703449 100644 --- a/lib/storage.dart +++ b/lib/storage.dart @@ -332,6 +332,7 @@ class StaticStorage extends Store { if (note.tuning != null && note.tuning.toLowerCase().contains(search)) return true; + if (note.sections.any((s) => s.content.toLowerCase().contains(search) || resolveRichContent(s.content).toLowerCase().contains(search) || @@ -375,6 +376,13 @@ class StaticStorage extends Store { return true; } + String getLower(String t) { + if (t == null) + return null; + else + return t.toLowerCase(); + } + int _sort(Note a, Note b) { if (_sortBy == SortBy.lastModified) { if (_sortDirection == SortDirection.up) { @@ -390,11 +398,12 @@ class StaticStorage extends Store { } } else if (_sortBy == SortBy.az) { if (_sortDirection == SortDirection.up) { - return b.title.compareTo(a.title); + return getLower(b.title).compareTo(getLower(a.title)); } else { - return a.title.compareTo(b.title); + return getLower(a.title).compareTo(getLower(b.title)); } - } + } else + return 1; } List get filteredNotes { From 5d66776a2f493d328d3230982ec9fb6f8e7ffaf1 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sat, 10 Jul 2021 22:52:38 +0200 Subject: [PATCH 032/146] Use TextButton instead of IconButton --- lib/note_views/appbar.dart | 50 ++++++++++++++++++++++---------------- 1 file changed, 29 insertions(+), 21 deletions(-) diff --git a/lib/note_views/appbar.dart b/lib/note_views/appbar.dart index d9bd184..91fb0b9 100644 --- a/lib/note_views/appbar.dart +++ b/lib/note_views/appbar.dart @@ -190,17 +190,20 @@ class SortingView extends StatelessWidget { } arrowOption(BuildContext context) { - return IconButton( - onPressed: _onDirectionChange, - icon: Icon( - direction == SortDirection.up - ? Icons.arrow_upward - : Icons.arrow_downward, - size: 20, - color: Theme.of(context).appBarTheme.textTheme.button.color, - ), - splashRadius: 5, + // arrow icon not vanishing under the app bar + Icon icon = Icon( + direction == SortDirection.up ? Icons.arrow_upward : Icons.arrow_downward, + size: 10, + color: Theme.of(context).appBarTheme.textTheme.button.color, ); + return TextButton( + onPressed: _onDirectionChange, + child: Text( + (direction == SortDirection.up) ? "Up" : "Down", + style: Theme.of(context).appBarTheme.textTheme.button, + textScaleFactor: 0.9, + ), + clipBehavior: Clip.hardEdge); } @override @@ -209,17 +212,22 @@ class SortingView extends StatelessWidget { padding: EdgeInsets.only(top: 70), child: Container( color: Theme.of(context).appBarTheme.backgroundColor, - child: Row(crossAxisAlignment: CrossAxisAlignment.start, children: [ - Expanded( - child: TextButton( - onPressed: _onSortByChange, - child: Text(byText(), - style: Theme.of(context).appBarTheme.textTheme.button)), - ), - Expanded( - child: arrowOption(context), - ), - ]), + child: Row( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + Expanded( + child: TextButton( + onPressed: _onSortByChange, + child: Text(byText(), + textScaleFactor: 0.9, + style: + Theme.of(context).appBarTheme.textTheme.button)), + ), + Expanded( + child: arrowOption(context), + ), + ]), )); } } From 7132eaad8c01f0e60b386bdb7f77d59b9082c5f0 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 11 Jul 2021 00:28:33 +0200 Subject: [PATCH 033/146] Fix isSelected --- lib/storage.dart | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/storage.dart b/lib/storage.dart index a703449..caab6b8 100644 --- a/lib/storage.dart +++ b/lib/storage.dart @@ -151,7 +151,8 @@ class StaticStorage extends Store { return false; } - bool isSelected(Note note) => _selectedNotes.contains(note); + bool isSelected(Note note) => + _selectedNotes.where((n) => n.id == note.id).toList().length > 0; bool isAnyNoteSelected() => _selectedNotes.length > 0; @@ -215,11 +216,11 @@ class StaticStorage extends Store { }); triggerSelectNote.listen((Note note) { - if (!_selectedNotes.contains(note)) { + if (!isSelected(note)) { _selectedNotes.add(note); trigger(); } else { - _selectedNotes.remove(note); + _selectedNotes.removeWhere((element) => element.id == note.id); trigger(); } }); From ca1909bb4fc4565f0b6977352f34a29848a4dee0 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 11 Jul 2021 00:28:53 +0200 Subject: [PATCH 034/146] selection includes sorting options --- lib/home.dart | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/home.dart b/lib/home.dart index 33202ca..37b0d78 100644 --- a/lib/home.dart +++ b/lib/home.dart @@ -209,6 +209,8 @@ class HomeContentState extends State return SliverAppBar( pinned: true, + flexibleSpace: _sortingView(), + expandedHeight: 80, leading: IconButton( icon: Icon(Icons.clear), onPressed: () => clearSelection()), title: Text(storage.selectedNotes.length.toString()), From 67819d199c22ac46fa419eacef07ff0098af3e71 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 11 Jul 2021 01:10:04 +0200 Subject: [PATCH 035/146] Fix border and decorations for better highlighting --- lib/collections.dart | 4 +++- lib/note_item.dart | 11 ++++++++--- lib/utils.dart | 16 +++++++++++++++- 3 files changed, 26 insertions(+), 5 deletions(-) diff --git a/lib/collections.dart b/lib/collections.dart index a614f40..6c42bdb 100644 --- a/lib/collections.dart +++ b/lib/collections.dart @@ -167,7 +167,9 @@ class SmallNoteCollectionItem extends StatelessWidget { Widget child = Card( color: null, child: Container( - decoration: isSelected ? getSelectedDecoration(context) : null, + decoration: isSelected + ? getSelectedDecoration(context) + : getNormalDecoration(context), child: Padding( padding: EdgeInsets.all(8.0), child: Column( diff --git a/lib/note_item.dart b/lib/note_item.dart index 6b3bd7a..073399d 100644 --- a/lib/note_item.dart +++ b/lib/note_item.dart @@ -162,8 +162,11 @@ class SmallNoteItem extends AbstractNoteItem { Widget build(BuildContext context) { Widget child = Card( color: note.color, + shape: (isSelected ? getSelectedChardShape(context) : null), child: Container( - decoration: isSelected ? getSelectedDecoration(context) : null, + decoration: (isSelected) + ? getSelectedDecoration(context) + : getNormalDecoration(context), child: empty ? emptyText(context) : hasOnlyTitle @@ -280,10 +283,12 @@ class NoteItem extends AbstractNoteItem { onLongPress: onLongPress, child: Container( child: Card( + shape: (isSelected ? getSelectedChardShape(context) : null), color: note.color, child: Container( - decoration: - isSelected ? getSelectedDecoration(context) : null, + decoration: (isSelected + ? getSelectedDecoration(context) + : getNormalDecoration(context)), child: (empty) ? emptyText(context) : hasOnlyTitle diff --git a/lib/utils.dart b/lib/utils.dart index a3a25a7..ad9948b 100644 --- a/lib/utils.dart +++ b/lib/utils.dart @@ -62,8 +62,22 @@ Color getSelectedCardColor(BuildContext context) { return Theme.of(context).textTheme.bodyText1.color.withOpacity(0.4); } +ShapeBorder getSelectedChardShape(BuildContext context) { + return RoundedRectangleBorder( + side: BorderSide(width: 1, color: getSelectedCardColor(context)), + borderRadius: BorderRadius.circular(5.0), + ); +} + BoxDecoration getSelectedDecoration(BuildContext context) { - return BoxDecoration(color: getSelectedCardColor(context)); + return BoxDecoration( + color: getSelectedCardColor(context), + borderRadius: BorderRadius.circular(5.0), + ); +} + +BoxDecoration getNormalDecoration(BuildContext context) { + return null; } String resolveRichContent(String data) { From 81112e8c17b7bada77b59e3ec14d7d4b52c4e9c2 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 11 Jul 2021 01:14:40 +0200 Subject: [PATCH 036/146] Working on click for transitions menu --- lib/menu.dart | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/menu.dart b/lib/menu.dart index ad6e826..e6aa363 100644 --- a/lib/menu.dart +++ b/lib/menu.dart @@ -139,7 +139,9 @@ class _MenuState extends State
with SingleTickerProviderStateMixin { child: Material( animationDuration: animateMenuDuration, child: !isCollapsed - ? AbsorbPointer(child: _getView()) + ? GestureDetector( + onTap: _onMenuPressed, + child: AbsorbPointer(child: _getView())) : _getView(), borderRadius: BorderRadius.all(Radius.circular(isCollapsed ? 0 : 10)), From 3787deb323ff2ebcdb1abd2a2c039e9104e247a0 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 11 Jul 2021 01:25:05 +0200 Subject: [PATCH 037/146] Fix setting audio format --- lib/recorder_store.dart | 5 +++++ lib/settings.dart | 1 + 2 files changed, 6 insertions(+) diff --git a/lib/recorder_store.dart b/lib/recorder_store.dart index 2fa26c7..82d864c 100644 --- a/lib/recorder_store.dart +++ b/lib/recorder_store.dart @@ -7,6 +7,7 @@ import 'package:flutter_flux/flutter_flux.dart' show Store, Action, StoreToken; import 'package:path_provider/path_provider.dart'; import 'package:permission_handler/permission_handler.dart'; import 'package:sound/editor_store.dart'; +import 'package:sound/local_storage.dart'; import 'package:sound/settings_store.dart'; import 'package:tuple/tuple.dart'; import 'dart:async'; @@ -240,6 +241,10 @@ class RecorderBottomSheetStore extends Store { RecorderBottomSheetStore() { _minimized = false; + + LocalStorage() + .getSettings() + .then((value) => _audioFormat = value.audioFormat); // sound = FlutterSound(); startPlaybackAction.listen((AudioFile f) { if (_state == RecorderState.STOP || _state == RecorderState.PAUSING) { diff --git a/lib/settings.dart b/lib/settings.dart index 2739e4d..824dd3b 100644 --- a/lib/settings.dart +++ b/lib/settings.dart @@ -75,6 +75,7 @@ class SettingsState extends State with StoreWatcherMixin { newAudioFormat = AudioFormat.AAC; } setDefaultAudioFormat(newAudioFormat); + setAudioFormat(newAudioFormat); } _audioFormatItem() { From 1c23ef2300658e3a0a7a68325ab3885396e15e9a Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 11 Jul 2021 10:43:35 +0200 Subject: [PATCH 038/146] Don't show already matching suggestions --- lib/note_editor.dart | 53 +++++++++++++++----------------------------- 1 file changed, 18 insertions(+), 35 deletions(-) diff --git a/lib/note_editor.dart b/lib/note_editor.dart index 4026ddb..8e15ab0 100644 --- a/lib/note_editor.dart +++ b/lib/note_editor.dart @@ -213,47 +213,30 @@ class NoteEditorState extends State if (search != null) search = search.toLowerCase(); + _filter(element) { + return element != null && + element.trim().length != 0 && + (search == null || + (element.toLowerCase().contains(search) && + element.toLowerCase() != search)); + } + switch (item) { case AdditionalInfoItem.key: - return itemsByFrequency(notes - .map((note) => note.key) - .where((element) => - element != null && - element.trim().length != 0 && - (search == null || element.toLowerCase().contains(search))) - .toList()); + return itemsByFrequency( + notes.map((note) => note.key).where(_filter).toList()); case AdditionalInfoItem.tuning: - return itemsByFrequency(notes - .map((note) => note.tuning) - .where((element) => - element != null && - element.trim().length != 0 && - (search == null || element.toLowerCase().contains(search))) - .toList()); + return itemsByFrequency( + notes.map((note) => note.tuning).where(_filter).toList()); case AdditionalInfoItem.capo: - return itemsByFrequency(notes - .map((note) => note.capo) - .where((element) => - element != null && - element.trim().length != 0 && - (search == null || element.toLowerCase().contains(search))) - .toList()); + return itemsByFrequency( + notes.map((note) => note.capo).where(_filter).toList()); case AdditionalInfoItem.label: - return itemsByFrequency(notes - .map((note) => note.label) - .where((element) => - element != null && - element.trim().length != 0 && - (search == null || element.toLowerCase().contains(search))) - .toList()); + return itemsByFrequency( + notes.map((note) => note.label).where(_filter).toList()); case AdditionalInfoItem.artist: - return itemsByFrequency(notes - .map((note) => note.artist) - .where((element) => - element != null && - element.trim().length != 0 && - (search == null || element.toLowerCase().contains(search))) - .toList()); + return itemsByFrequency( + notes.map((note) => note.artist).where(_filter).toList()); default: return []; } From 5b60bfe11d7919ca12fddced3b2d82717f04e0ff Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 11 Jul 2021 11:47:18 +0200 Subject: [PATCH 039/146] Add CustomChip - fix suggestions and colors --- lib/main.dart | 16 ++++++++++++---- lib/note_editor.dart | 15 ++++++++++----- lib/note_views/appbar.dart | 39 +++++++++++++++++++++++++++++--------- 3 files changed, 52 insertions(+), 18 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index d0a099d..23cf520 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -87,8 +87,12 @@ class AppState extends State with StoreWatcherMixin { textTheme: ThemeData.dark().textTheme), buttonTheme: ThemeData.dark().buttonTheme.copyWith(buttonColor: mainColor), - chipTheme: - ThemeData.dark().chipTheme.copyWith(selectedColor: mainColor), + chipTheme: ThemeData.dark().chipTheme.copyWith( + selectedColor: mainColor, + secondaryLabelStyle: ThemeData.light() + .chipTheme + .labelStyle + .copyWith(color: Colors.white)), sliderTheme: ThemeData.dark().sliderTheme.copyWith( trackHeight: 5, showValueIndicator: ShowValueIndicator.always, @@ -124,8 +128,12 @@ class AppState extends State with StoreWatcherMixin { brightness: Brightness.dark, color: appBarColor, textTheme: ThemeData.light().accentTextTheme), - chipTheme: - ThemeData.light().chipTheme.copyWith(selectedColor: mainColor), + chipTheme: ThemeData.light().chipTheme.copyWith( + selectedColor: mainColor, + secondaryLabelStyle: ThemeData.light() + .chipTheme + .labelStyle + .copyWith(color: Colors.white)), indicatorColor: mainColor, accentColor: mainColor, highlightColor: mainColor, diff --git a/lib/note_editor.dart b/lib/note_editor.dart index 8e15ab0..2e8b9c8 100644 --- a/lib/note_editor.dart +++ b/lib/note_editor.dart @@ -14,6 +14,7 @@ import 'package:sound/export.dart'; import 'package:sound/file_manager.dart'; import 'package:sound/local_storage.dart'; import 'package:sound/note_viewer.dart'; +import 'package:sound/note_views/appbar.dart'; import 'package:sound/share.dart'; import 'editor_store.dart'; import 'model.dart'; @@ -191,7 +192,7 @@ class NoteEditorState extends State } _onAdditionalInfoValueChange(AdditionalInfoItem item, String value) { - _onAdditionalInfoFocusChange(item); + // when the value inside of the text edits change _onSuggestionTap(value); } @@ -242,7 +243,7 @@ class NoteEditorState extends State } } - _onSuggestionTap(String text) { + _onSuggestionTap(String text) async { switch (focusedAdditionalInfoItem) { case AdditionalInfoItem.key: changeKey(text); @@ -262,6 +263,11 @@ class NoteEditorState extends State default: break; } + // update suggestions + var suggestions = await _getInfoSuggestions(focusedAdditionalInfoItem); + setState(() { + additionalItemSuggestions = suggestions; + }); } @override @@ -463,9 +469,8 @@ class NoteEditorState extends State alignment: WrapAlignment.start, spacing: 8, children: additionalItemSuggestions - .map((o) => GestureDetector( - onTap: () => _onSuggestionTap(o), - child: Chip(label: Text(o)))) + .map((o) => CustomChip( + label: Text(o), onPressed: () => _onSuggestionTap(o))) .toList()), )); diff --git a/lib/note_views/appbar.dart b/lib/note_views/appbar.dart index 91fb0b9..d1c7f84 100644 --- a/lib/note_views/appbar.dart +++ b/lib/note_views/appbar.dart @@ -6,12 +6,13 @@ import 'package:sound/storage.dart'; typedef FilterByCallback = bool Function(FilterBy); typedef FilterCallback = bool Function(Filter); -class FilterView extends StatelessWidget { +class CustomChip extends StatelessWidget { final bool active; - final Filter filter; - final ValueChanged remove, add; + final Widget label; + final Function onPressed; - FilterView({this.filter, this.active, this.remove, this.add}); + CustomChip({this.active = false, this.label, this.onPressed, Key key}) + : super(key: key); @override Widget build(BuildContext context) { @@ -19,10 +20,31 @@ class FilterView extends StatelessWidget { ? Theme.of(context).chipTheme.selectedColor : Theme.of(context).chipTheme.backgroundColor; + TextStyle style = (active) + ? Theme.of(context).chipTheme.secondaryLabelStyle + : Theme.of(context).chipTheme.labelStyle; + + return ActionChip( + backgroundColor: backgroundColor, + labelStyle: style, + label: label, + onPressed: onPressed); + } +} + +class FilterView extends StatelessWidget { + final bool active; + final Filter filter; + final ValueChanged remove, add; + + FilterView({this.filter, this.active, this.remove, this.add}); + + @override + Widget build(BuildContext context) { return Padding( padding: EdgeInsets.symmetric(horizontal: 5), - child: ActionChip( - backgroundColor: backgroundColor, + child: CustomChip( + active: active, label: Text(filter.content), onPressed: () => (active) ? remove(filter) : add(filter))); } @@ -120,12 +142,11 @@ class ActiveFiltersView extends StatelessWidget { scrollDirection: Axis.horizontal, itemBuilder: (context, index) { Filter filter = filters[index]; - Color color = Theme.of(context).chipTheme.selectedColor; return Padding( padding: EdgeInsets.symmetric(horizontal: 5), - child: ActionChip( - backgroundColor: color, + child: CustomChip( + active: true, label: Text( filter.content, ), From 466079bb3e2e0044a1c7eb4c9b865544a2c9d7d5 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 11 Jul 2021 12:15:25 +0200 Subject: [PATCH 040/146] Fix overflow --- lib/note_views/appbar.dart | 59 ++++++++++++++++++++++---------------- 1 file changed, 34 insertions(+), 25 deletions(-) diff --git a/lib/note_views/appbar.dart b/lib/note_views/appbar.dart index d1c7f84..af3b85a 100644 --- a/lib/note_views/appbar.dart +++ b/lib/note_views/appbar.dart @@ -28,6 +28,7 @@ class CustomChip extends StatelessWidget { backgroundColor: backgroundColor, labelStyle: style, label: label, + clipBehavior: Clip.hardEdge, onPressed: onPressed); } } @@ -126,34 +127,42 @@ class ActiveFiltersView extends StatelessWidget { ActiveFiltersView({this.filters, this.removeFilter, Key key}) : super(key: key); + + _getItem() { + return Container( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + Container( + height: 50, + child: ListView.builder( + itemCount: this.filters.length, + scrollDirection: Axis.horizontal, + itemBuilder: (context, index) { + Filter filter = filters[index]; + + return Padding( + padding: EdgeInsets.symmetric(horizontal: 5), + child: CustomChip( + active: true, + label: Text( + filter.content, + ), + onPressed: () => removeFilter(filter))); + }, + )), + ])); + } + @override Widget build(BuildContext context) { return Padding( - padding: EdgeInsets.only(left: 25, top: 70), - child: Container( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisSize: MainAxisSize.min, - children: [ - Container( - height: 50, - child: ListView.builder( - itemCount: this.filters.length, - scrollDirection: Axis.horizontal, - itemBuilder: (context, index) { - Filter filter = filters[index]; - - return Padding( - padding: EdgeInsets.symmetric(horizontal: 5), - child: CustomChip( - active: true, - label: Text( - filter.content, - ), - onPressed: () => removeFilter(filter))); - }, - )) - ]))); + padding: EdgeInsets.only(left: 10, top: 50), + child: ListView.builder( + itemBuilder: (context, i) => _getItem(), + itemCount: 1, + )); } } From d025647491bd398964c2f0a0f3ad150ab35e2895 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 11 Jul 2021 12:17:45 +0200 Subject: [PATCH 041/146] Don't show audio files by default --- lib/note_viewer.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/note_viewer.dart b/lib/note_viewer.dart index 71772be..e71472d 100644 --- a/lib/note_viewer.dart +++ b/lib/note_viewer.dart @@ -148,7 +148,7 @@ class NotesViewer extends StatefulWidget { NotesViewer(this.notes, {this.actions, this.showZoomPlayback = true, - this.showAudioFiles = true, + this.showAudioFiles = false, this.showTitle = true, this.showSheet = false, this.showAdditionalInformation = true, From 02db8178d7739ce541f68666f980fde8dade483f Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 11 Jul 2021 12:29:00 +0200 Subject: [PATCH 042/146] Add no audio recorded message --- lib/note_editor.dart | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/lib/note_editor.dart b/lib/note_editor.dart index 2e8b9c8..d0a1483 100644 --- a/lib/note_editor.dart +++ b/lib/note_editor.dart @@ -371,6 +371,23 @@ class NoteEditorState extends State globalKey: _globalKey)); }); + if (store.note.audioFiles.length == 0 && useTabs) { + String text = + "No audio recorded yet. \nPress the microphone button to get started."; + + items[TabType.audio].add(SafeArea( + child: Center( + child: Container( + padding: const EdgeInsets.all(0.0), + child: Text( + text, + textAlign: TextAlign.center, + ), + width: 200.0, + height: 120.0, + )))); + } + // bottom sheets bool showSheet = recorderStore.state == RecorderState.PAUSING || recorderStore.state == RecorderState.PLAYING || From 32db4808259feb90037fd8566fb4e1fe900f9bb3 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 11 Jul 2021 13:33:30 +0200 Subject: [PATCH 043/146] Allowing to directly start a new track --- lib/looper.dart | 17 ++++++++++++++++- lib/recorder_store.dart | 6 +++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/lib/looper.dart b/lib/looper.dart index 8dee4f3..e39723f 100644 --- a/lib/looper.dart +++ b/lib/looper.dart @@ -20,16 +20,25 @@ class Looper extends StatefulWidget { class _LooperState extends State with StoreWatcherMixin { RangeValues range; RecorderBottomSheetStore store; + ActionSubscription audioFileChange; @override void initState() { super.initState(); store = listenToStore(recorderBottomSheetStoreToken); range = store.loopRange; + + audioFileChange = startPlaybackAction.listen((AudioFile f) { + print("playback action is started!"); + setState(() { + range = f.loopRange; + }); + }); } @override void dispose() { + audioFileChange.cancel(); super.dispose(); } @@ -54,6 +63,12 @@ class _LooperState extends State with StoreWatcherMixin { var lowerValue = range == null ? defaultRange.start : range.start; var upperValue = range == null ? defaultRange.end : range.end; + var rangeMax = (store.currentLength.inMilliseconds / 1000.0).toDouble(); + print("upperValue: $upperValue"); + print("lowerValue: $lowerValue"); + print('max: $rangeMax'); + print("currentLength: ${store.currentLength}"); + return Container( color: widget.color, height: 100, @@ -86,7 +101,7 @@ class _LooperState extends State with StoreWatcherMixin { onChangeEnd: (double endLowerValue, double endUpperValue) { _changeRangeValues(RangeValues(endLowerValue, endUpperValue)); }, - max: (store.currentLength.inMilliseconds / 1000.0).toDouble(), + max: (rangeMax > upperValue) ? rangeMax : upperValue, showValueIndicator: true, lowerValue: lowerValue, upperValue: upperValue, diff --git a/lib/recorder_store.dart b/lib/recorder_store.dart index 82d864c..292d8cb 100644 --- a/lib/recorder_store.dart +++ b/lib/recorder_store.dart @@ -246,7 +246,11 @@ class RecorderBottomSheetStore extends Store { .getSettings() .then((value) => _audioFormat = value.audioFormat); // sound = FlutterSound(); - startPlaybackAction.listen((AudioFile f) { + startPlaybackAction.listen((AudioFile f) async { + if (_state == RecorderState.PLAYING) { + await stopPlayer(true); + _state = RecorderState.STOP; + } if (_state == RecorderState.STOP || _state == RecorderState.PAUSING) { changePlayerPosition(Duration(seconds: 0)); _audioFile = f; From 58035a76ff8786dd4b841f2af2097cfa7231cf4c Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 11 Jul 2021 13:42:52 +0200 Subject: [PATCH 044/146] Start minimized when keyboard is out --- lib/recorder_bottom_sheet.dart | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/recorder_bottom_sheet.dart b/lib/recorder_bottom_sheet.dart index f88944f..69b7131 100644 --- a/lib/recorder_bottom_sheet.dart +++ b/lib/recorder_bottom_sheet.dart @@ -200,7 +200,14 @@ class _RecorderBottomSheetState extends State WidgetsBinding.instance.addObserver(this); final keyboardOpen = WidgetsBinding.instance.window.viewInsets.bottom > 0; - forward = keyboardOpen || store.minimized; + if (keyboardOpen) { + setMinimized(true); + } + forward = store.minimized || keyboardOpen; + print("init recorder bottom sheet"); + print("keyboard open: $keyboardOpen"); + print("minimized: ${store.minimized}"); + print("forward: ${forward}"); height = maxMinimizeHeight; _controller = AnimationController( From a0ce3cd0cb07cf7a95d42d79caaa8b44fe0e0034 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 11 Jul 2021 14:46:36 +0200 Subject: [PATCH 045/146] Only show suggestions on info tab --- lib/editor_views/additional_info.dart | 60 ++++++++++++++++++++---- lib/note_editor.dart | 66 ++++++++++++++++++++------- lib/recorder_store.dart | 10 +--- lib/utils.dart | 5 ++ 4 files changed, 108 insertions(+), 33 deletions(-) diff --git a/lib/editor_views/additional_info.dart b/lib/editor_views/additional_info.dart index c19d6e9..55a4eb3 100644 --- a/lib/editor_views/additional_info.dart +++ b/lib/editor_views/additional_info.dart @@ -1,12 +1,12 @@ import 'package:flutter/material.dart'; -import 'package:sound/editor_store.dart'; import 'package:sound/model.dart'; import 'package:tuple/tuple.dart'; -class NoteEditorTitle extends StatelessWidget { +class NoteEditorTitle extends StatefulWidget { final String title, hintText, labelText; final bool allowEdit; final ValueChanged onChange; + final FocusNode focus; NoteEditorTitle( {@required this.title, @@ -14,26 +14,52 @@ class NoteEditorTitle extends StatelessWidget { this.allowEdit = true, this.hintText = 'Enter Title', this.labelText = 'Title', + this.focus, Key key}) : super(key: key); + @override + _NoteEditorTitleState createState() => _NoteEditorTitleState(); +} + +class _NoteEditorTitleState extends State { + TextEditingController controller; + + @override + void initState() { + super.initState(); + controller = TextEditingController(text: widget.title); + } + + @override + void didUpdateWidget(NoteEditorTitle oldWidget) { + super.didUpdateWidget(oldWidget); + + if (controller.text != widget.title) { + controller.text = widget.title; + controller.selection = + TextSelection.fromPosition(TextPosition(offset: widget.title.length)); + } + } + @override Widget build(BuildContext context) { return ListTile( visualDensity: VisualDensity.comfortable, title: TextFormField( - enabled: allowEdit, - initialValue: title, + controller: controller, + enabled: widget.allowEdit, + focusNode: widget.focus, decoration: InputDecoration( - labelText: labelText, + labelText: widget.labelText, border: InputBorder.none, - hintText: hintText), - onChanged: onChange, + hintText: widget.hintText), + onChanged: widget.onChange, maxLines: 1)); } } -enum AdditionalInfoItem { tuning, capo, key, label, artist } +enum AdditionalInfoItem { tuning, capo, key, label, artist, title } getAddtionalInfoItemFromNote(Note note, AdditionalInfoItem item) { switch (item) { @@ -47,6 +73,8 @@ getAddtionalInfoItemFromNote(Note note, AdditionalInfoItem item) { return note.label; case AdditionalInfoItem.artist: return note.artist; + case AdditionalInfoItem.title: + return note.title; default: return null; } @@ -62,7 +90,13 @@ class NoteEditorAdditionalInfo extends StatefulWidget { const NoteEditorAdditionalInfo(this.note, {this.allowEdit = true, - this.items = AdditionalInfoItem.values, + this.items = const [ + AdditionalInfoItem.key, + AdditionalInfoItem.tuning, + AdditionalInfoItem.capo, + AdditionalInfoItem.label, + AdditionalInfoItem.artist + ], this.onFocusChange, this.onChange, Key key}) @@ -173,6 +207,14 @@ class _NoteEditorAdditionalInfoState extends State { hint: "Passenger, Ed Sheeran ...", item: item, ); + case AdditionalInfoItem.title: + return _edit( + initial: + widget.note.title == null ? "" : widget.note.title.toString(), + title: "Title", + hint: "...", + item: item, + ); default: return null; break; diff --git a/lib/note_editor.dart b/lib/note_editor.dart index d0a1483..00cb4d1 100644 --- a/lib/note_editor.dart +++ b/lib/note_editor.dart @@ -67,7 +67,10 @@ class NoteEditorContent extends StatefulWidget { enum TabType { structure, info, audio } class NoteEditorState extends State - with StoreWatcherMixin, WidgetsBindingObserver { + with + StoreWatcherMixin, + WidgetsBindingObserver, + TickerProviderStateMixin { RecorderBottomSheetStore recorderStore; NoteEditorStore store; GlobalKey _globalKey = GlobalKey(); @@ -78,11 +81,19 @@ class NoteEditorState extends State Map dismissables = {}; AdditionalInfoItem focusedAdditionalInfoItem; List additionalItemSuggestions = []; + FocusNode noteEditorTitleFocusNode; + TabController tabController; @override void initState() { super.initState(); WidgetsBinding.instance.addObserver(this); + noteEditorTitleFocusNode = FocusNode(); + tabController = TabController(length: 3, initialIndex: 0, vsync: this); + tabController.addListener(() { + setState(() {}); + }); + recorderStore = listenToStore(recorderBottomSheetStoreToken); store = listenToStore(noteEditorStoreToken); store.setNote(widget.note); @@ -193,7 +204,7 @@ class NoteEditorState extends State _onAdditionalInfoValueChange(AdditionalInfoItem item, String value) { // when the value inside of the text edits change - _onSuggestionTap(value); + _onSuggestionTap(value, item); } _onAdditionalInfoFocusChange(AdditionalInfoItem item) async { @@ -238,13 +249,21 @@ class NoteEditorState extends State case AdditionalInfoItem.artist: return itemsByFrequency( notes.map((note) => note.artist).where(_filter).toList()); + case AdditionalInfoItem.title: + if (search == null || search.trim() == "") { + return [getFormattedDate(DateTime.now())]; + } else { + return []; + } + break; + default: return []; } } - _onSuggestionTap(String text) async { - switch (focusedAdditionalInfoItem) { + _onSuggestionTap(String text, AdditionalInfoItem item) async { + switch (item) { case AdditionalInfoItem.key: changeKey(text); break; @@ -260,6 +279,10 @@ class NoteEditorState extends State case AdditionalInfoItem.artist: changeArtist(text); break; + case AdditionalInfoItem.title: + changeTitle(text); + break; + default: break; } @@ -280,8 +303,11 @@ class NoteEditorState extends State items[TabType.info] = []; items[TabType.structure].add(NoteEditorTitle( + focus: noteEditorTitleFocusNode, title: store.note.title, - onChange: changeTitle, + onChange: (s) { + _onAdditionalInfoValueChange(AdditionalInfoItem.title, s); + }, allowEdit: true, )); @@ -477,17 +503,21 @@ class NoteEditorState extends State } final keyboardOpen = WidgetsBinding.instance.window.viewInsets.bottom > 0; + print("keyboard open: $keyboardOpen"); Widget suggestionSheet = PreferredSize( preferredSize: Size.fromHeight(20), child: Container( + width: double.infinity, padding: EdgeInsets.only(left: 8), child: Wrap( alignment: WrapAlignment.start, spacing: 8, children: additionalItemSuggestions .map((o) => CustomChip( - label: Text(o), onPressed: () => _onSuggestionTap(o))) + label: Text(o), + onPressed: () => + _onSuggestionTap(o, focusedAdditionalInfoItem))) .toList()), )); @@ -498,6 +528,7 @@ class NoteEditorState extends State actions: actions, bottom: useTabs ? new TabBar( + controller: tabController, isScrollable: true, tabs: List.generate(categories.length, (int index) { return new Tab(text: categories[index]); @@ -506,20 +537,23 @@ class NoteEditorState extends State ), bottomSheet: showSheet ? RecorderBottomSheet(key: bottomSheetKey) - : (keyboardOpen && focusedAdditionalInfoItem != null) + : (keyboardOpen && + focusedAdditionalInfoItem != null && + !(useTabs && tabController.index != 1)) ? suggestionSheet : null, body: useTabs ? TabBarView( + controller: tabController, children: List.generate(categories.length, (int index) { - if (index == 0) { - return _buildTabView(items[TabType.structure]); - } else if (index == 1) { - return _buildTabView(items[TabType.info]); - } else { - return _buildTabView(items[TabType.audio]); - } - })) + if (index == 0) { + return _buildTabView(items[TabType.structure]); + } else if (index == 1) { + return _buildTabView(items[TabType.info]); + } else { + return _buildTabView(items[TabType.audio]); + } + })) : Container(child: Stack(children: stackChildren))); // will pop score @@ -528,7 +562,7 @@ class NoteEditorState extends State stopAction(true); return true; }, - child: DefaultTabController(length: 3, child: scaffold)); + child: scaffold); } } diff --git a/lib/recorder_store.dart b/lib/recorder_store.dart index 292d8cb..9ac1dbe 100644 --- a/lib/recorder_store.dart +++ b/lib/recorder_store.dart @@ -9,6 +9,7 @@ import 'package:permission_handler/permission_handler.dart'; import 'package:sound/editor_store.dart'; import 'package:sound/local_storage.dart'; import 'package:sound/settings_store.dart'; +import 'package:sound/utils.dart'; import 'package:tuple/tuple.dart'; import 'dart:async'; import 'model.dart'; @@ -228,15 +229,8 @@ class RecorderBottomSheetStore extends Store { var d = (await getApplicationDocumentsDirectory()).parent; d = Directory(p.join(d.path, 'files')); - String date = DateTime.now().toString(); String ext = _audioFormat == AudioFormat.WAV ? "wav" : "aac"; - return d.path + - '/' + - DateTime.now() - .toString() - .substring(0, date.length - 7) - .replaceAll(":", "-") + - ".$ext"; + return d.path + '/' + getFormattedDate(DateTime.now()) + ".$ext"; } RecorderBottomSheetStore() { diff --git a/lib/utils.dart b/lib/utils.dart index ad9948b..2d65d37 100644 --- a/lib/utils.dart +++ b/lib/utils.dart @@ -1,6 +1,11 @@ import 'package:flutter/material.dart'; import 'package:flutter/foundation.dart'; +String getFormattedDate(DateTime date) { + String _date = DateTime.now().toString(); + return date.toString().substring(0, _date.length - 7).replaceAll(":", "-"); +} + List itemsByFrequency(List input) => [ ...(input .fold>( From b7ac38b91cf9385dc5e1f0d89250e676b4ddab2a Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 11 Jul 2021 14:53:24 +0200 Subject: [PATCH 046/146] Add insert date for note title --- lib/editor_views/additional_info.dart | 15 +++++++++++++++ lib/note_editor.dart | 1 + 2 files changed, 16 insertions(+) diff --git a/lib/editor_views/additional_info.dart b/lib/editor_views/additional_info.dart index 55a4eb3..85c595e 100644 --- a/lib/editor_views/additional_info.dart +++ b/lib/editor_views/additional_info.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:sound/model.dart'; +import 'package:sound/utils.dart'; import 'package:tuple/tuple.dart'; class NoteEditorTitle extends StatefulWidget { @@ -7,6 +8,7 @@ class NoteEditorTitle extends StatefulWidget { final bool allowEdit; final ValueChanged onChange; final FocusNode focus; + final bool showInsertDate; NoteEditorTitle( {@required this.title, @@ -15,6 +17,7 @@ class NoteEditorTitle extends StatefulWidget { this.hintText = 'Enter Title', this.labelText = 'Title', this.focus, + this.showInsertDate = false, Key key}) : super(key: key); @@ -42,10 +45,22 @@ class _NoteEditorTitleState extends State { } } + _insertDate() { + if (!widget.showInsertDate || controller.text.length > 0) { + return null; + } + return TextButton( + onPressed: () { + widget.onChange(getFormattedDate(DateTime.now())); + }, + child: Text("Insert Date")); + } + @override Widget build(BuildContext context) { return ListTile( visualDensity: VisualDensity.comfortable, + trailing: _insertDate(), title: TextFormField( controller: controller, enabled: widget.allowEdit, diff --git a/lib/note_editor.dart b/lib/note_editor.dart index 00cb4d1..f63f9fa 100644 --- a/lib/note_editor.dart +++ b/lib/note_editor.dart @@ -304,6 +304,7 @@ class NoteEditorState extends State items[TabType.structure].add(NoteEditorTitle( focus: noteEditorTitleFocusNode, + showInsertDate: true, title: store.note.title, onChange: (s) { _onAdditionalInfoValueChange(AdditionalInfoItem.title, s); From 8eb322dc9e16fce9c53822c6b2ab577ab4864d4e Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sat, 24 Jul 2021 12:46:25 +0200 Subject: [PATCH 047/146] Only render bottom and top if found --- lib/note_item.dart | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/lib/note_item.dart b/lib/note_item.dart index 073399d..7ed4847 100644 --- a/lib/note_item.dart +++ b/lib/note_item.dart @@ -210,14 +210,21 @@ class NoteItem extends AbstractNoteItem { onLongPress: onLongPress, highlight: highlight); + showTop() { + return !((note.key == null || note.key.trim() == "") && + (note.capo == null || note.capo.trim() == "")); + } + _top() { return Padding( padding: EdgeInsets.only(left: padding, right: padding, top: padding), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Text(note.key == null ? 'No Key' : note.key), - Text(note.capo == null ? "No Capo" : "Capo ${note.capo}") + Text((note.key == null || note.key.trim() == "") ? '' : note.key), + Text((note.capo == null || note.capo.trim() == "") + ? "" + : "Capo ${note.capo}") ], )); } @@ -264,6 +271,11 @@ class NoteItem extends AbstractNoteItem { ); } + showBottom() { + return note.sections.length > 0 || + (note.tuning != null && note.tuning.trim() != ""); + } + _bottom() { return Padding( padding: EdgeInsets.all(padding), @@ -271,7 +283,7 @@ class NoteItem extends AbstractNoteItem { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text("${note.sections.length} Sections"), - _richText((note.tuning == null) ? "Standard" : "${note.tuning}") + _richText((note.tuning == null) ? "" : "${note.tuning}") ], )); } @@ -297,10 +309,10 @@ class NoteItem extends AbstractNoteItem { mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ - _top(), + if (showTop()) _top(), _title(context), _text(context), - _bottom(), + if (showBottom()) _bottom(), ]))))); } } From b51de69ffffb2729bc22770f4e340c857bfdcfce Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sat, 24 Jul 2021 12:46:44 +0200 Subject: [PATCH 048/146] correct formatting of function args --- lib/note_search_view.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/note_search_view.dart b/lib/note_search_view.dart index 76e487c..fb90a21 100644 --- a/lib/note_search_view.dart +++ b/lib/note_search_view.dart @@ -271,7 +271,7 @@ class _NoteSearchViewState extends State<_NoteSearchView> _searchView() { return SearchTextView( - toggleIsSearching: (_) {}, + toggleIsSearching: ({searching}) {}, onChanged: (s) { searchNotes(s); }, From fe07920ea35d1a09c87171bc37488f3733af956f Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sat, 24 Jul 2021 12:46:57 +0200 Subject: [PATCH 049/146] Add onPressed --- lib/recorder_bottom_sheet.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/recorder_bottom_sheet.dart b/lib/recorder_bottom_sheet.dart index 69b7131..e6e97b5 100644 --- a/lib/recorder_bottom_sheet.dart +++ b/lib/recorder_bottom_sheet.dart @@ -352,6 +352,7 @@ class _RecorderBottomSheetState extends State alignment: Alignment.topCenter, color: Theme.of(context).bottomAppBarColor, child: IconButton( + onPressed: () {}, icon: Icon(Icons.arrow_upward, size: 16)), )) : Container(), From 92147e302176ed102b51746844801f934ce48bd5 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sat, 24 Jul 2021 12:47:14 +0200 Subject: [PATCH 050/146] Fix only set auto format if not null --- lib/recorder_store.dart | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/recorder_store.dart b/lib/recorder_store.dart index 9ac1dbe..6ae4cb3 100644 --- a/lib/recorder_store.dart +++ b/lib/recorder_store.dart @@ -236,9 +236,11 @@ class RecorderBottomSheetStore extends Store { RecorderBottomSheetStore() { _minimized = false; - LocalStorage() - .getSettings() - .then((value) => _audioFormat = value.audioFormat); + LocalStorage().getSettings().then((value) { + if (value != null) { + _audioFormat = value.audioFormat; + } + }); // sound = FlutterSound(); startPlaybackAction.listen((AudioFile f) async { if (_state == RecorderState.PLAYING) { From 8c3925ae15c7f7e41594b0de3fb156127ab14024 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sat, 24 Jul 2021 12:56:10 +0200 Subject: [PATCH 051/146] Renaming --- lib/dialogs/add_to_collection_dialog.dart | 2 +- lib/note_editor.dart | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/dialogs/add_to_collection_dialog.dart b/lib/dialogs/add_to_collection_dialog.dart index 189f881..643e136 100644 --- a/lib/dialogs/add_to_collection_dialog.dart +++ b/lib/dialogs/add_to_collection_dialog.dart @@ -22,7 +22,7 @@ showAddToCollectionDialog(BuildContext context, Note note) { return collection; } - _showAddToCollectionDialog(context, "Add To Set", onNew, onAdd, note, + _showAddToCollectionDialog(context, "Add to Set", onNew, onAdd, note, importButtonText: 'Add'); } diff --git a/lib/note_editor.dart b/lib/note_editor.dart index f63f9fa..3944823 100644 --- a/lib/note_editor.dart +++ b/lib/note_editor.dart @@ -75,7 +75,7 @@ class NoteEditorState extends State NoteEditorStore store; GlobalKey _globalKey = GlobalKey(); List popupMenuActions = ["share", "copy", "add"]; - List popupMenuActionsLong = ["Share", "Copy", "Add To Set"]; + List popupMenuActionsLong = ["Export", "Copy", "Add to Set"]; bool get useTabs => widget.view == EditorView.tabs; final Key bottomSheetKey = Key('bottomSheet'); Map dismissables = {}; From 9e8a73172aa9d6c6ca0905ce32c5f776f89a78df Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sat, 24 Jul 2021 12:56:21 +0200 Subject: [PATCH 052/146] Change app bar title font size --- lib/main.dart | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/main.dart b/lib/main.dart index 23cf520..fdc73d9 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -84,7 +84,9 @@ class AppState extends State with StoreWatcherMixin { appBarTheme: ThemeData.dark().appBarTheme.copyWith( brightness: Brightness.dark, color: appBarColor, - textTheme: ThemeData.dark().textTheme), + textTheme: ThemeData.dark().textTheme.copyWith( + title: + ThemeData.dark().textTheme.title.copyWith(fontSize: 16))), buttonTheme: ThemeData.dark().buttonTheme.copyWith(buttonColor: mainColor), chipTheme: ThemeData.dark().chipTheme.copyWith( From c73c7166c9a3b18c812eaf40031144d1b7d09cc1 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sat, 24 Jul 2021 12:57:47 +0200 Subject: [PATCH 053/146] reanme songtext copied --- lib/note_editor.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/note_editor.dart b/lib/note_editor.dart index 3944823..5946200 100644 --- a/lib/note_editor.dart +++ b/lib/note_editor.dart @@ -168,7 +168,7 @@ class NoteEditorState extends State ClipboardManager.copyToClipBoard(text).then((result) { final snackBar = SnackBar( - content: Text('Copied to Clipboard'), + content: Text('Songtext copied'), ); ScaffoldMessenger.of(context).showSnackBar(snackBar); }); From 1674ec60388fec007579452577af8c4d57189b01 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sat, 24 Jul 2021 13:12:16 +0200 Subject: [PATCH 054/146] Rename title to section title --- lib/editor_views/section.dart | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/editor_views/section.dart b/lib/editor_views/section.dart index ad5fe9d..d8390a5 100644 --- a/lib/editor_views/section.dart +++ b/lib/editor_views/section.dart @@ -60,8 +60,9 @@ class EditableState extends State { //maxLines: widget.maxLines, enableInteractiveSelection: true, onChanged: (s) { - print("widget changed"); - widget.onChange(s); + if (widget.onChange != null) { + widget.onChange(s); + } }, controller: _controller, textInputAction: @@ -138,7 +139,7 @@ class SectionListItem extends StatelessWidget { textStyle: Theme.of(context).textTheme.subtitle1, onChange: (s) => changeSectionTitle(Tuple2(section, s)), - hintText: 'Title', + hintText: 'Section Title', maxLines: 100)), Wrap(children: [ Editable( From 706df677a83a57b425ffb6b720637e0cb63f155e Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sat, 24 Jul 2021 13:21:20 +0200 Subject: [PATCH 055/146] NoteViewer Set buttons clickable --- lib/note_viewer.dart | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/lib/note_viewer.dart b/lib/note_viewer.dart index e71472d..0682feb 100644 --- a/lib/note_viewer.dart +++ b/lib/note_viewer.dart @@ -367,13 +367,16 @@ class _NoteViewerState extends State Color highlightColor = Theme.of(context).accentColor; _buildIndicator(int index) { - return Container( - decoration: BoxDecoration( - color: (index == page) ? highlightColor : indicatorColor, - borderRadius: BorderRadius.circular(5)), - padding: null, - width: noteIndicatorWidth, - height: noteIndicatorHeight, + return GestureDetector( + onTap: () => pageController.jumpToPage(index), + child: Container( + decoration: BoxDecoration( + color: (index == page) ? highlightColor : indicatorColor, + borderRadius: BorderRadius.circular(5)), + padding: null, + width: noteIndicatorWidth, + height: noteIndicatorHeight, + ), ); } From ac10deb382110696a34cceb7c93941df0761c1e3 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sat, 24 Jul 2021 15:31:21 +0200 Subject: [PATCH 056/146] Disable scroll physics when auto scrolling --- lib/note_viewer.dart | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/lib/note_viewer.dart b/lib/note_viewer.dart index 0682feb..ac374c2 100644 --- a/lib/note_viewer.dart +++ b/lib/note_viewer.dart @@ -227,6 +227,7 @@ class _NoteViewerState extends State } _onPageChange(_page) { + print("onPageChange $_page"); _animationController.reverse(); setState(() { @@ -281,11 +282,13 @@ class _NoteViewerState extends State Future.microtask(() async { bool atEdge = false; while (!atEdge && isPlaying) { - await _scollController.animateTo( - _scollController.offset + offset, - duration: Duration(milliseconds: 50), - curve: Curves.ease); - atEdge = _scollController.position.atEdge; + try { + await _scollController.animateTo( + _scollController.offset + offset, + duration: Duration(milliseconds: 50), + curve: Curves.ease); + atEdge = _scollController.position.atEdge; + } catch (e) {} } setState(() { isPlaying = false; @@ -348,8 +351,9 @@ class _NoteViewerState extends State if (widget.notes.length > 1) { body = Container( child: PageView( - controller: isPlaying ? null : pageController, + controller: pageController, onPageChanged: _onPageChange, + physics: (isPlaying) ? NeverScrollableScrollPhysics() : null, children: widget.notes .map((Note n) => _getNoteViewerContent(n)) .toList())); @@ -368,7 +372,11 @@ class _NoteViewerState extends State _buildIndicator(int index) { return GestureDetector( - onTap: () => pageController.jumpToPage(index), + onTap: () { + if (!isPlaying) { + pageController.jumpToPage(index); + } + }, child: Container( decoration: BoxDecoration( color: (index == page) ? highlightColor : indicatorColor, From 34b5d2805790f7a8d59bf592c98d18d8045f4721 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sat, 24 Jul 2021 15:31:29 +0200 Subject: [PATCH 057/146] Use tooltip --- lib/settings.dart | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/lib/settings.dart b/lib/settings.dart index 824dd3b..b7a0746 100644 --- a/lib/settings.dart +++ b/lib/settings.dart @@ -127,11 +127,9 @@ class SettingsState extends State with StoreWatcherMixin { Expanded( child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text("Name:"), - Text( - "Used for copyright in exported files", - textScaleFactor: 0.4, - ) + Tooltip( + message: "Used for copyright in exported files", + child: Text("Name:")), ])), ElevatedButton( child: Text(store.name == null ? "Edit" : store.name), From 63d18b3dc7fdb64c75f542a42c0a4e2a534f4324 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sat, 24 Jul 2021 15:45:01 +0200 Subject: [PATCH 058/146] Fixed text export --- lib/export.dart | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/lib/export.dart b/lib/export.dart index 995009f..933627a 100644 --- a/lib/export.dart +++ b/lib/export.dart @@ -68,10 +68,27 @@ class Exporter { contents += info; } contents += "\n\n\n"; - for (Section section in note.sections) { - contents += "[${section.title}]" + "\n\n"; - contents += section.content; - contents += "\n\n"; + for (var i = 0; i < note.sections.length; i++) { + Section section = note.sections[i]; + + var sectionTitleEmpty = + section.title == null || section.title.trim() == ""; + var contentEmpty = + section.content == null || section.content.trim() == ""; + + if (sectionTitleEmpty) { + if (!contentEmpty) { + contents += section.content; + } + } else { + contents += "[${section.title}]" + "\n\n"; + contents += section.content; + } + + if ((!sectionTitleEmpty || !contentEmpty) && + i != (note.sections.length - 1)) { + contents += "\n\n"; + } } return contents; } From 4917b9ad00b8771f6c57235eabd1fefd563bbb4c Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sat, 24 Jul 2021 16:08:05 +0200 Subject: [PATCH 059/146] Use icon for up/down --- lib/note_views/appbar.dart | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/lib/note_views/appbar.dart b/lib/note_views/appbar.dart index af3b85a..e62938c 100644 --- a/lib/note_views/appbar.dart +++ b/lib/note_views/appbar.dart @@ -223,16 +223,12 @@ class SortingView extends StatelessWidget { // arrow icon not vanishing under the app bar Icon icon = Icon( direction == SortDirection.up ? Icons.arrow_upward : Icons.arrow_downward, - size: 10, + size: 18, color: Theme.of(context).appBarTheme.textTheme.button.color, ); return TextButton( onPressed: _onDirectionChange, - child: Text( - (direction == SortDirection.up) ? "Up" : "Down", - style: Theme.of(context).appBarTheme.textTheme.button, - textScaleFactor: 0.9, - ), + child: Container(child: icon), clipBehavior: Clip.hardEdge); } From 0a38972fbacd83d05a2aeccf1c68c81ae42a1484 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sat, 24 Jul 2021 16:25:12 +0200 Subject: [PATCH 060/146] print sortby --- lib/storage.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/storage.dart b/lib/storage.dart index caab6b8..ff9a2ff 100644 --- a/lib/storage.dart +++ b/lib/storage.dart @@ -304,6 +304,7 @@ class StaticStorage extends Store { changeSortBy.listen((by) { if (_sortBy != by) { + print("set sort by to $by"); this._sortBy = by; trigger(); } From fcd3e48f417df9572381a1dc50b0ec1c17b6af29 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sat, 24 Jul 2021 16:25:28 +0200 Subject: [PATCH 061/146] Save createdAt and lastMofidied --- lib/local_storage.dart | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/local_storage.dart b/lib/local_storage.dart index 5089e78..b7a5bad 100644 --- a/lib/local_storage.dart +++ b/lib/local_storage.dart @@ -30,6 +30,16 @@ final migrations = { "DROP TABLE $collectionTable;", "DROP TABLE $collectionMappingTable;", ], + 3: [ + "ALTER TABLE $sectionTable ADD createdAt TEXT", + "ALTER TABLE $sectionTable ADD lastModified TEXT", + ] + }, + 3: { + 2: { + "ALTER TABLE $sectionTable DROP COLUMN createdAt TEXT", + "ALTER TABLE $sectionTable DROP COLUMN lastModified TEXT", + } } }; @@ -89,7 +99,7 @@ class LocalStorage { }, // Set the version. This executes the onCreate function and provides a // path to perform database upgrades and downgrades. - version: 2); + version: 3); } Future createDatabase(Database db) async { From 34c94e29445a9dd95a40abeedb46b8b92849e8c8 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sat, 24 Jul 2021 16:25:48 +0200 Subject: [PATCH 062/146] Fix fromJson and toJson for dates --- lib/model.dart | 38 ++++++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/lib/model.dart b/lib/model.dart index 2ca227e..62ecb8d 100644 --- a/lib/model.dart +++ b/lib/model.dart @@ -70,7 +70,7 @@ class AudioFile { factory AudioFile.fromJson(Map map) { return AudioFile( createdAt: deserializeDateTime(map["createdAt"]), - lastModified: deserializeDateTime(map["createdAt"]), + lastModified: deserializeDateTime(map["lastModified"]), duration: deserializeDuration(map["duration"]), loopRange: deserializeRangeValues(map['loopRange']), id: map["id"], @@ -81,6 +81,7 @@ class AudioFile { Map toJson() { return { "createdAt": serializeDateTime(createdAt), + "lastModified": serializeDateTime(lastModified), "loopRange": serializeRangeValues(loopRange), "id": id, "path": path, @@ -103,22 +104,35 @@ class Section { String id; DateTime lastModified, createdAt; - Section({ - this.title, - this.content, - this.id, - }) { + Section( + {this.title, this.content, this.id, this.createdAt, this.lastModified}) { if (id == null) id = Uuid().v4().toString(); - this.lastModified = DateTime.now(); - this.createdAt = DateTime.now(); + if (lastModified == null) lastModified = DateTime.now(); + if (createdAt == null) createdAt = DateTime.now(); } factory Section.fromJson(Map map) { - return Section(content: map['content'], title: map['title'], id: map['id']); + return Section( + content: map['content'], + title: map['title'], + id: map['id'], + createdAt: map.containsKey("createdAt") + ? deserializeDateTime(map['createdAt']) + : DateTime.now(), + lastModified: map.containsKey("lastModified") + ? deserializeDateTime(map['lastModified']) + : DateTime.now(), + ); } Map toJson() { - return {"title": title, "content": content, "id": id}; + return { + "title": title, + "content": content, + "id": id, + "lastModified": serializeDateTime(lastModified), + "createdAt": serializeDateTime(createdAt) + }; } bool get hasEmptyTitle => title == null || title.trim() == ""; @@ -239,10 +253,10 @@ class Note { // general info id: id, title: json['title'], - createdAt: json.containsKey(json['createdAt']) + createdAt: json.containsKey('createdAt') ? deserializeDateTime(json['createdAt']) : DateTime.now(), - lastModified: json.containsKey(json['lastModified']) + lastModified: json.containsKey("lastModified") ? deserializeDateTime(json['lastModified']) : DateTime.now(), From c9ca5265f7d69dee7224df80aafb64a76645f44a Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sat, 24 Jul 2021 17:19:22 +0200 Subject: [PATCH 063/146] Remove Flushbar, use ScaffoldMessenger - show move to trash snack - removed imports - change dismiss direction for audio files --- lib/collection_editor_store.dart | 2 +- lib/collections.dart | 42 ++++++++++++++++------------ lib/editor_store.dart | 2 +- lib/editor_views/audio.dart | 14 ++++++---- lib/editor_views/section.dart | 13 ++++++--- lib/home.dart | 25 +++++++++++------ lib/looper.dart | 2 -- lib/note_editor.dart | 48 ++++++++++++++------------------ lib/note_item.dart | 1 - lib/utils.dart | 23 ++++++++++++--- pubspec.yaml | 1 - 11 files changed, 99 insertions(+), 74 deletions(-) diff --git a/lib/collection_editor_store.dart b/lib/collection_editor_store.dart index 942f5a9..37d485f 100644 --- a/lib/collection_editor_store.dart +++ b/lib/collection_editor_store.dart @@ -22,7 +22,7 @@ class CollectionEditorStore extends Store { }); removeNoteFromCollection.listen((note) async { - int index = _collection.notes.indexOf(note); + int index = _collection.notes.indexWhere((n) => n.id == note.id); _collection.notes.removeAt(index); _lastDeletion = Tuple2(index, note); await LocalStorage().syncCollection(_collection); diff --git a/lib/collections.dart b/lib/collections.dart index 6c42bdb..866dae4 100644 --- a/lib/collections.dart +++ b/lib/collections.dart @@ -333,22 +333,24 @@ class _CollectionEditorState extends State } return true; }, - child: Scaffold( - floatingActionButton: FloatingActionButton( - onPressed: floatingActionButtonPressed, - foregroundColor: Colors.white, - backgroundColor: Theme.of(context).accentColor, - child: IconButton( - icon: Icon(Icons.add), + child: ScaffoldMessenger( + child: Scaffold( + floatingActionButton: FloatingActionButton( onPressed: floatingActionButtonPressed, + foregroundColor: Colors.white, + backgroundColor: Theme.of(context).accentColor, + child: IconButton( + icon: Icon(Icons.add), + onPressed: floatingActionButtonPressed, + ), ), - ), - appBar: AppBar( - //backgroundColor: store.note.color, - actions: actions, - title: Text("Edit Set"), - ), - body: Container(child: Stack(children: stackChildren)))); + appBar: AppBar( + //backgroundColor: store.note.color, + actions: actions, + title: Text("Edit Set"), + ), + body: Container(child: Stack(children: stackChildren))), + )); } } @@ -449,10 +451,14 @@ class CollecitonNoteListItem extends StatelessWidget { child: card, onDismissed: (d) { removeNoteFromCollection(note); - showUndoSnackbar(Scaffold.of(context), - note.hasEmptyTitle ? "Note" : note.title, note, (_) { - undoRemoveNoteFromCollection(note); - }); + + showUndoSnackbar( + context: context, + dataString: note.hasEmptyTitle ? "Note" : note.title, + data: note, + onUndo: (_) { + undoRemoveNoteFromCollection(note); + }); }, direction: DismissDirection.startToEnd, key: globalKey, diff --git a/lib/editor_store.dart b/lib/editor_store.dart index f7f4a05..00568cb 100644 --- a/lib/editor_store.dart +++ b/lib/editor_store.dart @@ -55,7 +55,7 @@ class NoteEditorStore extends Store { }); deleteSection.listen((s) async { - int index = _note.sections.indexOf(s); + int index = _note.sections.indexWhere((element) => element.id == s.id); _note.sections.removeAt(index); _lastDeletion = Tuple2(index, s); await LocalStorage().syncNoteAttr(_note, 'sections'); diff --git a/lib/editor_views/audio.dart b/lib/editor_views/audio.dart index d2780da..256c7bb 100644 --- a/lib/editor_views/audio.dart +++ b/lib/editor_views/audio.dart @@ -112,12 +112,12 @@ class AudioFileView extends StatelessWidget { return Dismissible( child: view, onDismissed: (d) { - if (d == DismissDirection.endToStart) { + if (d == DismissDirection.startToEnd) { onDelete(); } else {} }, confirmDismiss: (d) async { - if (d == DismissDirection.endToStart) { + if (d == DismissDirection.startToEnd) { return true; } else { showAudioActionDialog(context, [ @@ -142,17 +142,19 @@ class AudioFileView extends StatelessWidget { }, direction: DismissDirection.horizontal, key: GlobalKey(), - background: Card( + secondaryBackground: Card( margin: EdgeInsets.all(0), child: Container( color: Theme.of(context).scaffoldBackgroundColor, - child: Row(children: [Icon(Icons.share)]), + child: Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [Icon(Icons.share)]), padding: EdgeInsets.all(10))), - secondaryBackground: Card( + background: Card( child: Container( color: Theme.of(context).accentColor, child: Row( - mainAxisAlignment: MainAxisAlignment.end, + mainAxisAlignment: MainAxisAlignment.start, children: [Icon(Icons.delete)]), padding: EdgeInsets.all(10))), ); diff --git a/lib/editor_views/section.dart b/lib/editor_views/section.dart index d8390a5..923d243 100644 --- a/lib/editor_views/section.dart +++ b/lib/editor_views/section.dart @@ -163,10 +163,15 @@ class SectionListItem extends StatelessWidget { child: card, onDismissed: (d) { deleteSection(section); - showUndoSnackbar(Scaffold.of(context), - section.hasEmptyTitle ? "Section" : section.title, section, (_) { - undoDeleteSection(section); - }); + + showUndoSnackbar( + context: context, + dataString: section.hasEmptyTitle ? "Section" : section.title, + data: section, + onClose: () => {}, + onUndo: (_) { + undoDeleteSection(section); + }); }, direction: DismissDirection.startToEnd, key: globalKey, diff --git a/lib/home.dart b/lib/home.dart index 37b0d78..fb9ff0e 100644 --- a/lib/home.dart +++ b/lib/home.dart @@ -4,6 +4,7 @@ import 'package:sound/dialogs/initial_import_dialog.dart'; import 'package:sound/note_views/appbar.dart'; import 'package:sound/note_views/seach.dart'; import 'package:sound/settings_store.dart'; +import 'package:sound/utils.dart'; import 'package:tuple/tuple.dart'; import 'local_storage.dart'; import 'file_manager.dart'; @@ -59,16 +60,18 @@ class Home extends StatelessWidget { } }, ); - return Scaffold( - floatingActionButton: FloatingActionButton( - onPressed: () => _floatingButtonPress(context), - child: IconButton( + return ScaffoldMessenger( + child: Scaffold( + floatingActionButton: FloatingActionButton( onPressed: () => _floatingButtonPress(context), - icon: Icon(Icons.add), + child: IconButton( + onPressed: () => _floatingButtonPress(context), + icon: Icon(Icons.add), + ), ), - ), - //bottomSheet: RecorderBottomSheet(), - body: builder); + //bottomSheet: RecorderBottomSheet(), + body: builder), + ); } } @@ -217,7 +220,11 @@ class HomeContentState extends State actions: [ IconButton( icon: Icon(Icons.delete), - onPressed: () => discardAllSelectedNotes()), + onPressed: () { + showSnack(Scaffold.of(context), + "Moved ${storage.selectedNotes.length} Notes to Trash"); + discardAllSelectedNotes(); + }), IconButton( icon: Icon(Icons.color_lens), onPressed: () { diff --git a/lib/looper.dart b/lib/looper.dart index e39723f..d0d1c1b 100644 --- a/lib/looper.dart +++ b/lib/looper.dart @@ -1,10 +1,8 @@ -import 'package:flushbar/flushbar.dart'; import 'package:flutter/material.dart'; import 'package:flutter_flux/flutter_flux.dart'; import 'package:sound/editor_store.dart'; import 'package:sound/model.dart'; import 'package:sound/recorder_store.dart'; -import 'package:sound/utils.dart'; import 'range_slider.dart' as frs; class Looper extends StatefulWidget { diff --git a/lib/note_editor.dart b/lib/note_editor.dart index 5946200..d93832f 100644 --- a/lib/note_editor.dart +++ b/lib/note_editor.dart @@ -1,6 +1,5 @@ import 'package:audioplayers/audioplayers.dart'; import 'package:clipboard_manager/clipboard_manager.dart'; -import 'package:flushbar/flushbar.dart'; import 'package:flutter/material.dart'; import 'package:flutter_flux/flutter_flux.dart' show StoreWatcherMixin; import 'package:sound/dialogs/add_to_collection_dialog.dart'; @@ -135,32 +134,26 @@ class NoteEditorState extends State } _onAudioFileDelete(AudioFile file, int index) { - Flushbar bar; - - bar = Flushbar( - //title: "Hey Ninja", - message: "${file.name} was deleted", - onStatusChanged: (status) { - // lets check whether the file was restored or not - if (status == FlushbarStatus.DISMISSED && - !store.note.audioFiles.contains(file)) { - print("hardly deleting audio file now"); - hardDeleteAudioFile(file); - } - }, - mainButton: TextButton( - child: Text("Undo"), - onPressed: () { - if (!store.note.audioFiles.contains(file)) { - restoreAudioFile(Tuple2(file, index)); - } - bar.dismiss(); - }), - duration: Duration(seconds: 3), - ); - bar.show(context); - softDeleteAudioFile(file); + + showUndoSnackbar( + context: context, + dataString: file.name == null || file.name.trim() == "" + ? "Audio File" + : file.name, + data: file, + onClose: () { + if (!store.note.audioFiles.contains(file)) { + print("hardly deleting audio file now"); + hardDeleteAudioFile(file); + } + }, + onUndo: (_) { + if (!store.note.audioFiles.contains(file)) { + restoreAudioFile(Tuple2(file, index)); + } + hideSnack(context); + }); } _copyToClipboard(BuildContext context) { @@ -560,10 +553,11 @@ class NoteEditorState extends State // will pop score return WillPopScope( onWillPop: () async { + hideSnack(context); stopAction(true); return true; }, - child: scaffold); + child: ScaffoldMessenger(child: scaffold)); } } diff --git a/lib/note_item.dart b/lib/note_item.dart index 7ed4847..77c555d 100644 --- a/lib/note_item.dart +++ b/lib/note_item.dart @@ -1,6 +1,5 @@ import 'dart:ui'; -import 'package:flushbar/flushbar.dart'; import 'package:flutter/material.dart'; import 'package:sound/model.dart'; import 'package:sound/utils.dart'; diff --git a/lib/utils.dart b/lib/utils.dart index 2d65d37..a304f43 100644 --- a/lib/utils.dart +++ b/lib/utils.dart @@ -47,14 +47,29 @@ class LifecycleEventHandler extends WidgetsBindingObserver { } const defaultDuration = Duration(seconds: 2); -showUndoSnackbar(ScaffoldState state, String dataString, dynamic data, - ValueChanged onUndo) { + +showUndoSnackbar( + {BuildContext context, + String dataString, + dynamic data, + ValueChanged onUndo, + Function onClose}) { var snackbar = SnackBar( content: Text("Deleted $dataString sucessfully"), duration: Duration(seconds: 3), - action: SnackBarAction(label: "Undo", onPressed: () => onUndo(data))); + action: SnackBarAction( + label: "Undo", + textColor: Theme.of(context).accentColor, + onPressed: () => onUndo(data))); + + ScaffoldMessenger.of(context) + .showSnackBar(snackbar) + .closed + .then((value) => onClose()); +} - state.showSnackBar(snackbar); +hideSnack(BuildContext context) { + ScaffoldMessenger.of(context).hideCurrentSnackBar(); } showSnack(var state, String message, {Duration duration = defaultDuration}) { diff --git a/pubspec.yaml b/pubspec.yaml index 7b12728..2fdce69 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -36,7 +36,6 @@ dependencies: file_picker: ^1.13.3 audioplayers: ^0.13.2 flutter_audio_recorder: ^0.5.5 - flushbar: ^1.10.4 pdf: ^1.11.1 google_fonts: ^1.1.2 receive_sharing_intent: ^1.4.1 From c269538f4e73d06edebaea866bcf0b7d2aca6fec Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sat, 24 Jul 2021 17:37:35 +0200 Subject: [PATCH 064/146] Remove prints, fix delete section --- lib/collections.dart | 1 - lib/editor_store.dart | 1 + lib/gallery.dart | 1 - lib/home.dart | 8 -------- lib/intent_receive.dart | 4 ++-- lib/local_storage.dart | 7 +++++-- lib/note_item.dart | 1 - lib/note_list.dart | 2 -- lib/note_search_view.dart | 7 ------- 9 files changed, 8 insertions(+), 24 deletions(-) diff --git a/lib/collections.dart b/lib/collections.dart index 866dae4..4118158 100644 --- a/lib/collections.dart +++ b/lib/collections.dart @@ -495,7 +495,6 @@ class Collections extends StatelessWidget { stream: LocalStorage().collectionStream, initialData: [], builder: (context, snap) { - print(snap); if (snap.hasData) { print("DB Set collections ${snap.data.length}"); DB().setCollections(snap.data); diff --git a/lib/editor_store.dart b/lib/editor_store.dart index 00568cb..6ca9c4a 100644 --- a/lib/editor_store.dart +++ b/lib/editor_store.dart @@ -56,6 +56,7 @@ class NoteEditorStore extends Store { deleteSection.listen((s) async { int index = _note.sections.indexWhere((element) => element.id == s.id); + print("try to delete section at index $index"); _note.sections.removeAt(index); _lastDeletion = Tuple2(index, s); await LocalStorage().syncNoteAttr(_note, 'sections'); diff --git a/lib/gallery.dart b/lib/gallery.dart index 25fc03d..3617f87 100644 --- a/lib/gallery.dart +++ b/lib/gallery.dart @@ -29,7 +29,6 @@ class Gallery extends StatelessWidget { double _itemHeight = _itemWidth * widthHeightRatio; EdgeInsetsGeometry _padding = _getPadding(row, col); - print(_padding); if (index >= items.length) return new Container( width: _itemWidth, height: _itemHeight, padding: _padding); diff --git a/lib/home.dart b/lib/home.dart index fb9ff0e..7ad8166 100644 --- a/lib/home.dart +++ b/lib/home.dart @@ -51,7 +51,6 @@ class Home extends StatelessWidget { stream: LocalStorage().stream, initialData: [], builder: (context, snap) { - print(snap); if (snap.hasData) { DB().setNotes(snap.data.where((e) => !e.discarded).toList()); return HomeContent(this.onMenuPressed); @@ -203,13 +202,6 @@ class HomeContentState extends State } _sliverNoteSelectionAppBar() { - print((storage.selectedNotes - .map((e) => e.starred) - .toList() - .length - .toDouble() / - storage.selectedNotes.length.toDouble())); - return SliverAppBar( pinned: true, flexibleSpace: _sortingView(), diff --git a/lib/intent_receive.dart b/lib/intent_receive.dart index 52f6991..4d86384 100644 --- a/lib/intent_receive.dart +++ b/lib/intent_receive.dart @@ -6,10 +6,10 @@ import 'package:sound/dialogs/audio_import_dialog.dart'; import 'package:sound/dialogs/text_import_dialog.dart'; showDataInvalidSnack(BuildContext context) { - var snackbar = SnackBar( + var snackBar = SnackBar( content: Text("The dataformat/files were invalid"), backgroundColor: Theme.of(context).errorColor); - Scaffold.of(context).showSnackBar(snackbar); + ScaffoldMessenger.of(context).showSnackBar(snackBar); } setupIntentReceivers(BuildContext context) { diff --git a/lib/local_storage.dart b/lib/local_storage.dart index b7a5bad..e8215f3 100644 --- a/lib/local_storage.dart +++ b/lib/local_storage.dart @@ -120,17 +120,20 @@ class LocalStorage { Future syncNote(Note note) async { print( - "Syncing note ${note.id} with title ${note.title} and ${note.audioFiles} audio files"); + "Syncing note ${note.id} with title ${note.title}, ${note.sections.length} sections and ${note.audioFiles.length} audio files"); final db = await getDatabase(); + await db.delete(sectionTable, where: "noteId = ?", whereArgs: [note.id]); + for (int i = 0; i < note.sections.length; i++) { Map sectionData = note.sections[i].toJson(); sectionData['idx'] = i; sectionData['noteId'] = note.id; - await db.insert(sectionTable, sectionData, + int id = await db.insert(sectionTable, sectionData, conflictAlgorithm: ConflictAlgorithm.replace); + print("insert section ${note.sections[i].title} => $id"); } // delete all old audio files with noteId diff --git a/lib/note_item.dart b/lib/note_item.dart index 77c555d..fc673c0 100644 --- a/lib/note_item.dart +++ b/lib/note_item.dart @@ -32,7 +32,6 @@ class AbstractNoteItem extends StatelessWidget { Widget highlightTitle(BuildContext context, String title, String highlight) { List spans = []; - print("$highlight $title"); if (highlight == null) { spans.add(TextSpan(text: title)); } else { diff --git a/lib/note_list.dart b/lib/note_list.dart index 312a7a6..53d33d5 100644 --- a/lib/note_list.dart +++ b/lib/note_list.dart @@ -95,8 +95,6 @@ class NoteListState extends State { ])) ])); } else { - print("index: $index"); - print(widget.items); var item = widget.items[index]; return Padding( diff --git a/lib/note_search_view.dart b/lib/note_search_view.dart index fb90a21..1d806c2 100644 --- a/lib/note_search_view.dart +++ b/lib/note_search_view.dart @@ -159,13 +159,6 @@ class _NoteSearchViewState extends State<_NoteSearchView> } _sliverNoteSelectionAppBar() { - print((storage.selectedNotes - .map((e) => e.starred) - .toList() - .length - .toDouble() / - storage.selectedNotes.length.toDouble())); - return SliverAppBar( pinned: true, leading: IconButton( From 0a7118dd8a5aa6fba241c554a31c2e43aa04e8a0 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sat, 24 Jul 2021 18:14:40 +0200 Subject: [PATCH 065/146] Fix Deselect note info does not remove chip --- lib/editor_views/additional_info.dart | 3 ++- lib/note_editor.dart | 8 ++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/editor_views/additional_info.dart b/lib/editor_views/additional_info.dart index 85c595e..f70031d 100644 --- a/lib/editor_views/additional_info.dart +++ b/lib/editor_views/additional_info.dart @@ -155,8 +155,9 @@ class _NoteEditorAdditionalInfoState extends State { FocusNode node = FocusNode(); node.addListener(() { if (widget.onFocusChange != null && node.hasFocus) { - print("focused $item"); widget.onFocusChange(item); + } else { + widget.onFocusChange(null); } }); focusNodes[item] = node; diff --git a/lib/note_editor.dart b/lib/note_editor.dart index d93832f..93ff8df 100644 --- a/lib/note_editor.dart +++ b/lib/note_editor.dart @@ -201,6 +201,7 @@ class NoteEditorState extends State } _onAdditionalInfoFocusChange(AdditionalInfoItem item) async { + print("=> note editor | on focus change: $item"); var suggestions = await _getInfoSuggestions(item); setState(() { additionalItemSuggestions = suggestions; @@ -497,7 +498,7 @@ class NoteEditorState extends State } final keyboardOpen = WidgetsBinding.instance.window.viewInsets.bottom > 0; - print("keyboard open: $keyboardOpen"); + print("====> keyboard open: $keyboardOpen"); Widget suggestionSheet = PreferredSize( preferredSize: Size.fromHeight(20), @@ -531,11 +532,10 @@ class NoteEditorState extends State ), bottomSheet: showSheet ? RecorderBottomSheet(key: bottomSheetKey) - : (keyboardOpen && - focusedAdditionalInfoItem != null && + : (focusedAdditionalInfoItem != null && !(useTabs && tabController.index != 1)) ? suggestionSheet - : null, + : Container(height: 0, width: 0), body: useTabs ? TabBarView( controller: tabController, From 33c522980b5812d4ab37f38002d955994cf7ff70 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Fri, 13 Aug 2021 15:29:33 +0200 Subject: [PATCH 066/146] Update version --- pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pubspec.yaml b/pubspec.yaml index 2fdce69..e802e69 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -15,7 +15,7 @@ publish_to: "none" # Remove this line if you wish to publish to pub.dev # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. # Read more about iOS versioning at # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html -version: 1.0.0+1 +version: 1.0.1+1 environment: sdk: ">=2.7.0 <3.0.0" From fa9d1ff6c390262fb1795290a06f797e2fb56a18 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Fri, 13 Aug 2021 15:29:41 +0200 Subject: [PATCH 067/146] Use suffix --- android/app/build.gradle | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index a031c24..85075cf 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -40,7 +40,7 @@ android { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId "de.onenightproductions.sketchord" minSdkVersion 19 - targetSdkVersion 28 + targetSdkVersion 27 versionCode flutterVersionCode.toInteger() versionName flutterVersionName } @@ -52,12 +52,12 @@ android { dimension "app" resValue "string", "app_name", "SketChord Dev" versionNameSuffix "-dev" - applicationId "de.onenightproductions.sketchord.dev" + applicationIdSuffix ".dev" } prod { dimension "app" resValue "string", "app_name", "SketChord" - applicationId "de.onenightproductions.sketchord.prod" + applicationIdSuffix ".prod" versionNameSuffix "-prod" } } From db84f311e4831b6e71c6a02cfb70fe0acb3c4135 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Fri, 13 Aug 2021 15:29:55 +0200 Subject: [PATCH 068/146] Remove colors --- lib/collections.dart | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/collections.dart b/lib/collections.dart index 4118158..650a591 100644 --- a/lib/collections.dart +++ b/lib/collections.dart @@ -506,8 +506,6 @@ class Collections extends StatelessWidget { ); return Scaffold( floatingActionButton: FloatingActionButton( - foregroundColor: Colors.white, - backgroundColor: Theme.of(context).accentColor, onPressed: () => _floatingButtonPress(context), child: IconButton( onPressed: () => _floatingButtonPress(context), From f6c12adf5d1c935106a406fc13bb2d40f0dda97f Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 5 Sep 2021 11:56:34 +0200 Subject: [PATCH 069/146] Expand text to max width --- lib/note_item.dart | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/lib/note_item.dart b/lib/note_item.dart index fc673c0..ab60d2c 100644 --- a/lib/note_item.dart +++ b/lib/note_item.dart @@ -21,13 +21,15 @@ class AbstractNoteItem extends StatelessWidget { this.sectionText().trim() == ""); Widget singleText(BuildContext context, String text) { - return Padding( - padding: EdgeInsets.all(8.0), - child: Text(text, - style: Theme.of(context) - .textTheme - .headline5 - .copyWith(fontWeight: FontWeight.w200))); + return Container( + width: MediaQuery.of(context).size.width, + child: Padding( + padding: EdgeInsets.all(8.0), + child: Text(text, + style: Theme.of(context) + .textTheme + .headline5 + .copyWith(fontWeight: FontWeight.w200)))); } Widget highlightTitle(BuildContext context, String title, String highlight) { @@ -107,7 +109,6 @@ class AbstractNoteItem extends StatelessWidget { return Text.rich( TextSpan( - //text: 'TEST', children: spans, ), softWrap: true, From 843e3231b436b994d78e74c26fc618b0c895cdf8 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sat, 18 Sep 2021 17:55:16 +0200 Subject: [PATCH 070/146] Fixes and delete irrevocably dialogs - restoreNote when deleted - only 5 suggestions - change note title size - add extra Created At and Last Modified --- lib/collections.dart | 3 +- lib/dialogs/confirmation_dialogs.dart | 81 ++++++++++++++++++++++++++ lib/dialogs/initial_import_dialog.dart | 1 + lib/editor_views/additional_info.dart | 20 ++++++- lib/editor_views/section.dart | 3 +- lib/home.dart | 15 ++++- lib/local_storage.dart | 10 ++++ lib/main.dart | 11 +++- lib/note_editor.dart | 11 ++-- lib/note_item.dart | 7 +-- lib/range_slider.dart | 2 +- lib/storage.dart | 11 ++++ lib/trash.dart | 48 +++++++++------ lib/utils.dart | 9 ++- 14 files changed, 191 insertions(+), 41 deletions(-) create mode 100644 lib/dialogs/confirmation_dialogs.dart diff --git a/lib/collections.dart b/lib/collections.dart index 650a591..a3c6dab 100644 --- a/lib/collections.dart +++ b/lib/collections.dart @@ -454,7 +454,8 @@ class CollecitonNoteListItem extends StatelessWidget { showUndoSnackbar( context: context, - dataString: note.hasEmptyTitle ? "Note" : note.title, + message: + "Removed ${note.hasEmptyTitle ? "Note" : note.title} from collection", data: note, onUndo: (_) { undoRemoveNoteFromCollection(note); diff --git a/lib/dialogs/confirmation_dialogs.dart b/lib/dialogs/confirmation_dialogs.dart new file mode 100644 index 0000000..a561dfe --- /dev/null +++ b/lib/dialogs/confirmation_dialogs.dart @@ -0,0 +1,81 @@ +import 'package:flutter/material.dart'; +import 'package:sound/local_storage.dart'; +import 'package:sound/model.dart'; + +showDeleteForeverDialog({ + BuildContext context, + Note note, + Function onDelete, +}) { + String message = + "Are you sure you want to delete \"${note.title}\" irrevocably?"; + showConfirmationDialog( + title: "Delete Irrevocably", + context: context, + onConfirm: () { + LocalStorage().deleteNote(note); + onDelete(); + }, + onDeny: () {}, + message: message); +} + +showDeleteNotesForeverDialog({ + BuildContext context, + List notes, + Function onDelete, +}) { + String message = + "Are you sure you want to delete ${notes.length} note/s irrevocably?"; + showConfirmationDialog( + title: "Delete Irrevocably", + context: context, + onConfirm: () { + for (Note note in notes) { + LocalStorage().deleteNote(note); + } + onDelete(); + }, + onDeny: () {}, + message: message); +} + +showConfirmationDialog( + {BuildContext context, + String title, + String message, + Function onConfirm, + Function onDeny}) { + showDialog( + context: context, + builder: (BuildContext context) { + return StatefulBuilder(builder: (context, setState) { + return AlertDialog( + title: new Text(title), + content: Padding( + child: Text(message), + padding: EdgeInsets.only(right: 10), + ), + actions: [ + new TextButton( + child: Text("No"), + onPressed: () { + if (onDeny != null) { + onDeny(); + } + Navigator.of(context).pop(); + }, + ), + // usually buttons at the bottom of the dialog + new ElevatedButton( + child: new Text("Yes"), + onPressed: () { + onConfirm(); + Navigator.of(context).pop(); + }), + ], + ); + }); + }, + ); +} diff --git a/lib/dialogs/initial_import_dialog.dart b/lib/dialogs/initial_import_dialog.dart index f4434b0..b6ade63 100644 --- a/lib/dialogs/initial_import_dialog.dart +++ b/lib/dialogs/initial_import_dialog.dart @@ -33,6 +33,7 @@ showSelectNotesImportDialog( "Would you like to import any of these example songs?"}) async { showSelectNotesDialog(context, (List selected) async { List noteIds = selected.map((n) => n.id).toList(); + print("selected note ids: $noteIds"); for (Note note in selected) { await LocalStorage().syncNote(note); diff --git a/lib/editor_views/additional_info.dart b/lib/editor_views/additional_info.dart index f70031d..7264740 100644 --- a/lib/editor_views/additional_info.dart +++ b/lib/editor_views/additional_info.dart @@ -181,6 +181,14 @@ class _NoteEditorAdditionalInfoState extends State { maxLines: 1); } + _extra({text, title}) { + return TextFormField( + enabled: false, + initialValue: text, + decoration: + InputDecoration(labelText: title, border: InputBorder.none)); + } + getEdit(AdditionalInfoItem item) { switch (item) { case AdditionalInfoItem.tuning: @@ -239,8 +247,14 @@ class _NoteEditorAdditionalInfoState extends State { @override Widget build(BuildContext context) { - return Wrap( - runSpacing: 1, - children: widget.items.map((item) => getEdit(item)).toList()); + var edits = widget.items.map((item) => getEdit(item)).toList(); + var extra = [ + _extra(text: dateToString(widget.note.createdAt), title: "Created At"), + _extra( + text: dateToString(widget.note.lastModified), + title: "Last Modified At") + ]; + var children = edits + extra; + return Wrap(runSpacing: 1, children: children); } } diff --git a/lib/editor_views/section.dart b/lib/editor_views/section.dart index 923d243..56a9a46 100644 --- a/lib/editor_views/section.dart +++ b/lib/editor_views/section.dart @@ -166,7 +166,8 @@ class SectionListItem extends StatelessWidget { showUndoSnackbar( context: context, - dataString: section.hasEmptyTitle ? "Section" : section.title, + message: + "Deleted ${section.hasEmptyTitle ? "Section" : "section " + section.title}", data: section, onClose: () => {}, onUndo: (_) { diff --git a/lib/home.dart b/lib/home.dart index 7ad8166..a52e27e 100644 --- a/lib/home.dart +++ b/lib/home.dart @@ -213,9 +213,20 @@ class HomeContentState extends State IconButton( icon: Icon(Icons.delete), onPressed: () { - showSnack(Scaffold.of(context), - "Moved ${storage.selectedNotes.length} Notes to Trash"); + showUndoSnackbar( + data: null, + context: context, + onClose: () {}, + onUndo: (_) { + undoDiscardAllSelectedNotes(); + }, + message: + "Moved ${storage.selectedNotes.length} Notes to Trash"); + discardAllSelectedNotes(); + + // showSnack(Scaffold.of(context), + // "Moved ${storage.selectedNotes.length} Notes to Trash"); }), IconButton( icon: Icon(Icons.color_lens), diff --git a/lib/local_storage.dart b/lib/local_storage.dart index e8215f3..51b230a 100644 --- a/lib/local_storage.dart +++ b/lib/local_storage.dart @@ -394,6 +394,16 @@ class LocalStorage { await _updateNote(note); } + Future restoreNoteById(String noteId) async { + Note note = await getNoteById(noteId); + if (note != null) { + note.discarded = false; + await _updateNote(note); + return true; + } else + return false; + } + Future syncNoteAttr(Note note, String attr) async { if (["sections", "title", "audioFiles", "tuning"].contains(attr)) note.lastModified = DateTime.now(); diff --git a/lib/main.dart b/lib/main.dart index fdc73d9..9068f8a 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -69,6 +69,7 @@ class AppState extends State with StoreWatcherMixin { primaryColor: Colors.white, accentColor: mainColor, buttonColor: mainColor, + brightness: Brightness.dark, colorScheme: ColorScheme.light().copyWith( primary: mainColor, secondary: Colors.white, @@ -84,9 +85,12 @@ class AppState extends State with StoreWatcherMixin { appBarTheme: ThemeData.dark().appBarTheme.copyWith( brightness: Brightness.dark, color: appBarColor, - textTheme: ThemeData.dark().textTheme.copyWith( - title: - ThemeData.dark().textTheme.title.copyWith(fontSize: 16))), + textTheme: ThemeData.dark().textTheme + //titleTextStyle: ThemeData.dark() + // .appBarTheme + // .titleTextStyle + // .copyWith(fontSize: 16)), + ), buttonTheme: ThemeData.dark().buttonTheme.copyWith(buttonColor: mainColor), chipTheme: ThemeData.dark().chipTheme.copyWith( @@ -121,6 +125,7 @@ class AppState extends State with StoreWatcherMixin { cursorColor: mainColor, selectionHandleColor: mainColor), cardColor: Colors.grey.shade200, + brightness: Brightness.light, colorScheme: ColorScheme.light().copyWith( primary: mainColor, secondary: Colors.black54, diff --git a/lib/note_editor.dart b/lib/note_editor.dart index 93ff8df..f99dc14 100644 --- a/lib/note_editor.dart +++ b/lib/note_editor.dart @@ -138,9 +138,8 @@ class NoteEditorState extends State showUndoSnackbar( context: context, - dataString: file.name == null || file.name.trim() == "" - ? "Audio File" - : file.name, + message: + 'Deleted ${file.name == null || file.name.trim() == "" ? "Audio File" : file.name}', data: file, onClose: () { if (!store.note.audioFiles.contains(file)) { @@ -204,7 +203,8 @@ class NoteEditorState extends State print("=> note editor | on focus change: $item"); var suggestions = await _getInfoSuggestions(item); setState(() { - additionalItemSuggestions = suggestions; + additionalItemSuggestions = suggestions.sublist( + 0, suggestions.length > 5 ? 5 : suggestions.length); focusedAdditionalInfoItem = item; }); } @@ -283,7 +283,8 @@ class NoteEditorState extends State // update suggestions var suggestions = await _getInfoSuggestions(focusedAdditionalInfoItem); setState(() { - additionalItemSuggestions = suggestions; + additionalItemSuggestions = suggestions.sublist( + 0, suggestions.length > 5 ? 5 : suggestions.length); }); } diff --git a/lib/note_item.dart b/lib/note_item.dart index ab60d2c..68e3eef 100644 --- a/lib/note_item.dart +++ b/lib/note_item.dart @@ -26,10 +26,8 @@ class AbstractNoteItem extends StatelessWidget { child: Padding( padding: EdgeInsets.all(8.0), child: Text(text, - style: Theme.of(context) - .textTheme - .headline5 - .copyWith(fontWeight: FontWeight.w200)))); + textScaleFactor: 0.8, + style: Theme.of(context).textTheme.headline6.copyWith()))); } Widget highlightTitle(BuildContext context, String title, String highlight) { @@ -163,6 +161,7 @@ class SmallNoteItem extends AbstractNoteItem { color: note.color, shape: (isSelected ? getSelectedChardShape(context) : null), child: Container( + width: MediaQuery.of(context).size.width, decoration: (isSelected) ? getSelectedDecoration(context) : getNormalDecoration(context), diff --git a/lib/range_slider.dart b/lib/range_slider.dart index 52c0993..63f7ed6 100644 --- a/lib/range_slider.dart +++ b/lib/range_slider.dart @@ -469,7 +469,7 @@ class _RangeSliderState extends State showValueIndicator: sliderTheme.showValueIndicator ?? _defaultShowValueIndicator, valueIndicatorTextStyle: sliderTheme.valueIndicatorTextStyle ?? - theme.textTheme.body2.copyWith( + theme.textTheme.bodyText2.copyWith( color: theme.colorScheme.onPrimary, ), ); diff --git a/lib/storage.dart b/lib/storage.dart index ff9a2ff..c2d62e4 100644 --- a/lib/storage.dart +++ b/lib/storage.dart @@ -134,6 +134,9 @@ class StaticStorage extends Store { List _selectedNotes; List get selectedNotes => _selectedNotes; + List _prevDiscardedNoteIds; + List get prevDiscardedNoteIds => _prevDiscardedNoteIds; + String _search = ""; String get search => _search; @@ -248,6 +251,7 @@ class StaticStorage extends Store { for (Note note in _selectedNotes) { LocalStorage().discardNote(note); } + _prevDiscardedNoteIds = _selectedNotes.map((e) => e.id).toList(); _selectedNotes.clear(); trigger(); }); @@ -317,6 +321,12 @@ class StaticStorage extends Store { trigger(); } }); + + undoDiscardAllSelectedNotes.listen((event) { + for (String noteId in this._prevDiscardedNoteIds) { + LocalStorage().restoreNoteById(noteId); + } + }); } bool _isSearchValid(Note note) { @@ -444,6 +454,7 @@ Action openSettings = Action(); Action triggerSelectNote = Action(); Action removeAllSelectedNotes = Action(); Action discardAllSelectedNotes = Action(); +Action undoDiscardAllSelectedNotes = Action(); Action starAllSelectedNotes = Action(); Action unstarAllSelectedNotes = Action(); Action colorAllSelectedNotes = Action(); diff --git a/lib/trash.dart b/lib/trash.dart index db150a8..06ce3c9 100644 --- a/lib/trash.dart +++ b/lib/trash.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:sound/dialogs/confirmation_dialogs.dart'; import 'package:sound/local_storage.dart'; import 'package:sound/model.dart'; import 'package:sound/note_list.dart'; @@ -55,20 +56,25 @@ class _TrashState extends State { _runPopupAction(String action) { print("action: $action"); if (action == "delete") { - for (Note note in selectedNotes) { - LocalStorage().deleteNote(note); - } - setState(() { - notes.removeWhere((n) => isSelected(n)); - selectedNotes = []; - }); + // TODO: + showDeleteNotesForeverDialog( + context: context, + notes: selectedNotes, + onDelete: () { + setState(() { + notes.removeWhere((n) => isSelected(n)); + selectedNotes = []; + }); + }); } else if (action == 'delete_all') { - for (Note note in notes) { - LocalStorage().deleteNote(note); - } - setState(() { - notes = []; - }); + showDeleteNotesForeverDialog( + context: context, + notes: notes, + onDelete: () { + setState(() { + notes = []; + }); + }); } } @@ -140,12 +146,16 @@ class _TrashState extends State { } _deleteForever(Note note) { - LocalStorage().deleteNote(note); - - setState(() { - notes.removeWhere((n) => n.id == note.id); - }); - Navigator.of(context).pop(); + showDeleteForeverDialog( + context: context, + note: note, + onDelete: () { + setState(() { + notes.removeWhere((n) => n.id == note.id); + }); + + Navigator.of(context).pop(); + }); } onTap(Note note) { diff --git a/lib/utils.dart b/lib/utils.dart index a304f43..6ef79f5 100644 --- a/lib/utils.dart +++ b/lib/utils.dart @@ -6,6 +6,11 @@ String getFormattedDate(DateTime date) { return date.toString().substring(0, _date.length - 7).replaceAll(":", "-"); } +String dateToString(DateTime date) { + String _date = DateTime.now().toString(); + return date.toString().substring(0, _date.length - 7); +} + List itemsByFrequency(List input) => [ ...(input .fold>( @@ -50,12 +55,12 @@ const defaultDuration = Duration(seconds: 2); showUndoSnackbar( {BuildContext context, - String dataString, + String message, dynamic data, ValueChanged onUndo, Function onClose}) { var snackbar = SnackBar( - content: Text("Deleted $dataString sucessfully"), + content: Text(message), duration: Duration(seconds: 3), action: SnackBarAction( label: "Undo", From a438fcfa4d5833a089de844f9d704bc55603a3f5 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sat, 18 Sep 2021 18:46:08 +0200 Subject: [PATCH 071/146] Add sentry logging --- lib/main.dart | 14 ++++++++++++-- pubspec.yaml | 1 + 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 9068f8a..692fd3a 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -8,9 +8,18 @@ import 'package:sound/local_storage.dart'; import 'package:sound/menu.dart'; import 'package:sound/model.dart'; import 'settings_store.dart'; +import 'package:sentry_flutter/sentry_flutter.dart'; +import 'package:sentry/sentry.dart'; -void main() { - runApp(App()); +Future main() async { + await SentryFlutter.init( + (options) { + options.dsn = + 'https://1b2a119a53224f48966b710bc30123be@o1005300.ingest.sentry.io/5966036'; + }, + // Init your App. + appRunner: () => runApp(App()), + ); } // ffe57c73 @@ -33,6 +42,7 @@ class AppState extends State with StoreWatcherMixin { @override void initState() { super.initState(); + store = listenToStore(settingsToken); // initialize app with loaded settings diff --git a/pubspec.yaml b/pubspec.yaml index e802e69..252990e 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -47,6 +47,7 @@ dependencies: flutter_launcher_icons: ^0.8.0 sqflite: ^1.3.0 flutter_file_dialog: ^1.0.0 + sentry_flutter: ^4.0.6 flutter_icons: android: true From 401020b1fa8d68cae625102bcf99e3754a930483 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sat, 18 Sep 2021 20:20:32 +0200 Subject: [PATCH 072/146] RecorderBottomSheet is exapanding using dialog --- lib/looper.dart | 18 +-- lib/note_editor.dart | 13 ++- lib/recorder_bottom_sheet.dart | 204 +++++++++++++++++---------------- 3 files changed, 131 insertions(+), 104 deletions(-) diff --git a/lib/looper.dart b/lib/looper.dart index d0d1c1b..d1f1406 100644 --- a/lib/looper.dart +++ b/lib/looper.dart @@ -8,8 +8,10 @@ import 'range_slider.dart' as frs; class Looper extends StatefulWidget { final Color color; final Function onMinimize; + final bool enableMinimize; - Looper(this.color, this.onMinimize, {Key key}) : super(key: key); + Looper(this.color, this.onMinimize, {this.enableMinimize = true, Key key}) + : super(key: key); @override _LooperState createState() => _LooperState(); @@ -75,12 +77,14 @@ class _LooperState extends State with StoreWatcherMixin { mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Padding( - padding: EdgeInsets.only(left: 8), - child: IconButton( - onPressed: widget.onMinimize, - icon: Icon(Icons.arrow_downward), - )), + widget.enableMinimize + ? Padding( + padding: EdgeInsets.only(left: 8), + child: IconButton( + onPressed: widget.onMinimize, + icon: Icon(Icons.close), + )) + : Container(), Padding( padding: EdgeInsets.only(right: 8), child: TextButton( diff --git a/lib/note_editor.dart b/lib/note_editor.dart index f99dc14..fe50ab8 100644 --- a/lib/note_editor.dart +++ b/lib/note_editor.dart @@ -90,6 +90,7 @@ class NoteEditorState extends State noteEditorTitleFocusNode = FocusNode(); tabController = TabController(length: 3, initialIndex: 0, vsync: this); tabController.addListener(() { + FocusScope.of(context).unfocus(); setState(() {}); }); @@ -527,7 +528,16 @@ class NoteEditorState extends State controller: tabController, isScrollable: true, tabs: List.generate(categories.length, (int index) { - return new Tab(text: categories[index]); + return Container( + width: 90, + child: Align( + alignment: Alignment.center, + child: Text( + categories[index], + )), + padding: EdgeInsets.all(16), + ); + //return new Tab(text: categories[index]); })) : null, ), @@ -554,6 +564,7 @@ class NoteEditorState extends State // will pop score return WillPopScope( onWillPop: () async { + print("will pop..."); hideSnack(context); stopAction(true); return true; diff --git a/lib/recorder_bottom_sheet.dart b/lib/recorder_bottom_sheet.dart index e6e97b5..b98d5fd 100644 --- a/lib/recorder_bottom_sheet.dart +++ b/lib/recorder_bottom_sheet.dart @@ -190,7 +190,7 @@ class _RecorderBottomSheetState extends State Animation _slideAnimation; Animation _scaleAnimation, _sheetScaleAnimation; - bool forward = false; + bool minimized = true; ActionSubscription sub; @override @@ -200,18 +200,11 @@ class _RecorderBottomSheetState extends State WidgetsBinding.instance.addObserver(this); final keyboardOpen = WidgetsBinding.instance.window.viewInsets.bottom > 0; - if (keyboardOpen) { - setMinimized(true); - } - forward = store.minimized || keyboardOpen; - print("init recorder bottom sheet"); - print("keyboard open: $keyboardOpen"); - print("minimized: ${store.minimized}"); - print("forward: ${forward}"); height = maxMinimizeHeight; + _controller = AnimationController( - value: (forward) ? 1.0 : 0.0, // TODO check this + value: 0.0, // TODO check this vsync: this, duration: Duration(milliseconds: 500)); @@ -221,62 +214,81 @@ class _RecorderBottomSheetState extends State _sheetScaleAnimation = Tween(begin: 1.0, end: -1.0).animate(_controller); - _controller.addStatusListener((status) { - print(status); - if (status == AnimationStatus.forward) { - setState(() { - forward = true; - }); - } else if (status == AnimationStatus.reverse) { - setState(() { - forward = false; - }); - } else if (status == AnimationStatus.completed || - status == AnimationStatus.dismissed) { - setMinimized(forward); - } - }); - print("init recorder bottom sheet state"); - - // Future.delayed(Duration(milliseconds: 100), () { - // if (store.minimized) { - // _controller.forward(); - // } else { - // _controller.reverse(); - // } - // }); - - sub = setMinimized.listen((m) { - if (forward != m) { - if (forward) { - _controller.reverse(); - } else { - _controller.forward(); - } + sub = stopAction.listen((event) { + if (!minimized) { + animateForward(); } }); } @override void dispose() { - sub.cancel(); - _controller.dispose(); + if (sub != null) { + sub.cancel(); + } + + if (_controller != null) { + _controller.dispose(); + } WidgetsBinding.instance.removeObserver(this); super.dispose(); } - @override - void didChangeMetrics() { - final bottomInset = WidgetsBinding.instance.window.viewInsets.bottom; - print("bottomInsets: $bottomInset"); + void animateForward() { + setState(() { + minimized = true; + }); - if (bottomInset > 0.0 && !store.minimized) { - _controller.forward(); - } + Navigator.of(context).pop(); } - @override - Widget build(BuildContext context) { + void animateReverse() { + print("reverse"); + + setState(() { + minimized = false; + }); + + showDialog( + context: context, + useSafeArea: true, + barrierDismissible: false, + builder: (BuildContext context) { + return WillPopScope( + onWillPop: () async { + animateForward(); + return true; + }, + child: AlertDialog( + contentPadding: const EdgeInsets.all(0), + insetPadding: const EdgeInsets.all(8), + content: getControls( + minimized: false, + onMinimize: () { + animateForward(); + }))); + }); + + // Navigator.of(context) + // .push(MaterialPageRoute(builder: (BuildContext context) { + // return Scaffold( + // appBar: AppBar( + // leading: IconButton( + // icon: Icon(Icons.fullscreen_exit_sharp), + // onPressed: () { + // animateForward(); + // Navigator.of(context).pop(); + // }), + // title: const Text("Controls")), + // body: Container( + // alignment: Alignment.bottomCenter, + // child: getControls(minimized: false, onExpand: () {}), + // ), + // ); + // })); + } + + Widget getControls({bool minimized, Function onExpand, Function onMinimize}) { if (store.state == RecorderState.STOP) return Container(height: 0, width: 0); @@ -294,65 +306,57 @@ class _RecorderBottomSheetState extends State double width = MediaQuery.of(context).size.width; Looper looper = Looper(color, () { - _controller?.forward(); - }); + // on + if (onMinimize != null) { + onMinimize(); + } + }, enableMinimize: true); + BottomInfo info = BottomInfo(color); + Widget controls; + + print("showLooper: $showLooper"); + if (showLooper) { - return GestureDetector( + controls = GestureDetector( onPanUpdate: (details) { - if (details.delta.dy < -5 && forward && store.minimized) { - print("reverse ${details.delta.dy}"); - _controller.reverse(); - } else if (details.delta.dy > 5 && !forward && !store.minimized) { - _controller.forward(); + if (details.delta.dy < -5 && minimized) { + onExpand(); } }, child: Column( mainAxisSize: MainAxisSize.min, mainAxisAlignment: MainAxisAlignment.end, children: [ - SizeTransition( - axis: Axis.vertical, - sizeFactor: _sheetScaleAnimation, - child: Container( - // decoration: BoxDecoration( - // color: Theme.of(context).bottomAppBarColor, - // borderRadius: BorderRadius.all(Radius.circular(15)), - // boxShadow: [ - // BoxShadow( - // color: Theme.of(context).appBarTheme.color, - // spreadRadius: 2, - // blurRadius: 10, - // ), - // ]), - color: Theme.of(context).bottomAppBarColor, - height: bottomHeight + maxMinimizeHeight, - width: width, - child: Column(children: [ - SlideTransition( - position: _slideAnimation, - child: Container( - child: Column(children: [ - SizedBox(height: 10), - looper, - SizedBox(height: 50), - Text("Player:"), - PlayerSlider(), - ]))), - //Expanded(child: Container()), - ]), - )), - store.minimized + (!minimized) + ? Container( + color: Theme.of(context).bottomAppBarColor, + height: bottomHeight + maxMinimizeHeight, + width: width, + child: Column(children: [ + Container( + child: Column(children: [ + SizedBox(height: 10), + looper, + SizedBox(height: 50), + Text("Player:"), + PlayerSlider(), + ])), + //Expanded(child: Container()), + ]), + ) + : Container(), + minimized ? GestureDetector( - onTap: () => _controller.reverse(), + onTap: () {}, child: Container( height: 20, width: width, alignment: Alignment.topCenter, color: Theme.of(context).bottomAppBarColor, child: IconButton( - onPressed: () {}, + onPressed: onExpand, icon: Icon(Icons.arrow_upward, size: 16)), )) : Container(), @@ -360,7 +364,15 @@ class _RecorderBottomSheetState extends State ]), ); } else { - return info; + controls = info; } + + return controls; + } + + @override + Widget build(BuildContext context) { + if (!minimized) return Container(); + return getControls(minimized: true, onExpand: animateReverse); } } From 11a87ae0f91d19b752ba0e6ab9290bbe05fdc411 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sat, 18 Sep 2021 21:15:44 +0200 Subject: [PATCH 073/146] Fix closing dialog when looping --- lib/recorder_bottom_sheet.dart | 2 +- lib/recorder_store.dart | 2 ++ lib/utils.dart | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/recorder_bottom_sheet.dart b/lib/recorder_bottom_sheet.dart index b98d5fd..ad59012 100644 --- a/lib/recorder_bottom_sheet.dart +++ b/lib/recorder_bottom_sheet.dart @@ -215,7 +215,7 @@ class _RecorderBottomSheetState extends State Tween(begin: 1.0, end: -1.0).animate(_controller); sub = stopAction.listen((event) { - if (!minimized) { + if (!minimized && !store.isLooping) { animateForward(); } }); diff --git a/lib/recorder_store.dart b/lib/recorder_store.dart index 6ae4cb3..54bf679 100644 --- a/lib/recorder_store.dart +++ b/lib/recorder_store.dart @@ -87,6 +87,8 @@ class RecorderBottomSheetStore extends Store { AudioFormat get audioFormat => _audioFormat; AudioPlayer get player => _player; + bool get isLooping => (loopRange != null); + getDurationLoopEnd() { if (loopRange == null) return null; return Duration(milliseconds: (loopRange.end * 1000).floor()); diff --git a/lib/utils.dart b/lib/utils.dart index 6ef79f5..4f5f825 100644 --- a/lib/utils.dart +++ b/lib/utils.dart @@ -136,7 +136,7 @@ String resolveRichContent(String data) { text += char; } } - print("${chords.length} vs ${text.length}"); + // print("${chords.length} vs ${text.length}"); resolved.add(chords); resolved.add(text); } else { From 71dcb470f20e96b60d633861023c5cc8fc0eb76f Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sat, 18 Sep 2021 21:20:30 +0200 Subject: [PATCH 074/146] Fix tab view moving --- lib/note_editor.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/note_editor.dart b/lib/note_editor.dart index fe50ab8..205eeb0 100644 --- a/lib/note_editor.dart +++ b/lib/note_editor.dart @@ -518,6 +518,7 @@ class NoteEditorState extends State .toList()), )); + var width = MediaQuery.of(context).size.width; Scaffold scaffold = Scaffold( key: _globalKey, appBar: AppBar( @@ -529,7 +530,6 @@ class NoteEditorState extends State isScrollable: true, tabs: List.generate(categories.length, (int index) { return Container( - width: 90, child: Align( alignment: Alignment.center, child: Text( From 6fa8c478ce8724b1b9c1d168809cc7083d3efdbd Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sat, 18 Sep 2021 21:54:37 +0200 Subject: [PATCH 075/146] Fix pdf export size and add page number --- lib/export.dart | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/lib/export.dart b/lib/export.dart index 933627a..086faa5 100644 --- a/lib/export.dart +++ b/lib/export.dart @@ -130,9 +130,10 @@ class Exporter { int rows = 0; - for (var section in note.sections) { + for (var section in note.sections + .where((element) => element.content.trim().length > 0)) { int sectionLength = section.content.split("\n").length; - if ((rows + sectionLength) > 50) { + if ((rows + sectionLength) > 65) { sectionRows.add(sections); sections = []; rows = 0; @@ -146,7 +147,9 @@ class Exporter { style: pw.TextStyle(fontWeight: pw.FontWeight.bold)) ])); sections.add(pw.Row(children: [pw.Container(height: 5)])); - sections.add(pw.Row(children: [pw.Text(section.content)])); + sections.add(pw.Row(children: [ + pw.Text(section.content, style: pw.TextStyle(fontSize: 7)) + ])); sections.add(pw.Row(children: [pw.Container(height: 10)])); print("rows: $rows"); @@ -172,7 +175,7 @@ class Exporter { pw.Center(child: pw.Text(note.title, style: pw.TextStyle(fontSize: 20))) ])); // spacing between title and content - titleRows.add(pw.Row(children: [pw.Container(height: 20)])); + titleRows.add(pw.Row(children: [pw.Container(height: 50)])); String artist = (note.artist != null ? note.artist : Settings().name); @@ -185,12 +188,19 @@ class Exporter { ); for (var i = 0; i < sectionRows.length; i++) { + var page = pw.Positioned( + bottom: 0, + left: 0, + child: pw.Text("Page ${i + 1}/${sectionRows.length}"), + ); + pdf.addPage(pw.Page( - margin: pw.EdgeInsets.all(20), + margin: pw.EdgeInsets.only(top: 50, bottom: 20, left: 50, right: 20), pageFormat: PdfPageFormat.a4, build: (pw.Context context) { return pw.Stack(children: [ copyright, + page, pw.Column( children: (i == 0) ? (titleRows..addAll(sectionRows[i])) From e21f95f679db41d26569a865a658512f3a9b36ff Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sat, 18 Sep 2021 22:01:54 +0200 Subject: [PATCH 076/146] Change padding --- lib/note_views/appbar.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/note_views/appbar.dart b/lib/note_views/appbar.dart index e62938c..2f25170 100644 --- a/lib/note_views/appbar.dart +++ b/lib/note_views/appbar.dart @@ -235,7 +235,7 @@ class SortingView extends StatelessWidget { @override Widget build(BuildContext context) { return Padding( - padding: EdgeInsets.only(top: 70), + padding: EdgeInsets.only(top: 75), child: Container( color: Theme.of(context).appBarTheme.backgroundColor, child: Row( From 969a95b8434e1fb72e66fd5d23bb3c578a4d797a Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sat, 18 Sep 2021 22:19:08 +0200 Subject: [PATCH 077/146] Fix fit content on pages --- lib/export.dart | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/export.dart b/lib/export.dart index 086faa5..87b2165 100644 --- a/lib/export.dart +++ b/lib/export.dart @@ -133,7 +133,9 @@ class Exporter { for (var section in note.sections .where((element) => element.content.trim().length > 0)) { int sectionLength = section.content.split("\n").length; - if ((rows + sectionLength) > 65) { + + if (((sectionRows.length == 0 && (rows + sectionLength) > 50)) || + ((sectionRows.length > 0) && (rows + sectionLength) > 58)) { sectionRows.add(sections); sections = []; rows = 0; @@ -148,7 +150,8 @@ class Exporter { ])); sections.add(pw.Row(children: [pw.Container(height: 5)])); sections.add(pw.Row(children: [ - pw.Text(section.content, style: pw.TextStyle(fontSize: 7)) + pw.Text(section.content, + style: pw.TextStyle(fontSize: 11 * PdfPageFormat.point)) ])); sections.add(pw.Row(children: [pw.Container(height: 10)])); From 9e505046515b8047855eaaa17149bf69bcff91ea Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 19 Sep 2021 12:16:24 +0200 Subject: [PATCH 078/146] Change app bar color --- lib/utils.dart | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/utils.dart b/lib/utils.dart index 4f5f825..93e97d2 100644 --- a/lib/utils.dart +++ b/lib/utils.dart @@ -60,7 +60,10 @@ showUndoSnackbar( ValueChanged onUndo, Function onClose}) { var snackbar = SnackBar( - content: Text(message), + content: Text( + message, + style: Theme.of(context).appBarTheme.textTheme.bodyText1, + ), duration: Duration(seconds: 3), action: SnackBarAction( label: "Undo", @@ -79,7 +82,6 @@ hideSnack(BuildContext context) { showSnack(var state, String message, {Duration duration = defaultDuration}) { var snackbar = SnackBar(content: Text(message), duration: duration); - state.showSnackBar(snackbar); } From fb60be03e9920a92fadd6424d9c135a6fc75148e Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 19 Sep 2021 12:16:41 +0200 Subject: [PATCH 079/146] Fix floating action button color --- lib/collections.dart | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/collections.dart b/lib/collections.dart index a3c6dab..dfe3518 100644 --- a/lib/collections.dart +++ b/lib/collections.dart @@ -337,8 +337,6 @@ class _CollectionEditorState extends State child: Scaffold( floatingActionButton: FloatingActionButton( onPressed: floatingActionButtonPressed, - foregroundColor: Colors.white, - backgroundColor: Theme.of(context).accentColor, child: IconButton( icon: Icon(Icons.add), onPressed: floatingActionButtonPressed, From d29f6a3995683a55ab4e30298bd9b26210c3a733 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 19 Sep 2021 12:17:05 +0200 Subject: [PATCH 080/146] Remove import --- lib/home.dart | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/home.dart b/lib/home.dart index a52e27e..62838af 100644 --- a/lib/home.dart +++ b/lib/home.dart @@ -11,7 +11,6 @@ import 'file_manager.dart'; import 'note_list.dart'; import 'storage.dart'; import 'package:flutter_flux/flutter_flux.dart'; -import 'dart:ui'; import 'note_editor.dart'; import 'model.dart'; //import 'recorder.dart'; From 413b78ae2bd35b9b0131a9478463becebdc5abee Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 19 Sep 2021 12:17:46 +0200 Subject: [PATCH 081/146] Settings init with default --- lib/main.dart | 6 +++++- lib/model.dart | 12 ++++++++++++ lib/note_editor.dart | 28 ++++++++++++++++++++-------- 3 files changed, 37 insertions(+), 9 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 692fd3a..266226e 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -47,7 +47,11 @@ class AppState extends State with StoreWatcherMixin { // initialize app with loaded settings LocalStorage().getSettings().then((s) { - updateSettings(s); + if (s != null) { + updateSettings(s); + } else { + updateSettings(Settings.defaults()); + } }); // _intentDataStreamSubscription = ReceiveSharingIntent.getMediaStream() diff --git a/lib/model.dart b/lib/model.dart index 62ecb8d..a78b8e0 100644 --- a/lib/model.dart +++ b/lib/model.dart @@ -414,6 +414,18 @@ class Settings { }; } + factory Settings.defaults() { + return Settings( + audioFormat: AudioFormat.WAV, + theme: SettingsTheme.dark, + isInitialStart: false, + sortBy: SortBy.created, + sortDirection: SortDirection.down, + name: null, + noteListType: NoteListType.double, + editorView: EditorView.tabs); + } + factory Settings.fromJson(Map json) { return Settings( theme: diff --git a/lib/note_editor.dart b/lib/note_editor.dart index 205eeb0..52a169a 100644 --- a/lib/note_editor.dart +++ b/lib/note_editor.dart @@ -5,6 +5,7 @@ import 'package:flutter_flux/flutter_flux.dart' show StoreWatcherMixin; import 'package:sound/dialogs/add_to_collection_dialog.dart'; import 'package:sound/dialogs/color_picker_dialog.dart'; import 'package:sound/dialogs/import_dialog.dart'; +import 'package:sound/dialogs/permissions_dialog.dart'; import 'package:sound/editor_views/additional_info.dart'; import 'package:sound/editor_views/audio.dart'; import 'package:sound/editor_views/section.dart'; @@ -33,12 +34,21 @@ class NoteEditor extends StatelessWidget { NoteEditor(this.note, {this.view}); + Future getCurrentSettings() async { + Settings settings = await LocalStorage().getSettings(); + if (settings == null) + return Settings.defaults(); + else + return settings; + } + @override Widget build(BuildContext context) { if (view != null) return NoteEditorContent(note, view); return FutureBuilder( builder: (BuildContext context, AsyncSnapshot snap) { + print("snap data: ${snap}, ${snap.hasData}"); if (snap.hasData) { EditorView v = (snap.data == null) ? EditorView.tabs : snap.data.editorView; @@ -47,7 +57,7 @@ class NoteEditor extends StatelessWidget { return CircularProgressIndicator(); } }, - future: LocalStorage().getSettings()); + future: getCurrentSettings()); } } @@ -115,12 +125,17 @@ class NoteEditorState extends State }, ); }); + + audioRecordingPermissionDenied.listen((_) { + showHasNoPermissionsDialog(context); + }); } @override void dispose() { WidgetsBinding.instance.removeObserver(this); recordingFinished.clearListeners(); + audioRecordingPermissionDenied.clearListeners(); //store.dispose(); //recorderStore.dispose(); super.dispose(); @@ -156,15 +171,12 @@ class NoteEditorState extends State }); } - _copyToClipboard(BuildContext context) { + _copyToClipboard(BuildContext context) async { String text = Exporter.getText(store.note); - ClipboardManager.copyToClipBoard(text).then((result) { - final snackBar = SnackBar( - content: Text('Songtext copied'), - ); - ScaffoldMessenger.of(context).showSnackBar(snackBar); - }); + var result = await ClipboardManager.copyToClipBoard(text); + FocusScope.of(context).requestFocus(new FocusNode()); + showSnack(_globalKey.currentState, "Songtext copied"); } _runPopupAction(String action) { From 82c79f70d12a5b476d0968b83a75223c255a5c90 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 19 Sep 2021 12:18:16 +0200 Subject: [PATCH 082/146] permissions denied editor --- lib/dialogs/add_to_collection_dialog.dart | 1 + lib/dialogs/permissions_dialog.dart | 20 ++++++++++++++++++++ lib/recorder_store.dart | 4 +++- 3 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 lib/dialogs/permissions_dialog.dart diff --git a/lib/dialogs/add_to_collection_dialog.dart b/lib/dialogs/add_to_collection_dialog.dart index 643e136..999ac48 100644 --- a/lib/dialogs/add_to_collection_dialog.dart +++ b/lib/dialogs/add_to_collection_dialog.dart @@ -37,6 +37,7 @@ _showAddToCollectionDialog( bool openCollection = true, bool syncCollection = true}) async { List collections = await LocalStorage().getCollections(); + print("found ${collections.length} collections"); showDialog( context: context, diff --git a/lib/dialogs/permissions_dialog.dart b/lib/dialogs/permissions_dialog.dart new file mode 100644 index 0000000..3b7aa92 --- /dev/null +++ b/lib/dialogs/permissions_dialog.dart @@ -0,0 +1,20 @@ +import 'package:flutter/material.dart'; + +showHasNoPermissionsDialog(BuildContext context) { + showDialog( + context: context, + builder: (context) { + return AlertDialog( + title: Text("Permission denied"), + content: Text( + "You have to allow using the microphone permissions in the settings of your phone!"), + actions: [ + new ElevatedButton( + child: new Text("OK"), + onPressed: () { + Navigator.of(context).pop(); + }, + ), + ]); + }); +} diff --git a/lib/recorder_store.dart b/lib/recorder_store.dart index 54bf679..bed0fc4 100644 --- a/lib/recorder_store.dart +++ b/lib/recorder_store.dart @@ -180,6 +180,7 @@ class RecorderBottomSheetStore extends Store { // Check permissions before starting bool hasPermissions = await init(path); + print("has permissions: $hasPermissions"); if (!hasPermissions) { @@ -294,7 +295,7 @@ class RecorderBottomSheetStore extends Store { _state = RecorderState.RECORDING; trigger(); } else { - //start(); + audioRecordingPermissionDenied(); } }); } @@ -385,6 +386,7 @@ Action resetRecorderState = Action(); Action setLoopRange = Action(); Action setAudioFormat = Action(); Action setMinimized = Action(); +Action audioRecordingPermissionDenied = Action(); StoreToken recorderBottomSheetStoreToken = StoreToken(RecorderBottomSheetStore()); From ecb4efbf6f97675113b2290cc999bd4b762dedee Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 19 Sep 2021 12:18:31 +0200 Subject: [PATCH 083/146] Change text color --- lib/note_viewer.dart | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/note_viewer.dart b/lib/note_viewer.dart index ac374c2..f2df0ff 100644 --- a/lib/note_viewer.dart +++ b/lib/note_viewer.dart @@ -414,7 +414,11 @@ class _NoteViewerState extends State child: Container( alignment: Alignment.centerRight, padding: EdgeInsets.only(right: 8, bottom: 8), - child: Text("${page + 1}/${widget.notes.length}")))), + child: Text("${page + 1}/${widget.notes.length}", + style: Theme.of(context) + .appBarTheme + .textTheme + .button)))), ), ), ); From cc8efb552e947281ef9cbe687e44cc8761bd3537 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 19 Sep 2021 12:18:58 +0200 Subject: [PATCH 084/146] Update App Icon --- .../src/prod/res/mipmap-hdpi/ic_launcher.png | Bin 3327 -> 4802 bytes .../src/prod/res/mipmap-mdpi/ic_launcher.png | Bin 2203 -> 3315 bytes .../src/prod/res/mipmap-xhdpi/ic_launcher.png | Bin 4577 -> 6117 bytes .../prod/res/mipmap-xxhdpi/ic_launcher.png | Bin 7256 -> 9041 bytes .../prod/res/mipmap-xxxhdpi/ic_launcher.png | Bin 9337 -> 11368 bytes .../AppIcon-prod-1024x1024@1x.png | Bin 77176 -> 80729 bytes .../AppIcon-prod-20x20@1x.png | Bin 637 -> 1370 bytes .../AppIcon-prod-20x20@2x.png | Bin 1603 -> 2700 bytes .../AppIcon-prod-20x20@3x.png | Bin 2851 -> 4091 bytes .../AppIcon-prod-29x29@1x.png | Bin 1148 -> 1998 bytes .../AppIcon-prod-29x29@2x.png | Bin 2814 -> 4001 bytes .../AppIcon-prod-29x29@3x.png | Bin 4245 -> 5798 bytes .../AppIcon-prod-40x40@1x.png | Bin 1603 -> 2700 bytes .../AppIcon-prod-40x40@2x.png | Bin 3696 -> 5191 bytes .../AppIcon-prod-40x40@3x.png | Bin 5816 -> 7651 bytes .../AppIcon-prod-60x60@2x.png | Bin 5816 -> 7651 bytes .../AppIcon-prod-60x60@3x.png | Bin 8894 -> 10770 bytes .../AppIcon-prod-76x76@1x.png | Bin 3647 -> 5098 bytes .../AppIcon-prod-76x76@2x.png | Bin 7775 -> 9513 bytes .../AppIcon-prod-83.5x83.5@2x.png | Bin 8149 -> 9780 bytes 20 files changed, 0 insertions(+), 0 deletions(-) diff --git a/android/app/src/prod/res/mipmap-hdpi/ic_launcher.png b/android/app/src/prod/res/mipmap-hdpi/ic_launcher.png index 6891f383a4ccfef8048e26d6430c444fd1fc2a85..357570293687409e0fd6bb9c64dd9f1444ead50f 100755 GIT binary patch literal 4802 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 c0;R}*0q_tKOc$gAu4!HCLeZ*7Tp|?}abIv@ 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 SXgUA@00{s|MNUMnLSTYC+DUW( diff --git a/android/app/src/prod/res/mipmap-xhdpi/ic_launcher.png b/android/app/src/prod/res/mipmap-xhdpi/ic_launcher.png index ea1ffe7c80db56a3a96134a13c27b82ca161f936..be240c3d24c72bf18acd2ed53800f5a5e72a1654 100755 GIT binary patch literal 6117 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 literal 4577 zcmV<75gzV|P)FyfR)>BP2>Dr3uqR zq7vQE-_ejoQ5|gdA~X~f@DsH0SL**cboI!XcKbp2x8xhuN9oul(R%ESD%rI94dLOsbfU}0#q-h7vo zFETJ*MVB(Jl=)hRNW-`q=4%}(#`Qr*?E+~Q{hB&p{(Nbezf3R29iXFDna@ktFkeL% zOus{hF|Kyx^U`+I&c?{^!~9T(W&Too!@}sZT_8%B&ja>%w7E2llTbc2@@dG?j{cOm z7BgQvkoLVqydv-=M}LjV?dj;LracSHwPjL{F10yV+liTfcYKpoFZHEs#LkNyeY)U& zfZTj$^uJi_Ooh5%>*&>v9vZGa-q9;eIXeC;GE+UAZCobpYhX(3OfVlT3^!TBqDEd{ zDt<)f+6Oc!ZoD1&TRPf3(1WAO;?oisCGw!!nxZMggX1kWWI!QLsU(x?En~8y5PoOP;@dMs7bt3 z%C(HOWVp8TbMYhE;=hi5;OJ|P&I|wBQG5raFt)a{(wGnEfEvdduud@^h!*sio-%aO z=f$rVh@A}+_dLbX)tPO0i};zN7+c$E!?li%5YIbn;c6SQm=AOY)I!A$n#z%xWghG3 zHR46r&W^Sh&-A^+^;{3^;BD*Qa8){)+Ru^3U{=v~zjvn1p zo~eC`G@^@{fGzN`!glb|w>vu9(Q^ySjse!8^Q6&sYB8^*0~X0lBa3OKv*%ypb@4v5 z8CfN;u7Q`y+-N(oo?jD}ppFH(9bgTlTBLkCyuiMWUf)t?3rFvf#=cOS#nw@R+4Aiy z?JO|~%EF6QZ>WX!?bM>pxARFyA8IM{5J%^PzcE%N-%j>|YwB1W%J;4TR_v&@(^l#G zC2a}EewpjVGad%+-tp`mB+YzAJ}-WNqepd=k72`^fDR}Xf9f&#hj^ucT`qZ%tV;t~sBed7pVCoB z8zZcBdXLm=J4>Vy7c~p6iXC0Fmr7)<+YYcJe@!H7xVEEWM@RnMl5mx@1!RWCUxyl5 zpf-RWcVKNCc&Mrwi=CvO$_8Xa>SF?91klHHDUWGn)sB2Cc3KTJ8<3fjneK&LtPwji zvB=bs6gw7iKxU2D@u+3KMXT7c7#fgSmBbFH38q-F1G0lDQ5_a{OQwH_m#^{U0d25m z2Vomc>_=hGdXAd_Ne9q|_K!wTA914FS|io5!=;WOUa10DTDnxMWF zJJ=g<%zQ4EJU*5=&{O5*`BRP5ju-oNFZr%Mw~JY0PImq^yz9evo*#nOy? z(ogo5@jxoeiH@#xbeMP-#vbCW?0v*DQsp(dMyUv08?c0rmqy!B6e%!60y0+SUliz( z(fy3b~)v-b(l z#+gTU-ZLcMxz_31DX60;ATtK@<7eUHK|EX#zQcqwTgs1NWLcmTd{CN=6kAJP2c&#E zrK6uZ;OX>Q(boa7p5LaPaSsb@DlG-(;Z{CYCe>7&a0J&$&^kEOe^j`}$lOmFYdsF8 zakM%Iqf9$Eyi z6t9iMY9b6LF!Mg~;surQo8ptR4h!`T0a_59kEW%Xidv|+w3z{K5FdG?9jK?o9Z2-u zvZwA}N&8l$6m;EC9(L}KDfR7K9BAW~>t{N;q2(Gu7X18g6R$36B)93hh- z#xILE;`E*&zMVE8LXMQlq_RT-Wx14lpkgPv<0$Tc#nJ?x$Mo&cfRBh*`EoF(Z-=bw z4~U;lCCGLucOcb)GsLj%fVE`OFEf^JhYaTzWt1P=r3|oEw=b+?3~eX1*KR_2P-ZQX za{9M(2U^f?TdwIE+Bx#=&HAvK0E8}< zj4JkLwP`zu1nht(h|lTKQAnq4EyH{}eUU6IUW`DDM09tZeQ0i5h0kMXI~G~Y2O5y6 zc^Dc~NhIr%Ko%=2l68SJE{_;i+W|G&POR#7iXDp~0U2%ZeL0dfmbSCld@t(2p#hn> z+LP6mu~veyjV#5i24w90t3m*M*7J5cU^}oDMFE-ErCi$JRVi<0Y$I#d12T5h)?!u2 z+nFujPU$+jFi@vET45PiyQ6Y-6g#~}Rtxk{l&pYE?AvLZYG?rm$z)I-#Flo=zGPbm zOv877Rzdj<9KA|>)a_g1ga7tju;RB$l#8K87PiE}Qr>~8G2I)e^T@K4OSz44AMp2f1bIIm~_eR9tD>0u?6?*Sxm}&IiJVLDGJ#dwM(FFB^`vp_3#|=47Z@JZDb~c6m2f$rIN4jr|Oup7cG==^Q7F! z(#jEC%M8^rUzyxyWbsn$vfNAj;ZLzXj*|~>C7F2mfo_vY=ErTf(DPF7mU?Zc_Xs%K z0lKwF{QqWFqXE{d;Xpc$XJj$7NeWY&g+;CwE9wR}{HM78}H|1xjPZ3LIdx7$Zy*w{^pXGz?gD0g-Ei?w`U;(96mEdKn8 zA)3_uk`9Q^N3)}rGvnB{6Z>Aq#{a~hkjqOSB7Xamj$%$@)B%AJ_6uoL*4v~JSL7PXWMbb=%?9SxC6YD9Z!74DG&+!4XTa(l zK%W(_W(IWAi!y(DmuXuEtO=ku81q*}l=*6WCe_fP%pb$Z8Y5kBrMZ-Q5FdEEg8BLY zg>GJ6UD5?tm66|h@?={;W_3vyoNMOyo;;}?V1M@o{ZjZti7|!EP1Lh(V|B7e3=H9rJV+pgZBS zPM(aJUvmgGB7;4)jM_~K%F?joq!BxMnhD0tDE}^GW@jV(#u1Tp9KU zfb^LnRU7p>@po1kWraWgot#I8f_=eFxD6^qX=<<$YEO%2Q8)iH)E_D zl-W?qWj>qy)Uk)yX3yL8(j#^(h6ZHDG_n+g85!-2eq6?g3wBc86jvbQXgi7$=JVVy zIC@w3&HzL_66P#A@OEfGW=tbXJAwMXE#B44AsQ@ZM782fv@x_Di;|HaGoN4hLzyVv z+&)G?2Ij#G7U9hbpNqUaPSPUdGV_^JOgQ39J7HJx3%}jVo5OrMi6arNkwyVgl!zT= zKJ_v3uawFyz9k*N%i4g99r-Mdhn74z07kMXrWXI7iuc{4o^o;tM~bnjdcE+u_7D%k zm2Z~GNY+XdI|kVsG*Sm&*aov7nADWic|mQUvH0{;zY_rH6hezEa-3!Y({-OQq#BgW9MA1dx0r_U?5#Lz?-B_+lejQ+z~sf z*pbHY?G4DpF6GiG2KszEsIO=`>rNJ3fibk5lw+;$eP%=KXgW`CKqloFBrs z2p6V)E5_C_SH7LG#f}~a)Vo8bG?E3ANcD(M9+WBh!i5wlN>olQSNyCGLRQNETWUzM#$fZVbTM7;Qb;L)OiPSH+8b;JQa>Ix)_vG+7K3B8!x9x%53YuF71LkOHn9qQM`R7VAYHPI} zW&VtjZyO8j6w$q1C73Twf~qpV<~U!=xYD1C0=fy><`3mCj^|qDv!-1k36YTr+F+UA zdJvZGj?o6g_*}-J@oX19Yupp)&sUXTp3Dqf*VMs#*cmv>+XVFuJ=zVl;@9G`#os{;@b` zJG=Kj&-Z?Eky=nCd>k4aBqSt!6=nH1z-#<}4=fDec~5bx1qlf`#2y0CQh`92+&o-u z?47KUko>YgB}gj6W$60MbV|6$WrZTV2DNgkBBEY7kVk1T&*D@|q{n@hO$r0`^=Z5D zyt=6~@OE>bpX=5mLX(zRUCkylDeiq{4W$rZpu65)`#G@o`b%XR`Pd;9rtq4mPGn2` zPz_GOTdyKU@C&LWvXOMsKG4U31xXaApV4*P&z^y?rXseSGBQlLdU!Kz>rA=p4fy@{ zy&Z3ob+2jG)!5!*_x%rJEfh$odv%8gcHw@fg#|iHo<2BI#)AI`%1B3d#PE%O91F4uu7M z*!0@p_w5JQ=Un@L*QlA-9?c!gGs8$o%n>T`vbuiACnneiWCKku@?>tv#OlV_>rPRH z{ZtCp(Nn&sIxHM^`U=}>SPsE#0$JEM_8p4f)kv=Gj4cu??c5?AbA#ozr?8^(1+;)j(RQNg*@NiW##7PRvaF7Y36v|&6bB5OCFk|(k!lWSDM<=1}=Y{OUbg{D9^+k3;YLfJHP7EHXyMyu|o;H<^Q5iJaJW-&0e_M^PdM zUmu^&@M_g+pS7;Q-x;Etbr|?Gy4sRZD70c$TTgFCej#}65JkJG#vC5zJ68dpG~>My z=9<(EEGaI&2@4HXsGLSZKIRRw8Z3e+t-`V@_37p5R*hMLe=rg15uTUnhv#?29BS2f zaR-@TgOnJ&S|||2YPt8b2M%invs1sA)_N1e2a9xy2uRTyas9D;ScujZfwM~-GTXLS zuq~V3^net}p4T$PEyGiby>u$Os)9_gdgC^;FO!OC{P#tB#jQ8e?UB;)JHmi$-*1wGU(EVlexN%0W&W%7GVE$&4l!RWXF4B{TeZ&#X} zzt@;`J+)6xYVFa4qCmp%{QU-E=@S;6ognv(A>$Jhr;|abm_E&}zjGrYY1Bdb-%Z!B z5x1`7Q4VePGo@*XiHW<4^75->&t>xFz|#4cw);4z<-GRw;o;@|Gf16#+|wiXJrtLc z04?ZW^vGJHW7^BX3lv*!bUJ(}C7Kx`OVi)fy$jH2QtRl2bO?ht->%fI%tOnBIw}jbL9a_jSCE^f0!zlPn zSKEq<5!kdxKdDJbJlrPpWfginib0w#E-pKN*4kH2R+_(GG&!#@bThl^pnv%AfwH%+ zuSDfh)bH=c!_(va^J({2%&%vS3HT=qBocTg;xnZhYMWFECY~r~^AH&s8B{#td$$Nt zk?asfXZCWqT5fVO+1dbO;OfEtRFPM`5f{fx->E_cBTGxmksUHKUteFbeG2=QR4=Hd zqgszdV?$TEimC>7@3e~FRxkG6_s+WtRM7agzrX+5SyJ(f(dTbMe-J{XZ0a0hdW351 z1uX<0#IaLkgiz|-NNj9v#d2T!x+rlp=LiVf)iHp&C6k;yWE1R|{s+|ISDF7zyz3oGfl!UzS`wq~wIC=3@up zMOBqT<>lx8@h3M=J2Nfh~LC?z$b@ht41=0=7g~Kc(%IPG$ z?6d*`0yu12$#rm!?6!fiit=MOA4%oG)p$gf7~2Hq@k4gX0#@)kjkpKmRYO))v!Qt> zs$PzSx9abD+X){7%R8x5&x#84YHZzVq#C2<8qz_b!C?e`wjv$vz1Sau>|Gu&dCJJj%0?s#in*-rOSr7I)MZms$~k+HWbX6n!F@_L+|b_8 zAa(hiEVHQ&LDFBjZ%MzhMwF*Og$KL1N6Vs}@n z_%d#3X^EVwsV(zWs7tBo`9=qqa+6HF(BiPqGO2{C>*=NCKxBx@il6Q-Rir!+gY_iVhhg}%KJkoi_{mz-vUMu83=JzBE@7PfELyW`tW_Z?2=oJ*aIAZCH`nss(aE-!tn|0S})#H3^ab#mfHKe0bQ*Tu6z z>#3bV3Ydg)d|b)DS=)}Iq@Y+=Ra0wc22(LK zu45XPdxv9&_kiJ5M#t_B9$XDOgrRUY15OkSH?${0qBB{h#9WdKCdP=&unVQ@UFhn_oPw~W|A}hEQjRY#Ts~rv^ zgvs)!?@AOd12=gX|Exq(l9sWO^XO(7dPAmx0dT@t`p_Oj5xy7+1uRo!um>Vy1%NfX zyKk$>8Lt6=?WCikvh%71h<5yVsh-hpx>yCSlEg;d;IuTomYw7VEF|6G#g3C7a}<;^ zN$GhV+X(;s=H_NK@bu^P`AV~^s~1>6;7qCs)6L|qn~CBAkBHM)xi^2$1rd^aQ{1QVv2_rx{er+5I2J1?X3=Z`xOLdjww zW8B6^`eRY}Q#Ga8NB3s{Tmxr+|Ni~XVUgyQ+s1Zzc{y=Y1M-!Y)@s^+Y*cz`m>8bV z85CmaXJcby3tdXywE@PSUMAo30XZH<+Lf109>0?G&Nn(QA|osTQX(|q-J|h01%*#;X!;Ql)Aw{<0B?~$rMK;uYfwJ7l%pWN?59gY}WrZ2!u%7H~99PoSb~w*<+=UoM-d48?4tr=&~+w#%$!gh-@+@`lh!^ZlX``qsYX2mX*95!dyP z%w9~=&;kN^PW#$9qALs&`N%h)=>womd3kw-cr|`V5?zn~R&od!r5;>2P!1wm!nW-` zFni_Cs}9G1Apkvyu(9oyhQ!)gCzKXo2bIA~XuuA$W%r9exH+S_na6K9U!d!&M`6lL zD&sL$8Z|m742g;FtB~Ie>b?n&8mb*lP+Ik22Ww4?Wr?{?wV!qxDPrHZ)pi216z!h|;IzjAg=41CFYj!_2!-1Bu$EijEe(U!%HnAAY2O$}zyh37@a0 zij+R#;Ns>H&+awYjAgzjvWu?XQTwS(VE_xvi3~-fX2g@lOibRi`6vP?C1i1NaoGn# zdwct*RH6uPsN6nV8$dpPUg3SI7Xt8UaN)zhkDC}$L&dyFshrcV%zflz`Mn*Ga6ymAdQN|jr+?*aboQGGfrfcwR z2|ya^*l3|sa~sOZKf8-Zo1B);cW29Wa90`~Z9TY%K2L1NTt&G&-d(-?-QvFej8iSx z^Kg4XD^u<=k@s>3gjU5C2h3-VfMq`d69Yq3*cg+Y0FC7@gH6Mu1we`3hv{$4K3%2Y zQu2OeCpe!NAMb4T*in_n`;d68n*T76aS{XHNC}lJ{)N-Z)sU13|PBg_-MBRQwiI#F); z_ktT)2u0R*sDEH4yGLA2N=mBh3P3v&dYAKu+S=Nq`|DFP0iWZ=pm_PX8397VI5iOZ zjVDw2X9XC>a9SaaOE9=Z)y$ZUm6g?Uzpc}LhHZK~bGmMFa`NMouQ95Lnw0XaY*TzD zlTsnV1K;oqbx>hZ(MuXJ7cglK1yj|+mA~Z0cgbPWp)**Vwmu`9I$NPW5^gJ4$tvzj6LxIbBNbxCWhtiwHLrYngb*FXwb3m*W>MJNiUaMV-w_woXB zn{*z0g-T%xd`R|oGJ9t5KO&p%>$-WbeR+4@f`=Gwh!eXxM`tlYyGWv*-(~#%v(;>7 zm#2UgT~eDx{T-CZ5A0QU47HHme1+Z!<rA@MaW6OorDWn2c@K>q;)(``nQp>>;1nI&Ud@F zqRz|vP_}|Nj1bx0cfUz-6z*R@S zaQ+6fv%^|fPuX6eAqI=0qoTO_e2fm2cz(sm)OH%;0q`aQ?Wb%2JhD!0Vj>>BrRrWe z!q*LTSy{- zpWnm$&kw$z1_t{3Z8lU6;d92@4T6AG#d=2HBj> zUhlv_-o@qREGZVf3Hq81Z*F0omO7(YwhqQr2P+ud5nw+I$k{!>f(9n!x{M)oTAfCTwq;X+uPMX_W2Kmv?b`ro2u%_7HK?b5YH>>)@OrP`)6YCHW1 zMmzGw-2!W_pq0c#dd+}=J3HiKV1lMf3W@??&l*M8nWIPF$533RM8ABCpGjO6yR%o` zm>52@*jKRBQ7e&5U1fTn{>4T}=ZIBP0|-O1V{g)o>f*K1JV+#D)*UoTxx~4H4&OlK z6yd46kF4n7p!lNK*gVL%?98|-Jec7uS|+|E9x>S!hH4B9qgY;NTM95{NZ6$Dzj5xP zMzr7;B`vBnn*5GoZqtM#g8g0Z-z4Zvi z+gWNoZEf?TA6gP-X1^~0necn6(ebSY%=Y5F56hJQ6O*R&h3zsSfPZ5)6S?#;S*>H4 z&t`xt-L258l(0B@tEIIufnD4Ks3aCPXm&a+4NZW_Ll+Q}gaw1?`v$6IO-)VXsD*5j zGYwJHG-{L4G7&IsTHrWMgR5g>W7Vs5mf@#>%x8Sw3}>`6|4ktXn|6C4W~+YESuPwH zCGlP{e{pfK-cOKld#G4OKpyGO69q91*4EZ$*o>bhL zG--JL-p&E-sO);a+Gxl@SggUAUczht`vmx6)SjsNxm*VZVn;K;{VzN_{(&d~#s;RI zF>T%*j6Ss`8iiah&CbSV^SoGR$=B?-0F@@ko=>fShZm^=bClLm1wdy!jFDY4S9$=j zdl$g+j^pCsR0wAeOjyp8Q+JJ8xW6{)o=zCVX8`+c0Q#Q8Jdq7I&;Z$^;}J*bBdn_{ z&^s$XB3IIF<5$sxc=j27N0j+tl`)tQ#>ArJ<<;;EOkHGg&7rZP$YrcN{Hn~jK{%bq zzct|M&;=06vzxcKBu?ZdU$+@z-I+7d1yE@z zOcQROBh_zS+9Hq)HxEF~PP02UU{s2{1cfvxUejHsQQZab< zPUTT1EA>r!#*F?2E1y3)(eSRga=|u`CrOH9dVub3Zmao4ZS7K8B2|l+FIy_&%^D`VP06jY485BiG#Ae0TLp_2@mx1WU@% zyKjCB9IbQqCUk4MV(7qEqW1h2+LYz+1bE%u-IH${llEaWiLkOVWiju=+0RezW_t0$0_>8-KoJtE9o5;6HXBZ6 z$`I^^E*dJ_bajVuYJ7# ztiGH6rA3>$rd&rA_IVN=fjwU#WrXB7=y;A8vIa=#wcR8+hh(;u&kc}Zreb&9-`-|) z$ks-2j2!2MHQy!s4eM0P6- z0}qMEvrK(i1!zM%k?T`CU=#E_ju-3l-stFj4PlqfJno(`c>%^i(HjR+2<9j0454vz zFaNWxJ~hJzyY9VKpC0jcw?7=vrNcS>?v<7MG;z<}2X1ixMD1Lm)I4$IYt8IeXD3%j z3*^LuitGh1WDZ|R-XfATR*{~l-o4}BzP4EWsXU^K3FJBu@P=55XL=zUb%HRl&!2D~FLUFh?#kZxMi4Vv4mR|w*in?h#hIA$vGcg% z^I3s_A!Ug@*RQ9F;McHzn_pb^TSmLk9f)KeNk_$skvE3(6%XjKxHk-QEaty(6BIQ3S7Ri3)ygP1I ziVVRJqB7oH5JLE~B(u;;2q%#Dvrn2a2^r+D5_Z?1-QglYx+dm6pmU;Q#r%LFOLuw# zC5GTNHj4SH?2s5XmE{yLTDv;8u)tai?+&PHCNUiIA~Li|T}&UR)mlW4zCIURm%PFm?tgJj2f=vn%a?Ssl3*>c)#uqWE z>4^q5!P;rUT=#=dwYAOMV%IF{Sbo*zBiWJ{ogJC zXYP&Xlat0{l*&j-T7Ug`{d>aK+uNCAZj%Ej!k)QorMlv(olBfuRaJ-0H_w2rs9`#F z<2jnAQD>t_q#7R_%s)1%h#&Z3lfhsDx>x)g0H9)We8UZN8p{-^C~mALsjw25`DnrX9qI1&RyzjA z`r^$?)mVKzFyu8#4y^x*jFM7^%KjK2?H~LfUEsBE>2Xl7|GriRwfC22{&H(mQf5HO zvl}6p^bZL59B#g{8!Vh-z@dv|7I09)B_`G!3ZTGa77i({_gb5GI}tIlyOE-KO;B)f za1Ah8&dibe0OPI}TYkF#_ecsk+RMnu07Y7@$S*LFr@KVd3smyYRD|+%{O#de^cHYm z&H?Vc6G}#5Zd&uXdm+4xG3Hy27=x-x4P<{GL!DBpOk(9>6)JLaZ_=FH^14RW5Cid& zUQ|~ggZK!Qk@+Gu$OQ&Jur;Z-O5i1d=J@9{62je1i{hjN9m09$DF$co7Ve~t$2xE6 zR^*~_lY{h0aZk2DWZOWdlYPG(CylX(KuikLcS?TSoyhx*dN<(S`h50&6O{b58qp0o zBe{O|kH(rceKE1ZC8AAOT`EfZ$#w^XkcVSSob~sF;$F){b~bn&OmjTl0BmU2AFA?S zr!m~EfBwFVZHPs5B@*mT5?F_wX=KjLg1z&Es#Z;eR`CQ>8-Enh5*$e@mF1vv0n2g> zhMSowh|L1dpk745>hOPAMv%2t3bx7}mguLf*WQN+VZfYL0!@#r#hMq|1SkB&YhNi^wI0jheV0S6e+--ZNzBYCS$a+OOSO?aQIw zSOVEu;OS%mWCCDiYo?@Js$_MXX@?iE^HFUNP;heiXN4XYF)_L?zb>PcB0vk4dL7U3Xg<6szs+u2e+zs+X5a2N5D`mg_LQmzhA4_X@0#lsi-D=<*Ink1eV!2sIzF1#9#%*HS& zCJX38SC;6j2Ltit37QErIom_R>gwt^)2K?KX-6KWO`s)Sc;4R5j<;fKs&TH$292uO zhm%IN>?qC?_4GrKe>zY)2xp^$+P=k+s*cYI=CVsjWG3IJbFyy&<&i7Zf@sdgCa9zox&uYqoWwHH8q#qlpa@bg^=yg!%#F=QCQ8U24d z2>_qSr_E5xD9%QKxaED|*KE+1e^^Hw$;iSyUjLvtjqer_s)-|u?8s1Q2* zr?~dr?eMz>Gqwla=kp4Elh){55iHW3zZxk4lx>LcAF3Xc>pPa5Xz>_o*UOI zk~8^dRYbuf5L8bCwTIQ#0T~~*pDR#fW*wAHO)dgmo!ZfSb$y9pG&0IwVUC8LetL!k za0(?XXM`Ugq9>-gc0izuCH2cSXK(`ShR@3qu>9@h@IHLy5+%2?lJM{W*Nfe;6=@*j zJnATCASKla`n?-ucS!?(Hx^@p(foB$){hio(}ZybRtIeCujK^gf@0~)15ojma)IYD z{EyV8J3P2^Zk|F}ejH93D|IjtQvO7}#{^F$8Xfa{K`2=V?f+SM=Vh4-4i*&2xC~#z z=#d!AWI-wC_KyIcE-u^f{7RMq`{SA2(v}B!uy?l+%~=)fBYgvp&RGMP@@p;xk>T{o zu@PMeC1IQ;;gkB+L4S{Vv~*Pyq99zxVNq~2zqZNF!M8dA3{EGC2qRm@%Q52dpN&bP zP-W=0;CP5HWb?lq?y4n_l9SnKJtW}q_p_7B7jc~T8t{9H--y?pa3D_StqE74Z<^g^ z)uG@V(W&N6;uK~E3hi8WXTxNZ0a*ld`9;Q0+Cs8t%+wb48x{zi67W|UBozgye2v`u G;Qs*uynGk{ literal 7256 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 diff --git a/ios/Runner/Assets.xcassets/AppIcon-prod.appiconset/AppIcon-prod-1024x1024@1x.png b/ios/Runner/Assets.xcassets/AppIcon-prod.appiconset/AppIcon-prod-1024x1024@1x.png index 74c50c2778f49b53517ceb54c0ce99acd30aa85c..32c2298a245f9c09647864a83475645ce4434c6d 100644 GIT binary patch literal 80729 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 G@&5qyFr$G0 diff --git a/ios/Runner/Assets.xcassets/AppIcon-prod.appiconset/AppIcon-prod-20x20@1x.png b/ios/Runner/Assets.xcassets/AppIcon-prod.appiconset/AppIcon-prod-20x20@1x.png index 52a4372067275b27496819c6bde5877309de6265..9108dbce684881fcab9f0628f27584f4b94cc216 100644 GIT binary patch delta 1352 zcmV-O1-JVB1lkIaBYy#eX+uL$Nkc;*aB^>EX>4Tx0C=2zkv&MmKpe$iQ>7{uK{JSS z$WWcEh>AFB6^c+H)C#RSn2&xzlZGV4#ZhoAIQX$xb#QUk)xlK|1V2FB+?*6$q{ROv zg%&X$9QWhhy~o`dl1nC62?{wDP=N-?^@IJv?{2O9u1fPK`z2&deftgRzYb`B$1oUkK7uPLK-UBXofWaq2G9_0E(&X}a z;QfrgDGLnT0zGS9Z_Rz2J^*RzDtQAO90DT+%3k+*cYjxVZ~vZY_V)vt_j0$q+SAGa z00WUpL_t(|0i9G!NLxV^eR;`?F;Sx?#7b*KQbV*gnu;jcie0E63Ze@^Ton|=tsuH` z(X9&?e!wo;jYS1r8Qcg()G7$3BE?_SrrJdO zn1ADg$$w;e&-};O-``&o1Yw-!vbg=%3kwSuGcz-0i9`}>XlU3kDJi+y*x1O4#bS)# z?^oDtw&xV19|rwNT3cIpEEY>~AP``l0y638>5;OsGN)83<&Tbz(gy|xYA|O92M3o@ zFepanL@<_Rh3xF?Ahyy(j7NZxNQ8B}-3nq*Sbtb}4hh^m&r7i{bGck9I)l_$#2Neq zEG0KLH;Q*C`GV}0feuqsrj|MysYj;2$0y{susSbR%{xEiHCp)YR1Epfm9?l7?a!nuLIGOFcR|YQ|;z-rk;0uh(BM zEq^WLQ)&cKQBmPMJUq;7u(z0+K!G6kI`uK zB7G?tpwVc;i;IhDJocuyw-+jGJxfhZ<%xJgK$S{$S5Q!JJwHER+}_^)6AlKV(I}M& znLueu0M7OG^{x4Qz7(BK=S5{Cclq}AR(}B(x#s5PgWTNQ;O_3O4%;!&-J+r*M^8`B zkK^NGT`(BrC+m^SRS0a zXNF5`V`HOTtyV{-rlwv&(+hOaC1iO?F)+3zWk?#K*2sW+-9#p6lIYOT(7Vpg&VQd7 z85zFW*;ylHK@9-LlB9qzMX0K(x)3!ZXK8+VdaBlHwIQq3YN)HL+bb_GcZ)HY5>1*i z%HkG{{#(>cOqmR-t*v#0!(lEfD=Ul#6k-hP5T;y0K#t>t%*@O%UgvQzN-ZXr%VSQb zlOtUbk6|5wc@b(;O4sZ4O5)Rg1b^soIMj19LQoq>daC}PHLw=3yIXr@4`ozd4PFE7u%va&+oLI%aGfCPR#_I+Yv z!i;YDh^t={0+PE(izjW)&(BqOIrZx5DvFfTkSb5{wzjsz&CSi6@$qpp+Ck5Xv!9Z> zd~$N4L6@9SYE(9*rKLXTcwf*DWyGS-^{cC^`mwRGFIazOo{YcD>HLWY#*uCS0000< KMNUMnLSTYWWs9}| delta 613 zcmV-r0-F8W3jG9-BYy%!Nkl33`C`Br1ENsS6zsLJM&Y>J1eCFM` z=ic-Cyja2$gLY5{BC<^qZe2|F0raY#n97989)a5+55~YexPQz`$GFZr<$8Ar+y^Bf zs~cNHpA9eta-bS?bN>N23Z|WB$|m>;lB!H)u~QcFPzC?L18MFb2B+LP??gEj?;5gj zOBhP23rjDIgC-ieL{GL{$O(FFhIW5a;4cp?f=*f#diI2}XH=4NPGl)dnk;q)bfX4z zfTy4yEP!U`&3^=_1<%1vDjVQCx929`YGoaK23J4>*B`+ldc6kDgS(&)G%`BNXUf_p z;)UPf6Ri(}A1-fZSVMg%p^cU$R5_9&ZF8IoM!_n$NLj>OzXbi@0ysihsT|NYiwx7e zezi{l((-?CinfjB=bjW=Lug%#lmWNEd+-)qr>x(di+`+beEF>aR#`Qq6VwF;!3t<) z6y9jka_HMeD>ljhDHqCF@Ex>BnDIF&%=8A|S<9QflPtspy)>_5?vJw&zraZ+Ta$m< z#=3ly-e#yQ!%ON(IWK7n{(vu_%%vzHu5HAHeGc53|f*FY;}(O^a5D(-NlP1UTbzIwE1@I(V;F z3LTQL(aTbqejHx76r{PfX^H9SHOfqxwODQk#W}zg@$wf(00000NkvXXu0mjfUH%$< diff --git a/ios/Runner/Assets.xcassets/AppIcon-prod.appiconset/AppIcon-prod-20x20@2x.png b/ios/Runner/Assets.xcassets/AppIcon-prod.appiconset/AppIcon-prod-20x20@2x.png index 30e3c064a76b37155e3f4e2b95dd42ece1ca20ca..7b921f4e22731fc189bfb8d7ee855c3ebc7bee0c 100644 GIT binary patch delta 2692 zcmV-~3VZd#42%_!BYy#eX+uL$Nkc;*aB^>EX>4Tx0C=2zkv&MmKpe$iQ>7{uK{JSS z$WWcEh>AFB6^c+H)C#RSn2&xzlZGV4#ZhoAIQX$xb#QUk)xlK|1V2FB+?*6$q{ROv zg%&X$9QWhhy~o`dl1nC62?{wDP=N-?^@IJv?{2O9u1fPK`z2&deftgRzYb`B$1oUkK7uPLK-UBXofWaq2G9_0E(&X}a z;QfrgDGLnT0zGS9Z_Rz2J^*RzDtQAO90DT+%3k+*cYjxVZ~vZY_V)vt_j0$q+SAGa z00_fLL_t(|0kv2MOjKJMo&pRACM1`sf|p-IsPxK^<1E{Z~wHM@ECHP)yxwzWiJ ziQ?K9Q4tl1C6=rUii;xRdkj3~A&62%pGtdDhR)3F_s`B{FT>w!V>bLPw`W;*aK!XprgL`vFn&x#{Wh701D~PojZ3@=&e*Lh27oVCTQK7#d_Me%EV%^0*@NJ zy}kXW`uh4lV7LJGv~AnAeSh}s+267Iyu7?BAAdi7e4RGIiA}Pzv+b{3x#E?co<8{X z>(}Q>OG~XMPoBI4+7a`u&9nsz7UZ5fbt*%bTqi&Ruy*a*Ut(fnO5qH4p-_mmWj;PWA3{SztBnRor^JT#4<0=5Wcn;DELx(YqsvN4N)EZYy8d;> zj2RW^>(Ne8QIY+lM~~dJ*U}CMwhRYVj(-_5rmyqq14xT4S+b;v9{Oe+8~xo|w{D%v zjEjwp^?oh`IuGJpR3a%i-Sy$)AEaLJ4YNNxM}?cbj{b0$>tNztvmdi84J_3PLD zB@#&+d`_91oa_xBG<9}%ZgF>aU)s{rVy(4|Q1ey^`Zi%?WMm%pFg{4AZQQsqcYoo+ zg(bDMwF*m1OQn^Sm3YXIAzz+9e|{FeBmh9sjT<*^S5;M61P2Erg$6i+>Q<|BXDLg$r+xal?0vs@400C614&q+9j%7?oPQzUcmdKv#l^)|GMUUCpQ_ojXIH`05&#lHYi*E| z{|&~wm-#eQqQW=@=DY`S_X7pB4H`74qq4Hn3Q_LNK9sMoZ#`MWXn>@-%*@O|6a@4Q z-;-aubjce89k_b+>MW4B?ELxjK>#SyOi@z_@f@=T_)?BQ8=se#=eA+PhJQ@>=_kzh zXYVt8`t%ZTVZPA-$*chKiXQqV^I&nmS+i!nL=^i?nl!2M$&)8~^ECkn_2iyBc`^iG zE9v17+FzY5@@MT?4{ z{#x=YM@Pp-H#avE?WhtG64H>v?cChl z+Q55hm}5$s!+~{X5xoFgTU$+PYHB0^Sr1>7-o1O*f77N-Y2Z6YWPcBm*Sy@@%QIKGcEh~@&Aa-61yflM|bBDi4Cr+IB7FEh8L}Ja9 zDO0MFl9Hsz$4=T>V;X4>nn^`;{)&9=G-1Mok1%5Zz&U9Gsb?MzQVciAGa4W{@0vAh z^4G0f_mb&bzI^#x0)IYk+_+jp3Q<%kb-Q-$`k7>u&iMGzXn-0L<|AmmRWj4)x}Z;H zG(f%#@xRI*1P;+``qeZ8n((=H?V7JMQIN`^1%I*Tlzpg#k)dMg##q(; z`}dsz%ID_Io6@$nHnXs>utF3QztQ-WD_8!6Dn`Pdhid#cJ`B77p%o=@9hsCXLr@;3 ze)yy^JUqM#&%CEkpGs%WoLK;%Nw^XOfj6rGUU~1{JvV4ygxg!sJbF-9@)ixeG;{g# z<&mdPpZ3v~X@AV!lXp!`O$DH&6j0J#M7Ra+)TI=`iHV8oLzS18TR?kZAZL+wzD6=A zK6>EUy(Aa)0m<>%+yAn&>WYz;WE_5J(z2~0q61&h%D zX(8NKy$~e5G^i_BprM>YhYkfdG&J-_72Syx81UxJ8-GVKFYYiQC@eg==24Jr*|O!O zKu6;PsH7l4SubaR@dZmjKtLTprNRdtaWyRq2?_ax;^ND)Wy=Zx)E4Dhwe~#1iwxED z)ifiON}K30g6A4h;i&JpsCZhSxjd4g4y;3ejn<(Ax=d~`Kn? #@+t*`Xw1&9*g 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 delta 2845 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 diff --git a/ios/Runner/Assets.xcassets/AppIcon-prod.appiconset/AppIcon-prod-29x29@1x.png b/ios/Runner/Assets.xcassets/AppIcon-prod.appiconset/AppIcon-prod-29x29@1x.png index cdebe622465660d76060324b3444d3bea62228fa..2361095f78608c35f4880acd319747ab9a08f616 100644 GIT binary patch delta 1985 zcmV;y2R``x2+j|XBYy#eX+uL$Nkc;*aB^>EX>4Tx0C=2zkv&MmKpe$iQ>7{uK{JSS z$WWcEh>AFB6^c+H)C#RSn2&xzlZGV4#ZhoAIQX$xb#QUk)xlK|1V2FB+?*6$q{ROv zg%&X$9QWhhy~o`dl1nC62?{wDP=N-?^@IJv?{2O9u1fPK`z2&deftgRzYb`B$1oUkK7uPLK-UBXofWaq2G9_0E(&X}a z;QfrgDGLnT0zGS9Z_Rz2J^*RzDtQAO90DT+%3k+*cYjxVZ~vZY_V)vt_j0$q+SAGa z00sp~L_t(|0j*YPOjK7Co)x4DI#LiAFu@`-h87f&MIi_RqHL0|m^8SAqNp(jml!~e zCMFvFWeh(wCJ2!w2(fBXYC)?Y+aQGwr63MVU?@Z+Y$K@5yy zo_oHtpMNV6{Bs52NfZ3fODGhU8;!;n?7zfpKk(|+tBUaO@IHoNL|_z(#bN`y37QZz z5tl|h27^H)kx0yGV$k$WO-=HwtgH}_7X=k~dU}r4*48>be*D-Q8XEBku3fwK)AsG# z-wzE9tt>4qRrL4w+vVlu{km`8zQobdQ5nm}1%IViL_|baP*Bi&bBuq1l7%NuoKPP< zdbFLTH8(fg@7}#TX>xMX3j0Zi6 zoqzuR{$sqLh!+DZ)%*AF?rkwyj&R;7S@T_zh+%Z?$qn`^A@t8 zM6%bH9@#9A+@gyW9Xn%r( zgU5M6p`qd2xpQii%^RsyD$38#-`3sTtwYRa)oOJSVzpo)VS`6-|Neb%)b6Td$Bsp- zRH`!YFz}23Jkpw)8vc?Y?Qh(;;g2TZtxzaNC>t+bx>R%f_U!;WJG;+Uu3QP{mc{DT zt97vM?cTk6``X*v9qQ}rWl%T{ihoH_YF)_m5nfPQsKGzr&VF>8l_;GQ2>uLLs~|{x z=gyrUSx{0C+5HKEzlW7?0H&f0hk`$2kHOwdS67#_xqOR>R8>{Ap|P=19v>gyfmYXn z_9uJz@S!(c&#-)^RwqO#YBq1)Jc6>)-o1O*pDd&h5s#mrpB5!HyBtu_p?^b%+7BN- z+(G|v+YrStIyzdrSe8Per$pPjb?Xam<`NC{zL6J{4*l1%Sc=9S1dD>2rplHF4<2}# zdg;6jcAIGA&f?hbY$Nm*H$65roq2-MEZ%t&%_a)Mc2l+3%((9jROptR7`+cGjT zI?Z}1X)c8|dMhg{COJ7dj(_?pV%|yMNIWh2v!t%Bu9PMX#h-fbt5>f!@Pbl;+`4sZ z3#N>xIh_=MFabu|Q>9Wlf@l29nKMn*)z$0U+S=@qy;0O$D0Ary@}M^`Fpz)B&@CV? zF0RMN$7g|=N`Kh*_NTN0GqS5Z-+1jt588hUo@*wI4(=g*(7zjyDRAFil!ynnZGyA%{{q&Ewgot+(g z{rdF*d}fd>OM;RhB*!4;=M-siexO1?#xdX0Z;Tt!{Ef>2W8b?eq?Z~>bzb7_VpK#QPo zt2^pz#LdlZK{|89&<$6XY1FSAGjf{cWyc%h=m2*+3=a?61F#mfA4nfdfVBPw2BfEv T?yD&k00000NkvXXu0mjf9~He; delta 1128 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 Hu0mjf3xlVx delta 2807 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 literal 4245 zcmV;G5Nhv1~3rBKo$`ZP!|Q44bT2w_t`nOZ}&|1%-wyv>Zv-l_uV@^edeE@(eR!O}Y(Xp$gZpC)V zy|3fV#6QU?S{%l!3YtlQJ0%UU9CU|_U*NM_1l%Z0G84wufXkhq4r5n{zp14(9k@;I z9HBxs3jeMSW8)ihsd#WxWUqNen14*?+7(+XAY(QT0`>uRqae@v2y7c!x$hLS`B`xL z0=u2#M~Yu{x{0j0dxkjIuN+^|A)p0zTgN*(K0A_SiQ~tI`QT|YN6k$UY4junI123V z9sjyxtd)CtkbMm)xbw{SfH|ula!A;5A*P59hGmrDa|ZNLdyP$H<^yp*i2Iwx?BthoiS z=qntL2V{Kb4)wg2SB{;vz)C`ny1VwF*foUr6R(38C60fV z<1a{aGc@#v-n*k>-XXviIS4H@9p+!v2Chz`n^$h*W2HSd@x7W%5Ej6f!{=8^8d&JH zGXB`}lyIS#Zn=n5OxC4Mx#Df4;QYq%`BD!o^0$T@;~)%oF9+^9Qs$u%4}PJH+O^O> z%;#7h++|kXNseD$FvldR&HYW0?hP91Os?D*SnSX?bM2Snt$~~=rh;A=KEGeQ^DrIG zz0@4{KJhj#H-Js=LqUd1f((7Fn?7`flyAHWEW}eX>s-Xb#;Tyi(0*z-p0PZR`snKB zB{FJPe%J9%j(2hV6KPyxWI4m}uHwz0?~8Xqp^rKKxa4o(0%>f~k_BNYjukK#RZyy< zZMbtJRBFK;66i({8;Q5Trs%4`DFJ^g{%MHKpPb>Z5k1Ww^sx%m7BrlX*&nW*NH+Ocy5?7FmL zp&`Js5Icbt8I9%U;+iD_c81>~nk!(3ItY3Wk%W$oY04b9u7G7+tO`m=Jw_Wgtd(1V z&1Mh^s1sO7Lyon937hl6Lwk&j$2(7xCX&BzIQGXf9*-rb_B0uHE>fg7MS|R_!T|Vt zj;{-UKg#izj?Xk>71)Ob?gIAmAg|7A%c_bpAAKV}HcNYs_zQ^%TlE;nJBzn%0p+~# z9j2CUUf8eC>>)!;MBa82pMU$2crXD6cNvKb76IkVBAPBPGOY&**p};~!(x`8EMVObz{Er3WVh5pS z(_Ik8wuT%bYZc@!3;{Ni@kb{WrbG?ATRgZN|0KtsHoqejIx}SzOiP}SO`~g84#vGp zJh*&M8NeqK^I1}03EC`|dSDj?d6I>AN^vDj&fG$W?veOj^J_Om-}Cn`#OK3K7N3={)?B#&~Xtup7s@<`QEM71#EieU^amEgI*GF;y0cRb^#k#GUXz?l!rwVU9#(a# z>Lw^S*3cDo65T6CqXE^>&_zv^wdE)gjR9j1N zf#fZY%fftYpl65gE)9Q^uhZBH#0^26VdvghFt1f%BQ|ghZlC(tivp(#Hdu-KWX6$M zJvkEa3>g-c!;U>5bIdJfJ|%K_lXS%acFlsY;4;BN=~o|{0+!whbZb`%XlNyj0?Q+Q zZozz(h5%~=^hs;Rh8$HDFi8!t*pB;1vrGR@yxsa7Nna=zbF_G!r*qpf{Tg6d1nmAe z2M1*4gI+9NCtI@BoqF9?4WUX-$(+wFrmUH$I#P92n^lk^fFczhn=|OoTchuo92*l5 zat#}O2-&INxhXLpJ3dLqSRIrQK%XT|yu!}c2`r?sTvY{qQXC(2ytg!Wox~og8a9N3 z#Dj@_OKA}KGQ6g5N@D`G+0Z$%o8}jT+%&;Z;KwG(>VLaOx_6m0`iza`kWv8?lnZq8FLv&d@L8P-&V5Aq zT$Dj5prWkFl+<@7LN%L!&HJy5K=;j=@k4;M*_z_&d#w(sr4236Jp@?mAn5oa`@1F} zV}16%z}oC`Uts%ex@r~lv14s*ZWWb+tA4Z6x~%A4UvhQT*_sk?x$AM^+*|-Vq+nwb z4nj@8$ZXA67r0iyTAIuB_Yh!<9E1$b3u9;WL?r@hsZWXswpb6%3TZvBzVAxFMyA9+ zWpk#8K+!>A9EE)f?4odNets%#nN*H3Kn-mJrmuT{POUv)ui*F9$ zM(<$0CwF#D_)H1wF_rT&{@Tu?n#xdJ?XwZR6u4SZQu;_C@P6U5_ToZX7*|TnXG4bS z)M)53rY*!b2$IU#O-7%bzlqOqSYU9;@zl0SoXg6s^|iznV%Ik(x0c*$EO&Ob$KdMb zRimp;3cM~H1Y{#s!z$fhMmJi*eQJ-sO8ly`gxh_DjMI?bwp1b|0&=vt8?bfkn9OqaU9)Mr)?M$;5Eb}Z?YoePhz zB^m)C>7YkyH3V6%Uo^+4|T(q>=XSF*hO12Z|3mSxWVbWV_aF2(6~MT2;Z? zv=lT>%nH(1zfk7@xGHzo-q2S*o~Yc0-wCXk!D>E~l8qJ6J-MyaZ32rU0aI!Oc`oia zSIMS}4Zc&D*X}E0Ij@MYG~$52Qc>T9M#XB|;_W+O2r0I`XDc)J2k+f2B=uHHma_gt-^1cw~QYOteTh*PgD_R zeQUt1fNvFFyU-PXi0^*M#i3s*qQgmujemWd>1m6B)!#_XV?zONqdBGRIx( z9}b+NNd~%k9l#0Ue6dY?taufmiB@&RsapT2tcP9eaiF`lIb&_aV^>Pv{87)Yvl6C- ziXDUuEs~~-G#f16P%{XVunL9%yD-c*+YFNe_kT5mP}8X&lPzFe^K`}F+UV9?_tMT4 zu(eOAP1}#`D;C^IzKydMSb*u9{+?t!wiZ|`_t=IVcdf6@KzEL8r_hE3Y-iuI{-}Dc zPoNtU=wLIx?c!F3<4+5J^FBuMUl{vW$tbW77oV2dxaEA->$5T=1FtPSF8s}FVo4Qk zni*T-wQX-cTVS)b%-XeX1KqW%;5E_?Kuo-=25>3RJ1We*r}&y)Vz;-1;|>-7Uf#Y$ zKL(Bmppm%Tb-=kSaXtmMEsi{qu66QNscxPWaeiuLc~Ul!=BDzQ)k_+OP8+&1G5$&E z#04of?cNsAqrpU1qpBT3h_)ZNr0$E@#r?u(Qc9l>pNqQI)qASV9qHK5NL_Jp-1rBP z`{Koz^ic5PVIDzhYvY9C5C;Lmojp>@_Xbw{q2V*Yk_90{QS@#J?OLy;N!YP=#St^0 zsg8az^x~e<=w&-+UvtY+4X~$%c@1jxsN5wE0v(=9WdN`ub>PO0)q3X%RBv5z z9(~6`il~1eh5khG-Q`rz(3D3*U~RqH?LjU8wFMttz+%m4rF?H-nX?pJ``#_cK2qn& z_$vY0h!qLIsl*}H0vAshQ{P<5yTdWla;ftiT_ocH`YxIju(SWCP#3t?LCDcTEx%b0 zrs&lr;$P(otB(DvbMw-%5e==? zN|*$pV=b_xt(Hl@W=DOWV`ta8EtRje3am?Ofu-AqR;k>7#gYmh)vVagN|=bS3iL*! z3Rtnr5^{G@udem33<7;<6vtWJmU2t653w0ZgU7(G3Ug9bv!m3xrIrAb6?m5PH@7Gg z=mV_g5!ci*r@*a^ZXGW9RcHy5jd#ni0osa0`o+k!Vi~l(SiY24dEb)$zz*qq9%=23 z!PTO;8V3QPa1m2&^_EzBV*gh|x)3}FT^Gtkz{;M0v z3aM{ZwPjJY_MmP8UA0>=Y0a5PQ$*MWEGFHF;WNOpSE!Ed^Hx8#qLKxST0*M8mbT<; zd%b-#h_3ijvX8S`BsH6t?K0|mU7~&c00gkqS}3qJi;3&i#iZ&pNw&(drjhNk3Srha r;uSEwBZ9)}+9E{lozUWz)|>JljTNDuzZ#Tl00000NkvXXu0mjf_!UIT diff --git a/ios/Runner/Assets.xcassets/AppIcon-prod.appiconset/AppIcon-prod-40x40@1x.png b/ios/Runner/Assets.xcassets/AppIcon-prod.appiconset/AppIcon-prod-40x40@1x.png index 30e3c064a76b37155e3f4e2b95dd42ece1ca20ca..7b921f4e22731fc189bfb8d7ee855c3ebc7bee0c 100644 GIT binary patch delta 2692 zcmV-~3VZd#42%_!BYy#eX+uL$Nkc;*aB^>EX>4Tx0C=2zkv&MmKpe$iQ>7{uK{JSS z$WWcEh>AFB6^c+H)C#RSn2&xzlZGV4#ZhoAIQX$xb#QUk)xlK|1V2FB+?*6$q{ROv zg%&X$9QWhhy~o`dl1nC62?{wDP=N-?^@IJv?{2O9u1fPK`z2&deftgRzYb`B$1oUkK7uPLK-UBXofWaq2G9_0E(&X}a z;QfrgDGLnT0zGS9Z_Rz2J^*RzDtQAO90DT+%3k+*cYjxVZ~vZY_V)vt_j0$q+SAGa z00_fLL_t(|0kv2MOjKJMo&pRACM1`sf|p-IsPxK^<1E{Z~wHM@ECHP)yxwzWiJ ziQ?K9Q4tl1C6=rUii;xRdkj3~A&62%pGtdDhR)3F_s`B{FT>w!V>bLPw`W;*aK!XprgL`vFn&x#{Wh701D~PojZ3@=&e*Lh27oVCTQK7#d_Me%EV%^0*@NJ zy}kXW`uh4lV7LJGv~AnAeSh}s+267Iyu7?BAAdi7e4RGIiA}Pzv+b{3x#E?co<8{X z>(}Q>OG~XMPoBI4+7a`u&9nsz7UZ5fbt*%bTqi&Ruy*a*Ut(fnO5qH4p-_mmWj;PWA3{SztBnRor^JT#4<0=5Wcn;DELx(YqsvN4N)EZYy8d;> zj2RW^>(Ne8QIY+lM~~dJ*U}CMwhRYVj(-_5rmyqq14xT4S+b;v9{Oe+8~xo|w{D%v zjEjwp^?oh`IuGJpR3a%i-Sy$)AEaLJ4YNNxM}?cbj{b0$>tNztvmdi84J_3PLD zB@#&+d`_91oa_xBG<9}%ZgF>aU)s{rVy(4|Q1ey^`Zi%?WMm%pFg{4AZQQsqcYoo+ zg(bDMwF*m1OQn^Sm3YXIAzz+9e|{FeBmh9sjT<*^S5;M61P2Erg$6i+>Q<|BXDLg$r+xal?0vs@400C614&q+9j%7?oPQzUcmdKv#l^)|GMUUCpQ_ojXIH`05&#lHYi*E| z{|&~wm-#eQqQW=@=DY`S_X7pB4H`74qq4Hn3Q_LNK9sMoZ#`MWXn>@-%*@O|6a@4Q z-;-aubjce89k_b+>MW4B?ELxjK>#SyOi@z_@f@=T_)?BQ8=se#=eA+PhJQ@>=_kzh zXYVt8`t%ZTVZPA-$*chKiXQqV^I&nmS+i!nL=^i?nl!2M$&)8~^ECkn_2iyBc`^iG zE9v17+FzY5@@MT?4{ z{#x=YM@Pp-H#avE?WhtG64H>v?cChl z+Q55hm}5$s!+~{X5xoFgTU$+PYHB0^Sr1>7-o1O*f77N-Y2Z6YWPcBm*Sy@@%QIKGcEh~@&Aa-61yflM|bBDi4Cr+IB7FEh8L}Ja9 zDO0MFl9Hsz$4=T>V;X4>nn^`;{)&9=G-1Mok1%5Zz&U9Gsb?MzQVciAGa4W{@0vAh z^4G0f_mb&bzI^#x0)IYk+_+jp3Q<%kb-Q-$`k7>u&iMGzXn-0L<|AmmRWj4)x}Z;H zG(f%#@xRI*1P;+``qeZ8n((=H?V7JMQIN`^1%I*Tlzpg#k)dMg##q(; z`}dsz%ID_Io6@$nHnXs>utF3QztQ-WD_8!6Dn`Pdhid#cJ`B77p%o=@9hsCXLr@;3 ze)yy^JUqM#&%CEkpGs%WoLK;%Nw^XOfj6rGUU~1{JvV4ygxg!sJbF-9@)ixeG;{g# z<&mdPpZ3v~X@AV!lXp!`O$DH&6j0J#M7Ra+)TI=`iHV8oLzS18TR?kZAZL+wzD6=A zK6>EUy(Aa)0m<>%+yAn&>WYz;WE_5J(z2~0q61&h%D zX(8NKy$~e5G^i_BprM>YhYkfdG&J-_72Syx81UxJ8-GVKFYYiQC@eg==24Jr*|O!O zKu6;PsH7l4SubaR@dZmjKtLTprNRdtaWyRq2?_ax;^ND)Wy=Zx)E4Dhwe~#1iwxED z)ifiON}K30g6A4h;i&JpsCZhSxjd4g4y;3ejn<(Ax=d~`Kn? #@+t*`Xw1&9*g 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�PEYC;9;Eg3K8FCnye&cVeJRG0cDg{vp1 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�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 literal 0 HcmV?d00001 diff --git a/assets/fonts/Hind-Light.ttf b/assets/fonts/Hind-Light.ttf new file mode 100644 index 0000000000000000000000000000000000000000..20c3281152ad5fd885c666547f5ff127a91cc003 GIT binary patch literal 279588 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 {~ z&MNsV375{*zharn6Sh^p)S#Xq$dIO-!CkAW}8b>GP6{h?LswoX%5;G6I4i$vmw4i*SMGVHs~7}MrXIC#=4ry@<6e$Hjq1~43a)xxQGp)1n+`mNZ~xtQZAi> z15J8fUP+EzalM&1yU1!EoZsDTp?n-=yYJ)qIFQpy5$RdbO}mTChBRe~+lX{d;32?5 zZ%T%jj0lBJphQv(x)eG`W|`0TAQ(8^$LIl={a;TBGzejc^&UJQOEwo7x<3rP1lKTaO}aXG-T@#uB}bGSsf-Nz?Xg0UKYDwC6rb2rk3jM+km#G@2?vuD09GP5M>D^= z*ehcXsq-^peiqn0Njf9Iel$^SE{qUH>Y^+#&xDJ$*TK>UTmte}WFs(Vvh?TAdEvYS zJ0_-n&!YK>KCuF?VFeb*QqU>-1b1&lqpy#MMqg@LyPjkUoKKQNCiEHQ7$P$;L{JaB z(HBv1BBf2%RJ_$>BYukQVG-M7sml{C1lEdLeG$}3)9j0yOx7uq$nl>1pa0`abDn#7 zOFBV(h1lP5_irgrh=M7v$Pd9hE2V@&b{6M&P&13w!lJ;phmp+vAVf_#(F0_?@P`nF z&~)NMEJ@fP!XH}jvV_ zJ}e+~MNs&x{4p#+1Lci@1_h#04K<<~0^t|9yy#9!J4BEAP%7PLh9m}%R6N%}n6r{% z&ir6Qwn5ARsgSr$B`j;zyl^`g#xlrB0+_IJ>(1!!Vz2~xGWt~kVAyg~OKSrE!_KiI zEB{T!B?tzH!)wERoB@Ia-aDY4A_j;IsXS6bgcdRYlfsE3?BG5vPXo1Bw{u8&h?F9Q z6d<5D=D_b_C|E0sTwzZ=3wRm(U}5z9`0K4{1HTT1fHXK1jQ*I1*I$v-@Hh|AxuFt< z9)@!Uqm7U^2(ke}lJG zf#~nFh=3S7#JJ)~+3;REz%@XVCO88`FnLbW9CoN$Q!Pm@r$QWn5H+rim%9V>G(QQ> zE=HSVLs9g?22BpU3sqI14)|P8^tYNE_$tm=@tFJ}{!S)@@sW-Il{pAj`cVk207KMd zFGAuvfy2{Od!tWuhAqtsk}{BooA}$Q)!q)g9-`oCax!M$u>XqcKf)eyN6+0L=SLsV zWPRx!uX@;IZS)7SuThirwCRIrfT&ytjWCO*(gA(Y)k`EzfN(mFH)0eKR zOuqrwCBuz*PnSVZR8^Ky;VFRUqC#H*Q!Sl>rTxp3wl22`A5H#x^xqfEz{*|z^J|%I!ThTz)t{=3eqZ^1>-qP~gEaxkQIP4hCK-UGMANm?m>h8_0RMx;0B>DN zRzF;I+F%r3M$x_`6&2>?awui8#iT$f)sM&)%cSyYn6ADlkA7i(9`yxQ6#eX4zU7`s zOrwrgMPH(?8U3tMzwej2A|2jb02=Mcn#M|^Bs68mo9d0oAR{oO)0i*-MoBZ*3-r2B(GEzq zGn;pXsh0hKT-D-@{`-2l`^}kK-cr)8q3ByR(ckf?OfyOdNfA0F)QqR55HUMMmJr55 zIw^rENg|#XjMRY+S7ppGXtJu{JjrCcqj#_ubkV=}#uBUjH|8=kmq2H&FI7I@z*DP3 zJu+2)QgYRX$eCB#bUBUKdMV#Uy2On&kQwEENZFmDMM0X2@~NCnjoN)hibQ^X@gYb9 zQ&uv=$BW{q#vP7*NSGB1m$>s}WMrSWBKrKw3%ed%pv3*o&R|9KKmSI*|K@p#NZPe; z@I<6ea!Vi9)VQOg2d7jp<8T9x#DRxKDpvr99{`7Y5C&JO+_i2~E@#;gVcj{`!OcgM z8p%v?z4j_NTPQBh&(0DFO2}nydxDW+e#v^wjz)Zly-7vu4=$LjjJ|PB{^R2L$|`Ii zv=WKbq9clqYRTxG;Uh5NBOtW3kC)Uc^>*CGL#~m-TvWq}x078k%P3p?(N9c$VtW7F z6l3QBmfskC=cGK+JuksH%=h*>_8Gpn?I>VGasqpc@{2_%(MIr4NiLdj*z_`iTVl1( z=#HZfL9iTzuk%L0kAr%a(oipCHtFpKYU3Fvl5+9xcCmCJ%ZdK$Db^PK`Er*16JFg8 z>*|HZ=y%jip^^#xI^NX=24=7uD=~;{ETchY*eF!Ns$D}Ou2$BW577P&+n(%po1Jfa zzQ8fd9VdW&vMBmxo((+u_|=Yi#!n+LT->RnHLFy_Gw#bX2(Qxb%PT11x{@vGV^akMpY9O6gXYIq{l*VMx&3)x0Tc5Xdm)*ayKP9`=5;!#K)3-A#SRDh5eH63@V9-1)(X4=W%5~6;T;T78-YO zX>U;aj@xKd7Y`AvR>sHJ!<6KmB44zLJNBXIR(AGBp4FW##|xrA(WdQQ&Ek@=;&rNx zKh`}f#nN`KqXV#nlpXsiQg+!=O{CI^Ud&ViEb<;a^3SCr1!@eNkn@35q~drxXZRN_ z78gpKJCx}U^gUY%(w^lDx=+yL2rOUlZBqo2@f~o1$Y%QGDmh^ zm^AkdxbyfttByWD!A5?h)XYEjU6%0VZz`~?SHNO?6s6AKaL@$13!IBs z;WI>hF`sin@jN^-P3DR{cptBxuN@2IMZXivS%Gv`sh=-z3`XNgD>?_WU*YAvRDccH z#tX3HfdKv%IF=k`h^edGRB%RY85th#z^c}TqI4ABpO;}bQyKQqzVRww^q`wldn8RT})20hWrSv>fcV+3=lv1DfcX3YA1tV0nH&^ipl?mm)lacW}m``IJcPyyzBd;PXigay9VCD%G9OepCtHSmBp?sTesoCp85D94j1u^fRGNiWGtx zB`3`yf;dVcG8I#LJ*cjBk%^z2mJEYfi2;x};;{d9#xtgOeSK3~o+kR?wBBxb*+g_9ftLUDug!!@dLDcM>2#65L4; z1VNCG`!129D2k#e%91Qwl4Z-bV#{%CSMid?vD4IX9JgtwiL&^q^n7%2ygM4#QCFQ);|f@XErv=*dbHkFEYG4WJSQ-wSrO^?Q>RPpAW z+0mZk%k!~7VU}ig_CCW_i5f$OaYy`_>N&c(GB@7e*NUcB0cW|kQWFSnOQPVxJ>nNV zrJ~j8L2lF`I4ut6xf0P50IUnyQ?KZwa5#&4l% z-NNPToi1l0bPhOo_RP&Up4{F#a`@nZ<^7BEQxjuqDjAOvYjjJ57O@1|#7mt6^eS&% zI|cp&7nYatOKx_0{_U5t$h_#knx~lCCJ>koej7Tn;9!=B{A6+%k4k@aE064b zy8L<6sa>W(t4ND^6VHWhY4KzpD{mfvw$~{UuB?O9E z9Qjf@^2pK9;Vy@($Fj-APB5#TB^H?s)S=iXV{#~cDLg&1B7sw?>(WTa%Ea;QiMsMY zRmW(mw`(f>;;|*?_m;i`#*`6u+ApkRkAM1c@r#eXzjHY$wje?K)%eEr!eR4(In~`W zG}$jYer$kmmJn`9!Zb;KebH>vjV*W}?zev>7^{L)#2=%uhR11Xq2da&v zS}L1$v5vsbwzzpV+--8WAzZZNkZh(x(xvm`0f!T$>(`|_V%GxLdz~hCf(<~4tpNS0 z);uxmR1?5&0TCovntTB;^J;s(yqPwX&NK@{gIu8WZ2Ex_Y|9 zb>MThnM6AQ5r`Le1cs7Bwz5)s(MH^5AlMP?aCH!LLFpt1NRh9P){4M)dfiSBKnWR4 z0`D=)d>+`1U;Y2QrXjjxlVZ z6tTddj1yc{jrE)q8{)M?Wzz1+m`Dhtv#mmBR%a2|gC#^=CKlIwQwssxh@R3KUOE5n zkx;Ur(W5AYLP#`<59m3rh6^W-CL@In92T*H9cst+F+;bdgl7qD7pg&DXB`R_$J@9p zb~t$!L3CQMd7NA#6w-6Rnnqc{k&f3C)<#AW}NyxQdxcy2fhyZ|z*g>fAX$X)laNZCg z6W$FHp4(OvAVB$CAWigJf}?^u#4sX{_XC(8iX%jW!NxuDejw_?oSV!Z1QwMFKEe9& zWct?51KYQrU$6E1YKG_L$72hrl`kzVx$RER$vc-zItImy>9G7MY2wTMmu@(5k9okf zu{e2rq9^?m@$H{lT$2W*izhGki-~vhNa$yjee4$S3A4g0s$(e81%Rr@VfE=YGeu1p zyvHecEKXP`7Qd*tEGUk03ohBs;tDciFwi(w^OnPgKoXP_$;!7C5K$54!(}_B&q9Ak z`!B-y?lxcU9Jmqueyi0#>z|!r<_`fn0Rcc^Hu=m@`2nlX>V?JZEdi~JZZGRM!$6<5 z?eYY>>+a*mu-u!Lql^2-68psFOQ{<(RLqICp@JKc+q>fbeE6xJRNa52dm=;De8W&j zk?jcQ8^`?5u^bK{K#mCCRNc(s>}jkj^OzleZAB)b1K^^dF&fUgmCm{~AWClX#?e7d zp$=*eL_WwJwb{&DPCHu>A9^VYf*%I1-yiT}Nyh09g3U$2w7pK4H_3+DRa4`3)*PwX z;faFfCK75QmRq7$b5^^n!>~^2rp^+aHj`rt;3(=MNHGks6=Du&BplocWZunYGS$Dr zLcFt^SN|<=bH`w^{_4Al|2 z#tDkn8fgkNg_)0_Gv_do>kK(8kBiEhU5|tOSlZJ(oNVn%-T&_>p#51;tf@RUI5tw9 z2n`i7l+J$pgRPOk??Zh5_oE%pb|)L-iH_nXlIi1+TBWcqmaFc$*^z;+&Uz0D1svqp zQQ0g2;eyFW-Ou3P*~q`MAuV8&&Ug{{BD@MfWfm!Z4nHeeAld%0IvUJJEdy2jZ*WXzppMVcCg+eQT(8 z=)P;|Lg@aC!iz@|-BX1YdQ?=N?nyQHEkqvi9?76Hom;ttOm_G*@>G7uYt^zTaw|9-9c< zxZOP4Y_g8H7L#Ms_un0S$ALSL7`^(!cfwQE?Sn&u?bRb-HQyN>h(FOWK2$Xm4|TRR zc*}fZsJeS*DZaX0^{(?LSq|?F1?=O{5)0z{xp7lfX%ekuHaB6pk_NL^aUzC5W;2-T zDVBhhM%*6W7g|tq>)Gq}fo8$8C2-T3yKQQ*DUf?Pt@!PeB|H@IGXv2uRl z7w(m^7auH0PFSq1RXsOSpqYxjI#lqsSE5glFIHB&{ei|%b4XE!rzcihvqW34zACL$QL>DdzW&qU7J%HT_~g}4QgmtwI;Bex(Y)WH?Q7sP`P={5WmF&Bz3ukVo}BFARFcK0-=1j_ZjbS%Vu;*UCfE` zJtRj-j5)zOoL8^yywg?NQ{OijtnGIkoyrUCF@sl`g9NQGU6aD^s`ifdrm9l6-J+L~ z4PdW0%~Uo95)%ikBb-mWL}g_vUOH|b3dB`7CK&21VRYO5>C$gQ<`Y#wyE@##)&86{Jg^~&Aa80$Q->vbzX!AdsL zwkUcbivNs=>e0{DMGJ0F@qw?QNyVz@c&f*7J2|yKoe*EDEiJq$3EP5TDS31x(P81U zs=c!#$RxV=PyslyDOP|`0b!hsp#uD6FR_BWkq8wqnGSo0(G@wy2=ziuJo{NURJF)Yws2uo^GGQ$4ObNv;|~$W(bP(VDt6(XI+F zs;j=)?sW>uAT@}>BA*f< zG5fa!%`Y3p?_D6;-19tnGa#>Ivms5eOgH|xIy}TZfVS3fsG+X9vJ@?~wOw3NU>7&? zS(0m;ESvX#jT{(vwt)p}yU`Bf_Nh;YAN=gDHaHHq(dt?J09CvYj zQ|3*!fet9X{G{$ce{T;fC2Fj#uB<>^etC$>E6dQYARFV**grH)^vhU7E$q?8SJDw( zYzP)z$@-Rp2h234ML~Wwv!3<~h1WA!QsmH?4D0DZu}-~kQus&Jb#QfVEQzb4uF77f zt>}JQQ6zU6A_#UGtze16hxYJj73sFa(RK@_fE%tOdb*p@M&2VjQR=8TS-#g*x=?B@ zw*V_%wk4FI9~V~k0D>%lb-MV>yVOO~Q)sb=5O5 zKG@xYTcaf4aX9q=aU3?hmJm_0U@+4UedLJOXWPbw6jL@ogp_oRWrQS7y_2&G?- zP@*BHp+0ObaAvjxxcloE!-FScI#q>FsA(E=-Q>`hH$~dsvXrC(e+eMZPXEW z2fp9C@_j<3ivNPk@iXE6+mB536@y@Kvx7Le(EA*Q+)Lb$tF)Ocy4f*`>(FJlxTx#0 z%S@RHvsV{x%fCxh(pjn89u4aoRi#cZD8Fbgy{;cfmd9 z7iG6qX3=|vNAKD7hCDbTWnOcDt~cMY68&7v;}5vsEYO12J7xZ48)|nT;B=zp@kC%^ zd~9TR5C@|p+6wwH0)JBs-|2Uv3y0NVb>NOGg?(bY( zaOcS)IW}<;`M2heqd;Uuh09ejRWUU=p^gj@!UUD-k>-ZF8Z42k+*KZm=-v-y*?HSY zZg;RyekO+Bsq7X*+fys$wG4;W=Q?7|fe}qoX%QMl@h0*9>SD`o&uWL~L9?Rnqmc>QYJw6uiYKfFO zDJW0IJB621g2ih_3**bW@$Cj&%q$&6It=_Y2nZ30rp;!eoC>)}KBC_9Bg@52cTOBJ zl0S(D*lITdN0{jroLCU%!yCBPEEGsY`kOxreHF4aCZ44s&!W(Lc~63To5kz#T0EC` z4i`LT$%DAmj%Ui9gGe1iUaxoAyS#tj!rTwL#jtFDO+C6a= z9i||SEzvT$%w1Kd(s%VtbaA#b+#8#+m)+6w=a)tr8~TT})@fGisupf2k^p}3{-=7H zt9m+5e2iSW$4bT~^|or%ZEb%79LLw#9}CzYWx}NJan(5xiw0{5=V{Y#umLDsN_?^a zos1jIDasCx@`U#wB1wuYJ0(BC+em(MhG=B~zXsB1_u;t%Q6E!YUOrhqIWaz(O0YBz z3Z7Xy0Fozum3-?#BSK&#fEsXfcf&#cK-wH#oa=5M+7b7UHWhK55$u1eCsMT|)<4~M zZSVPE$k!o6gbm>t9qj1{HB^?noMup<>^73RO7JTBnIU&XYF-_I*oB%SOw_;q`+D_ASoMOpFo3O+V7jlt8Np zg~A+LYfNQkGcn-KGA1?qdNV3f>lwEDk|=+oXEM`UykFmPJmmt%+SPAI7iYRV2Aiad zl+v6Wm_2*wQhP&@RmvnXzsj5Y#YS&-jdxH&GhF#;rZJmlPp!}PR$TK;d=hImB`gRp zs5V#`C7?c}LORNxsHj48C}syN1C;R7y@of#7tp7#+GZ0&I(LCV0GjXhpA> zOyV)G8+jBIQ&p=f{mF)EygkmeV+t&m9&5%^;?~OA6@kVQz#>D_)xf~J5m_=7^hnew&*Y-dSgh9$+(rq#haK- z@La4NfYq65_FtEt6vL%qv!lrFGHei=#fd9}Y-~5#*j9K$R`(f%nL!oHLZ%+YC&3t& zkGp_wL8nuYJJO;~U*8gIvkB}%`Hu!LTd}#+@#~$2 zb#G-)9p5j>I;P?r9?qCM|~$H^1;_krfklG>G~p)R_> zm^V=6E7}3?C8RmAKTMy&{&3>zYCzY}$GO#L+dthNsX;k6@~8UGne^!-GS<+N;$@ga zPOAq;7dMy-HyDnxBC27&WA?qNxd@G- z&9o2z;=#0?ot1XZVzF8AFoMfwah=J3RKL0Soa+3WosQKtvL`eqR9h>`k0MgHwmLsc zI!7HD900%zXe7pS)mYw8(NNYD!8K8#Azm~~8IYF|i4ZT%d0UIaUI6pj`wj!6sPgZx zR2`i393BDY<}=IM~g$-cO2cy`MeKtm?#OX>wtC z$&s4ZOs}~WxvJWat>^%qz@j*$G)CwQC02=}-Dmw{nv}FDy z_)2I`6E%$F4+2uSVpFJzJ&tCz@9g`X+k(?sK7i(&Y060936_ZdNKpQDm=^BCDmKg=ZG*>8 zCBH0f(l%MWySy!N)6CGK+SR|}iVwS2+xH)z8CuyKn>~6c6o0M$X>5_U-aFdHSC_@9 zf##L^npLi&UYZ~TZRI@>aR8ts98E3!ju$pcO)*&=@VQtC6T&2zlFqY$JR-OU zb8)n@|Gg}v=&_~$POPo&8ZT^T^5co>1UjDc(l~VVKnJ+1Ocwoo4%0qHPhEB{(Fv3q z1S61vb4luyGZkkjOc)fO&J;CP<_DC@8`uHOpTk*n4$0}%W`NSnosG~klUOSjLV=ltX{PLcR!wP>nPey8Je8*ez!e*w0^mU-Og+o~HuY)gL15C$+@#l^lfHl)g2EH2 zqt`VDr`RWB(rDjDL;)yBc!;AZl%EmRUQ1I$O%-@VS-KJQm^(D49%;y{Q`yrlVx300 z$@Ul0u(3|1G<~($)_HC8?hEOAvfGBm9WvD_Lmfpo%-F+JdJiui4I*(3d(nn;nR1cH ztaP*i-Kk@3<^XB*NhTk~8vJ&`+5i&eAV`!0cen%GTN>5|Diok?AZ?sBnIgML!I~-H zP_k7fYG|7|_BRhG)UI>R9dn^}rMA}Rt6i?m%Wt$tTNzt5Sk&r#HNKjr<^X!rloOtqcRRAzFDQ3O4(&^B0gMOaiAVj+*3%A{R?#zuRj~_d7nAM3a z%*_zKgs6K6B8G5gq^h~98T-`-1d6YgHR%JZGpKu zcGWeQTpMtJ4w&WcUiW-o{z`UlE9kG?&}hu%ZNJTyTzXsc=dQWcU%Vd}*!?r>$m=~; zTJ`n3{hpiUyL_roJhsc`XUTdK0gs!6c|giuP#v3V%jzig8!pwd8^eGGAy01dNdN(w zoahJ%><~({0_a8zWTaT{lKNO#Pyiiy5yW57(v)|u(Xn4`kZGGsE5kz?U%(10~@Hye z!@>-biT2TwqOfFdHKz(VA>fLq`$K8$&pJuz|4BR5Vd=7^V_6T8d zky+0nF;MYqlu_H@=R^^t%&e3A)vGIoS0ZsVFmk`KdUfe+$>J0Giu|{S3rRjcG;1tgU7kFp zF91%^8-JnD0$9KUz8{o3_L=e2aC>8eMbG5U5h_;P#I3JbJjj~Ech!26c%3o;($0Wr zvpQjuX-!I8%$eaZTOV4*Nrqxo;B{#({1Km09KbW}b=KUO07dWWvRb?Lci}`Kb`Mko zdY7=8C~K#+gD(h!9%U(aepySCWcW(?BX4SfdO4!<6W6&+I45t+$w8**RMet624me_ zEu`jjhP^&PvVzIWgl>zOg97#mR#3;!2bp4a3r>au9hkI6f87AE!wA!u>GcDaGcI=s z7*la6sX-Pn^MRm>?R+9)-h+4js{TpEdtrT?Kk(vuo`_v!am zUqkskK{_T;eUCj5>hr{7?d2)|ubtq^hC{pVgb-yS92frhN}|sTN=jYVOrb(WGCL)L z4Vj%T*d)OBJHSJY1RBz>4y0dAh*X+bq*4~B8!4GX9vcA{yZ|_Aj5LTYxa^Ny_hfnV z07c%~DhRD(tw?kZQ@sTvzecCUF!>%8WdTHL@<5I-w0XjStOR(X1yvDa6JjaQyt_eu z;ni0-$=~=%hnT*Yr+=ioS?*J=efzeqZII_2<2--!i$BRxJmN(y?P;D|({&9Y9{)li z`4i%?TbL96=E_*I!sRsSs%A-WTNSHYVQ@!AR^UOlo5;Nou6HRwBDeyg>~+bM(?LHz zXdfFq2%=ziIsr^@m|?p50eaMGFqRS30X`h?$u~Q1-ju+e_Vj>Ga;^vd;3VOB2IJH+ z33qv03+m+SsC`3G;Nvg0JeuD5&~+}7rg4U^YpM8AA=YJw&&Zurub{IvIjbKbZsYQ{z)9ht@GaG`I6cal>OUn7ei|cMuKxYZnnXodJE`j4RAp2kDa%l(Yci!}(X(y@W%`6>1 zNI%Cx+9w&3zhFUtsOk+WctOzXLjbaxo>T|HyRF$r+|$Vzf|2cuy|tXhFjCG|MlVx z+7aaa%knP0gNK)=hXy;F>OYPquT}D%D`kkI62BcWXn8AOLk=U0j@&0mF0V`S zvWsrFXI(h{y$<%@bfSI@h`YBG%fJaH@Q8y??7-80&~R>srbQ_nK9H8m~^gKz!#C8up>R8 z+d^Jse!MugxJlh~le$4M@0QM%z!vhEY0JPCl3@!$Q$vTNJ%NlZvQ?@v$Eqv%y+{OI zD0O?2Gw02TT*bhE$33urK#y9C5(;QA&f>oCAIL5W_}np1%*U42z<(A-HS7T}rGJMFJGTg&if+P+ zgjLC&e~qE&cN&D~T z7+H-pfzF3c>Vc^Lmo+#5IO$oufDbm^L(jKI>&q2A_R>xfNGtU|M)kQw)#nm6p#+zR zK#z7-*kA~{v;*n_MvEe2@;;7$i{J0>^Rw)AuoCRF)OSYF4Qx)|)FHej5y|h6^)mr_V-4J9SZf4*0;j@q_U`L>tbDcSAM5)S6hHyrI%O z)SC=t1;VJFsCAphB=)VCLIIYQj9sl^j(;zL*eTh986@9sFg zd>UM^lf&~10}p23nOh?vyt7#d33q&PdAIj60!gqNLM@cIqm!f};sX{|rIK z2n-7%O`?j-_6k4~cx?m#R92#K)+M5i%=tV{FP0J!bTVwH)l~y;b49S~GFT^lgs7v+ zX@;!GUC74Lp!9z}F}u2O|H4qJ{foEXdE@Qre*JajJKie(r-kw9{nP#FH{Q{I$HDd6 zZq2+fBmKd7rtYwD;hpHH>^5b3v2@_{qSpgVe{?LdQ-^b%z?Z2fhE4}1ofDLF0Soj~ z2k&22WDwK>)LHiP=tqJL92Zy}Sd`lQ1cOyrVQSN%1s(YLMJFwW_{@K2CK=je?b?4q|U6Ysj-o<#l`W%w=mWAOl$JUM10a>8HrB^v*Ji~_H@M( zJ?)7LDRG0>Sel}cjYC)xo>3h$Q_;4%GQZiXH`N}%0RZk7mbSj@q4?aS_)x1aP&G19 zAA%vuLV14)+h39b5@a=i!XkxK-!(_?7`UOl&J=MVD&IztH; z2$N9Y5u+1veS*{rzJkhKde9(!t2D#F_sO&G)1>=@jC60#O836?4kyaG9)|AJI44>B z^W~YYJFY42Q^^fh$;IzS6KR%x!tbdL5WLmZ`fMhv-mz;0A#0~cHn=z-8FLWHm_x9; zsYFW`Jnd0LMyWpDy5;wwi*vvV!H?)lc2BeHm;f#bcI`ePlfESSAJCaZ*!HEBAT|VT z|Go*y)A`Pc9uR8T6e76t*5FMKT}$?t)}83Ol%YCI|0dh$pI@K6;hLg9*3i6sMh_Y= z#4;(t&r2IvgGOOpwN+QadNZ2^Esb17+CU_2KW07nA=|KgzIm7K#za?E8r%w8f;3u$OV3qTd1U>(L_yMm z8dCVfAkdPDKns*2q72MANdY!I&d)K>v+x6i+7fnv_~nrE`P`3gs9yBRXu^@g)rmvJ zY<-l)PvUDRIn*(pD96uZ_B)1kZR{sn;JClb>lGDrDwYPSFRhjLS z7G2vZiCg!f?A_?fv$sQV59?Q&%k=wNYn6goSK0~XqBmq^9f;pk_|D zY38&A{#5=5oE_tb5$C2$QE5_|(2NRH<0S!VK0%Fg@gOpM2u>8kE-}4A6q_k;CrQt~ zDn6+*!CcAgA!I_u2yE-j7WzqM18FZzzM})()^EQOY$}6(*8SfQDOWQoW*iiO9TXVV zc}{M%8qzx?=X^HrW3Z;7L))BfI3MLqd$RLUSbJ*K?K!@Y^z$5jdGxXeW=;A>nb*v> zZ{B)=*)KWo`o=%Xf5qOlQ@HO+BwUJj)m39FmKQ6fI|$q{xW%}%Sx-s(tkxIW=!4v% zt*ri8s71VWrxUo`V6XzN5^fF6TS5^JKMI*!BO(UHOl5!0yUR^E?|%P8`cDpv=bZ{k z;Eyy3T-k9?oP9$O6KFX=1^HPqFuka_AcnZ`Zq?r16$w_9n=CqOcsn#907$x?BMl%!@W^J!X>8K(@fR+z*2;fA_SQY#+X0K^Ic}ewUfHz=mJLu)?Ix_-yU3v=EC?saAD(4!2P`U z=Ltu?3&M#Cm(i}l>oH|^2(CjIB@)c6%yGu)Bo1#93>H4en~v(PSHU5Y*QX-69K$mE-Yk3|e--a-0&47$=YdOh zXM!djIQ~RTbD3gD3b|5HR%S&wYht+zL_t7YV+bO3;P+M{Tqry$@AC+on9b&}8J>1i zLom?fZ}g%0EsG+tz@nz~IN&)GMl={wQs{@@5FgY_*2WMb{I>qutWZsKk@DjeYB2-? zbKd%mcS|3_Tl*0?JO6xpLw$v!`!zv4zbsMY%os7VP@%4M%LZN$=DY+m0W;%Ab3cV< zr{LOy(O6YaA+nHk{#P~XV#oI+SI#SGAglyOSZU z6jJ^$Bp{;)ZLjdr=cA#3TcHjmbmzqcn_afsWMWj4t;CpOb)mnV6?Y!a0LDyhFA1wYQX)n$6iDqYa$`Y$Pox z0b)Eb3JY%nVHu7~JD4X(ScS*reVl{bhJpyqcXbd$Qbh<&7kJFo2vE?ZqX!OXuk~?g zry=~HOGj?kua|TKlhWCxMmyatUm!U>Np{wWvGvQkpfWe@0TS22_#C@oG;zH=GjW4K zTHFe!M$5gz{akRgkwppQWQt@#5v^HPh?`tN?2cVBu)Pg;Obb(`g+Gr3S@xs+ zhUpcseW+($xVa1w*b)l7XKonYAWh#L=y-$nX}scs_L0^do>gGPP%S0@6YGi=-zb}Z z%Ykz%PlzjbZO$e7k5r2*ZxQ==EG>c|uvsW@`7M4l1#Nc-!>Q1C;guB*GNRA8!G+l$pv^?}@ zQ)+unI6k^Hy?JpsRps>tOaJ~im!7_O@S=bI_N+LPC(CUE;ktPD)xT1L;EOf+T zv1lxH^U;`UiJ5P@ul3y7$JE6BtZc?wBfTcuNDmrgQ+74|=L(vXLoThtQQ;2twu8&V zLw()tbr6rk2cAJYxQbB~2}m_rqOymSvP1Al4n+B&oSl#rRFB{?IazralNA!Jg5cW{ zSa%>wR-&gN5Ykj9Ma2yMP#>2V@1;lDqbw(K2}h)fNi2W^lTkM4&rEh(rj{D#tB@Eo zI-BIU{@UbdM@@J@y=C?216+<}uJJ|d_|ojqzO_Gm*V4XJ@5Oz$tu59YrP{kuJ=#`3 z(0%o9ly(TUex@TD>uHInZrm43L8$5YR?|p4F>*$_^tRSB8Ew; zXzx!3r1xDKsp$Eg zl3HJMp?!7w2tRMsoG|Uw3 zlbI-i$m6#wW;nkJ?lI&J&Y(jzONwwO&LLsbshaMRQS_&y18@@FSMLJWnE2;e!9r? z$k0zA8wU)Xhp)7^k?WJauK-B_l|9*Y%!LDUAM^LPP=J%qyRT#u38l!G+>hhFf&+0|A zaE11Drm}Jwj&w}0D@zlM^4kzh8)!q$sgCJnth*UYW+g_=Dwsfs7+UP|Cfs^}I7k6O z;V4WwE5KBcRz~qDx&x59ac_CF-T=J!M~on()CZlk*YymhqUfPwgRvbI)20J?X=*uN z9>b zq>1ZXF9qa%JM7==Eyai)aZTkp$Z(Eh{ZPx=4VKZe!I=ER*Z*b5Z8g!paKn)U3kmyD zd~*Nu_oVtx9(arEz30ZKE1tf1>b_(ruB_h@{bEo4g;m!)*4sJn>lr>G68`5svp3&Z zF`ukz8$A2i=3@VpS-ZHnBmE-w&YbWi>iiOIquv}D9OXE{bj}BPV!vHrMODb^!$H4xVxPr1H4l}c*r@P6rnKiK_kUmziCpsfTX=}VnBX_Q z{e#R>dgEU9%G8B?Sa|CBuFkqzMJEsKh8Hd&7z3mzb{M$E%?MH=1cNxQVuoSFSgt^W zW}pr2gBGVui`Hhm*idvo&W-|SC^%bLqYbJspfE3dH8Qk`P@XnaS#Mbh665_DLU|qo z&)-9ZrNo((#ZR+JCMkApk+rarCEoK}dV!p^Ylsi$^^HGOV6CIQ=~tfXX!pxH;+Z%% z9A+Z$N9xjQ0vN<9$S4Y+{uzSHZG-S6f@py)fOZjlUS*r5k@+#pV4i1TAt}hSk-NOd z`3g^kfG{knlz_gc=&gY*#G1sQo{4grjfkl08BJd!xi5XaJQjq&Szoq7lle3GLXY9# zvd#GU_l%@}zjNUJXSb(s7#NNR)_Xe!XU3M-l%E>5rTFEJ1LE}SGT)k?ZEPHWaQr~> zf$z2t4YYMOjKuv;;}(q^)h<+U1yX0iDO7{mNBer48olNWLvNaGlyUlM&ppmH(Id`NW#^D|f}; zTK~GJ86}VEnTSYoG8xIpZ)Q=-{0wN%eEmj8i>BpF_d}c$!bgdNJ=|Pcl4ZOf06Gmc z+@L(A%f%(5vV{ep?GDOjf%Kj+o6(*H(mRJQ7)Ffv$X-V048+;TzMK#ybP81X{~b&r zmLO!wE)zq@GQLBCJAOgiF+Z*uGu_Wanc*K9q?n^EFNE8(Y4z7odx)b?(aoF-!zfN~ zPC6aYPG|yZ%4-)U#L#nny%n;Kwx5C6TvjLYVsH$QB0WP~eV_ss&Y&_>@OT{_QU)j_ z@}6ZX0M?&*8{~07+Ee1)NYzcW0Q0C!HDk9EU+P|`EjFXNl9|kI0{#bl`FWE66p!z4Z%2H1Vr@hGGs9|&PewPkulmHe=zQ0BLzP(^ zC*>}M2SyJj?)`2w2~c;R$=oySG8g)O^Q9+hvwOD235qF!X z$a7%LYFsYYvcyDS(SfP#w{6kNXX+-YKvgtEey1!Y(me*-R?2m)UpeWhw; zzGiAhQ*p_a)|#r|RR7yg4NgCMY(~2=I^)yhA3MDGCx^T1N9rpsk1eo!qpP*E?(E=bSGzwI2B|(n7gfq1z;bnpCskW(b(PbB3j*s! z(E2uVGswpRZUyA$7Mp-u16Iy9%hWqjH*d?J`#9qjfdWl3jX)a9B5zV->0O2qqZI+` z5CFlBC^9_%yU0U(6W>KD;X1!d?JW3g*g)>RMxId+8vJ45a?D=rB*TXUl#Mu{z2byCH;5tLVkEl_RP6L9BYyxe)!Dixc zf(%820nxg}AR8IUbe5qu+7vsc$s0`T_ol!5O@1v~7p*E671OjTA^cwh!&mZEDbky= z;JvBQdCBgbJYN4r`I=#&#P_w#ox55iKlg2E zH4h^a;<(2wDi)|8+#EahR~B@fx6??Eb!7)qd=;#cXLd}GGYmTnLPk#qW+c-W?r9ty zeBuBj%EWLpNs-}}4I9jeTi$7(kvXPstJ4Pfa?6j6+v$7V$=hH5WBG@9DCXHd<1Q+_ zmG7cA-YNYWMA;&oQEfHVIk?599A%4A3s_bJz`{Pt;uo7T_{EG?r%xI`w4pi~+MbY% zHW>H?kc`aaM}*ZF!H6}MNFTqHdL$5UukUaDVlM7JjYJJ@u$vCMO6ptdyaNs4>bHL1 z_Y`N-JCl12KsxLTWc-lzqrU6V*b0~uiI$B@HR*)` zBNDUtMxY`k6Z$*vHZ*4xa94oe#jWra$yFqcUqTQ(TKR$yyuxeGO>qv(i^)~FNW9vA zGH!xD%J%#CzyYIZ57(S?GmNeBJw+x53Wl&X~18lbB@fHu71N9r3cM9 z0`m!@kPzSDH5|2&O`8xC9=*~Z2HTKHM=b(>26h{^nb0v(k?njp!2#sQ#sNw@3nWgK|HQ)M?Zlp(gbg;w8I(Z9&q~3(wf#kb0R%@7x}typ%198;r~Q=;2skMq;6hGF!^#b1-1lr~A%BL9pPoB- zLyfpVOXV7Ik&_N`c9faml1IPYdTJ{ONQne~47-<@ksAT2=AL?4FZ0!NF#RztmLHB7 zJa^`}^Q#{&_kHPq{nU+P^RiQlUh4b3ibPwuyZK+z|5kfqx^=Yz9{XBfN9rvb$JgdA zq~Fdw^pS>IzyQfb|J9F``5W4+eX+V={kJ2*_~^mfs(ZiNKG@%S$YSmvj*Y=XC(eUE zRj3b^40^|;*!_i&Rnof(&H`cNM4;p{#jb1)C!#Jklq=dK)N1)fGQY_0_6UmSEDO4z zd5C?RaUFS0RL$f&7SP%X^3D(os70|O77K5C&+`_YQa!L^Hn+`Ub3=D%PfNLm!Vg<) zQkZO=J|7-D>7#nvfnN0SBPp0xl1^{LYtwm(0uSX_o zX;|H`VR_{zUrnz&#FV4rpAdJ%tCEiiBq zz(j$%wyX|^bsO~7)ai`iQrVmZ2d04!D{n3!_-)Ye7QjLFJ{c&Y%{HseY(*q(Z}Sy< zE-YhRb#?VjHDOG~M^b}~@vRL3`_dA0X5s;7e070IeGh<=%`P>BKq*G1 z(M>|be<9V-U~&d8>x~T$thlU-(lV42UyG#%MsZ--b)k%7Vf%$oT|qN)pUI>*oJ^9= zck=i%R2INX-~tD??imJNLa!)vVZx%2BSYRH5%3v8`$-mt-t!bWqY(we_0caNp^2_I zL_E;!2cj7D7gW%csrUl7Xc*wY9NV7*dq6`rkPkso#u?yi`Rp^M3mc2`6Z@x@riZ&~ zt2~03^i~4@m4o@}h2(041>v-M zaw0j@-9@l3wETluWKAupFqPt0U}1kpwMD{ypT!J_96$AdB!KULM1^}7pult3 z048*2z-9wmzfaix{0lx?0lZ64~hd+%_ zTXhxVq#?@=4hE2P60Sm+A5_4CpoHMCDX?20Rs`L^HoXn$H8;8V>38(Un$;n#w$i5V@F4^O<49zetx$ z?>CTuy!!Y~x&Fk!1cS31|LAs}!hpKC!t+l2a#=Qs5J2qt{ z#M%P|N9cIkj26__Lj%ezJzTbcl)DzXbl6etYTJTsNW2j|xZQ<4Y%&vuy66PC!w@-! z#3ZUXC^9nV^SF|ztRN|10sP@0F)T-#Sn&zPfZY=AA0z_?5C*o;FDQ-7Lc*Qs9!6x& z<%AR_MZo_-;b8HTjj71gM9avbc=%+wzq2v*r!Q|za^8Z|NNaD0musA1eESuqRScvD1D^2FSWfs7`Ap=+{uem((+ z!V3*!V&-@pP76Q_l=Ia&UqfOB#BIolZSHUOl|&=R)03D@1R>SnG4f84mvNoI0}7pz zQOe)Aae3~Ro0b;Oc4x%haiU>teeKrw-h9)0-hEs>G0A28+tS9dL~<}WI6fkMCnM`h zf1=K^W?!3L-a2|;W)7M+6hP_d{3mwEi5x3hNcOz)%Z)+;WzV)$<+e`;PqHo=RaqE(@$bg@D=>^jiOgY?HUSHvy z+87=fnT=&O?y2RvP^$I#?2WOm+jPY+u{o)TsYLhS0jV#uYr7I2NBZeUrw-yxOQNTB zy+GcgB2D2%9cX$U7iQGS#)c|XWzy>*4ME`^5utKYzg9$7N&T9(p?S*|Y=AB4=|KX~ z1bihOek5F)SmmMNbovZG6T+KLriK59MIf-8;V@s+MiGZ|{+65eEuPi?d-u-|-gf@b z!P_1`bJJsw9Xs`o$Bw1HD{Y92IF>`hqoe5$Yd=U|Uv(Uun%QtH;6DeBZXH-&m8Ybw z-(HoMwW<<@Vh#bJ9#My9R9kmjv)d$_^lB#GB$S@I29TiN=q6>8Z=BmR|h!WP>@qySyEqGA8AIRK{@LU zjiNj{8yT#oDSJ7Cr(TO07Qk)N`S{e;kDx#Lx%Lc3^XhGLTbuKfCl1T+&!9DzW_mB5 zx%q*&A5DLk&d9G=ORIu9JoC)Kv8jcb*@;!j1A9orX}0(8+r0gb&0{ypZ)2{@8w*kl zVqFpkub?Qov4Q!cl+78!5wQRycMg>$NHrqV1@37`lE{=%R07tDGr)2wRy128N0gcv z>DIS)gAeL6;1l?$WL2&)SKfH?h*LD)M!u2Fs@OJxH@U7!;88oA=n!~kb{hBzHb!n_ z0_8S;7$;r~9=Qk)H}hV`XQ8YlC``zqAd*e$0}g;Fs!70lbD)7auG~0a>&!d`QVp;i z_`0*CN*Vsi;Jaipz_S3We-?nfRSmM!h(^>-Rh?KzkPYM5U1$|d)s#ze9l5&GMM~aD> zt#g+Zs7X}ah)B$kE^z=o1>e=obP3_7oKD`j3{|f@o{=(+2bCXC-pJ`}f@W(^lYsZc z@cn!|d>U$6gCG)S+2tv)Y!!gGje~+4OE%Eo3ZkOslE$V6Rs&>MGUzhBF(X4yQyEak z_9(PcnH-?_$t$N1*pFAI)T4)2R`$=O7Uz@g-Tmsq#REt0JDv<`3skr19iQHqzYiwg z()(zIEXj_3Rk6+u#MN+pPu*ZuPe)?r=>Fq9PQSK3)}hvTKP?bJvEEP`u|RHNTzK_L zXGdj;jYSv8NT39oWJeP;kW{hyAFK%aI>Fk8&tg-ytvH|X^T;I0I(pn!MAuZwZpYcc z3{Y+if{y|sgqL=m0G<*bi|N7DsUS^PY?9osrjz9Hc*Z?^Q5ZTl)E}dg2f(N(CIM4| z;cs@@5m*|AftcR<>Q8bjfzXkHkeSZy6GtLyC!w_Bvy;ndhRUzZkU zUpNI-cuKXkM4D@>K&A~dkq%EUj*db}N&+0yPBkOQa|_jr%aTQ=h`0@I_8DSBaBQLZ zSpYrhaN;%>^d)KHzQnw9D%LZ2MEq8~&z$T`G^OAD(Bk@Z*Nork!RDT;skIJ96T`al*_L{+ zw?~De>c&uCbI60%(vBIts@_qOfe9cjs=6XE+Te&&^g_cFqMjftK>T@BU}8wbaoB-F zZ-O7kLS5u(pnwhiceScDb|V)*_S|$MACFmXAD<2#x?y|r;YHY=17maN=hhA%F`o8g z4ipp$!a4dV!H69ed$ zF0qRxR+=mdv-0^($BF|pdX!oGjX4Gn@5h?4jAA}%VI`S<;nd>Ld|R+L($Y6EeeTeW z@A>V=(hn+|y1fGq#N!!zNc_*H@=wei>hGv+t{5yC?^oCE*gkoW?>y!CG;8O{n=HCD zG$Qt}6mq5fKOk*0lDOY_z9!&@Wudutt+;SRiATpFB?KO{NCi30Ruou++A-Bt~Z?}f*1%X zY_a|_Xb0agLfIZYgC3su9XznI@09!<&Of+i0I^*XANbqVjkUu+zz&87f*t%$BrMPk zOh}0xEVK07AiNN1rkedX)2*-z)+60wP(P6x2M5o;s&B`H})T_vsjV|itdG* z5!+*>jyRSeh6LG($5KgXd$vr3AYfGrSQAd@%v*@F(!MZT!Lm|A1kl3nKDKh{C#CXR zX{qD~apC!IncjYf>%se)XPZsd5!YgJZ2Ez_Y92puhqj9GxV~~%U-(XV>iq51%cG&r zwgzvRPYhLe&n(3co~(N4{7G(l$W)qc2HfIjUnnn==yszZNH>;GG?O7{i2Q&Fg^Fmj z(hsMdnnq;qHXaA*#B##`$H^)(e#a;}H`o7dz=U4c7qL^s=?OccR4NYhzDcjbq~$?6 ziq24B_#v|g^|hn(6lBXHnF;_8$=&jdQ2iIyIZ{ocN8M%araEdFA2GlPT>W7p%BlLwD2O_~(2(oL#L%mu-$~P`fe>D|bM@rrYrUWHjRW487U=*z2*EyZdi{a7i?h zyJ|0`Db_gN3H)n9v+(%mD@DB~xf9G|HnayPMG7KpEM>-S=kLkbYaPc3HOXwtD0|He zl}64GEH-i7WH#-3PqQ*GLN3d?GkPT}7-U_4@t0>b8ZQ04d5W)}?c+}2!RN}$oU*>=?NDkKn?m7`jP?cQ zjoB%v-DISUIlL(v0aw8>c^}6n#}V(e036#I;S@``n>-t=!V2RwXU&QXM3CRAg-HVO+3!`>`mkTo= zcK32&a>Q_bXQJVKtl4_5L}QK0yNXl`H~s3D_AR>YPS1&p_g?(#w!Unw@KwL^n?-7c zM|(c8@2E5&J#gaWTT62)g_-I!*FoG)M34`QZq+$IH=Jy*^}8)Lz3giQd(JD`&_o3% z&rT=Lj%>W$h4#%BH{yd7Zgn_JTTav};wbu*0GVXj_JQ0A8>T-ar)nanWw-fu%%P55 zW4Om6d8p$$dnj}b;Lnsl2dw4JiVByj;&8>`^+VL1VRm{7lqW-jvA(VjAnQ@rMa&$o za#wjM;wz;nt`U|ZQlVs{kToVx;t`Z$x7>y2grC<6W z%EXH=J!NmdsXTLy7iiPKo{`v#%Z>+DcR>#>iR48b}twr9_p5`-7g2<7fNFQs3o^3w=-iq`s=m|zC(h@vvvw(N$>BcZ6=n2JN6I6c;BY$4 zTQ1^sM^6mOa|E_Z^p+Uo^n1Z+q5dm-o-lV3z!l2N%h$`-S?^=CoFZE91Y<*QYo+>O zxSmZoGdzyR4odDtktru;A@DbGYLwT~f#~8?XM10^ycI4__gzaDy6ao8PVC4$Vpyhc z=BURS5nZUB>Is(V<*r)GsncrsI8&`= z{^6O~;Gw`VES$y4xtY8Uv-b>48g!__d2%{Uv|MyxfaS~ltoVujRNV5&J`G{QjoGE^ zo(Pv#W|{>*+|$gzMBOn4QqW>@lICR3NRPvAM#81#JS{>{*O*KlyS{m3AF==e_Dr5_ z!Q-j&ERqw}4$O)zy>{CI&XB;xeH>9*FMHO`fA-$T1^ueVBXA zawEv&dAwsF4vH`CMN`TpoC$^Ui&wAcWCVFE2!6& z@P4(cf5jCacCWVYKOV5p^oI^^={NAD^PLk%0@bZ6n`5&_NB)waGhGACnCQ~lq)tEP2rGThiVv37u8#b3L3YM|WRwGlsjXmDRx!x5tX3Kis^Qf<9G zCn>>LZ{6+NDSha$`Ldtk#v zC(P^T z%&G34p~-&H@oTgD(mxPuJuQ73A7a+d*X~Vqoqm+Z>z_~_gKV477~v(=KAh~PCcG9M zSUrs#BcoB1Om=8gAPTjX)gFfk8Z{hQ>K}%!2iF-%b*Iz1jY=lUds1Is-xk`8`vN|Q zdXi0qziDK3c0>~QFk|jC@W9YkV=0KdBMcNYD}{m5ONDEhzP*gJAF+lKMEDJ<#5}_i zHYUq4n{fwHEAjpUi@;imQNH=FiZ$_FLd*E3cRq3KkKg`m%T|wZH3sggHOH#1{;v4^ zW30K~9fyWz4Q<1zqwkZ==P&%`?O3wat?X)-H! zQxs_%)N4D6-s-3=4KV!*uf8Z)@P=1Kfuy0}Ew^VkGy)_?;r$ZnDPu|Ga%uaZ_|7!! zVLH9<_|(!Stmb=9UhEeW53^7Vs^js{4qz=FxYFI!Xdnusa%{%f!HO3V>7oRwylvq$ zuteKoaL-!sYp}%9X38H`h$1ZRMD(Srqdyqp-1=Jl0Ri?Mxw3pkr@yLZxMHOb>aHp- z&w&g3-&#?#5|}xxA2KF^ikmwIll50Wwu36{*rAmp`wc>w@gzJ-nli>=)(peqTrq7GP&Lt z-v&E17a9<7%OZ47#-3o3`F^-NYkj=_M{J*vFFV#{+$(aoQF}!9u~TyA*a)M07%H=y zTpLO8>fC9l20x`wLn&Shm=H-L<~+(ZCsC1I=5Mgec*)JofV`M_6F5}Hh6ek4JKDn( zf2u4+zidYLZXmfW#nHw6PJS1Q#}vNbnXgtbd|pP74DodO5&1linjd_i+|}1pF}tRp zgNrxU+|qvYDMKLrkvqJHrw-gfmpqgMqUQ%U`UVcI=(qXFs)a;eDE+4Lk*Qlw@vB`T z8i$au^*mMiD!RI>r#l7lDXNarwH=D64JE#{8EvP3)cE%e)!_^I0wd6MR!fam+zV7V ztRf4G#?c0+Eni-mX~t9{efm=B@#?0?Sasc}D-#o6TAaG!wtFxBZrZ`M-pVmwd3{4= zS7&)Ja9;kz{843q;s%=jliy(aZ%DXbwf8sGRD%+q!6ONQ*s3ct>=$HlDZrA^fHu;A zhW;6m9U4#{l>12ofVAHi7$vxXp5ZE_{*13qs?hlAybKc>a6U%^F5O-AKy!I}XE5@( zUv1W;(RVU*zW(a7I~3shfnHB-O})3LwYJd{Yt2Y!D!52`kR5fI$aAcy>b?gB^6pIB zGG98z`yuz8tJR{?Ig|TINXKTgwE%zs1R6PD2vKVk`pg*6Nt`TANcQEbJ`QA&UcEY) zOst^4M#s_5oyzFCdoSLWo)sVX+Sm6@uCm&-pH7G`d9y(zFahva{iyb;_pw*igOzPq zOVLc&2k0(f?9M`W$y*3C6NOdo1y`-M(C?vV0Kd#1mitkJDfO3ahJn=R^V92QV)1mQ znUm=g;qwF0oo5a)mYpBzubaNQ^1?IXorX8QKb;Vt`0N+yjXUY~H>ZF8qV@N8zO#vf zlRgAZo>LvE;jXsUa<^dBElJ>>9HN6diU2JKwiZH{c_gO?HTh*poPbb|qz)W_4`@ks}TOo~pGI~sN)FuHSoij_>NBh-JE2T<1GdLJipt(_PzGx z!j5hA;{DiGi?bVOFYqxEbZ+B;Upd)RaH}Z~v#q8I{|TJpy`i#FN2c_Js+3XSj#xOr zo;Ct|a_@-TSm;-oyd%pt2(_v1h4he46OG1Z_$^p(EpUx?nImT)>u z;wp_|nx8#%G=p?G3L?v`poI&m@~ZHWY?S`~YJ7NTS^QA?BNWoOu%gGBx+g~3w~idX z)v#&rNslN`(?MMt+b=rakAUBy(^`OcygU8U&s1^!bm`7LEdLIKDMLj)jdSbIBpG_) zWGcAvFAEBQU_>sU9bnWBT4Wd>+4GxCE_LgJ@MrB9=a1&+SRaCY$|!(a6jsYg)B>fs z)B<{jiRB%PJzWZ(>7N>y1wLqy%`@qeoxB1AIl^E;9aA}k;Y1j2T=;})8;G?x)>txo z3)lg(Xtv@&Blc~f*f$caHi~#-kAVdiY!!AB_7=r)Tnbg$x{v8Zx4?91gYkEPIF?xi zz0fRqLlN;rv~9e6oC6rCu@-d;@|U4pQY&MleWjI4_VtdSEG4&6($F@jpe9sKyi#>= z(sP(nR-c|8IKQ7hkjrJZ?9*{(90@1x)Rzch1!Q7VJOoO?^!g;>a3$oH05V1kGE zVJAd$?1Y2&0l`*kv=9T_P5QO?9;d3Gt!IRtxh4 z4F;4MFgVKNmo8XHW#zQh(3|TJK_rC7KAQU}wADb}O{=rDEEr}s6K|`*=_fKbB_%T> zrbu%bRT>PkrN6rL?JD{N8t^uGa5! zXTlA=h-QP*1f-IPCfm`7hpsT-mB@dF4QgUGDA;atXob4>b%i=WsW=_h?qR@(5&O1$$??>O@n?P*q6)*<9l2pu!3&E^{cz!h&!KOAQ|%c9T`! zB63t{8y*_SGIK0^mS9-04EP`>luhDl(#mVDHIj3t=p(s6*-;hA;JU__sy&RV)oP;3 zfgRq4ELrH}<|qx=AwDL!VVA?eE1yVEl?$dLm-t5hzblvx7)r` z?6aiUnxId@sL0)_9oPsYXg8Y9It9qEu>f-wAl8^fqF^8ckFOP2HJ*?Sb24mdBdYeY zN@WwyB$tq->gO%2z`NF-ula)i#@U>@X6e_3+vQ6a<~Ec+60eVG$*~0^EUIT-PwsQB z|E#F^MWN@~Md>{Vnf3}l;{nr-avx%l0s^M|zuAoxYaITEh*q4SPSM>D2{{8ITollk zk2fmiIn=hIPoh>@e{cb}rg;nnL)%b$K!kI7KT%?g)>`s$)^wPDfdMn4c9!yVry7$L zM9oLhJ5i5lqQF6q-$5O5tXa_@CW~SIE7l;~|NTgF>+I0IOE32nV1M`C#jezEwbZ@M z8>wlp?&(X%=54p0FN*xV<23dxXsi+Cdk{AJq*$wGxdCIYMkjF+2Bi$xke z%Ws}M@zCi<@-f`L6LUT18mp;;%c}|u?;Xd^-&t%qC#O3ayJlE77nBpxvi>`kbz1BO zfk0oA-(|DgVG~frQXleF4)iU*gylyILM$N8l9Q|;3$GaktL&?&yRqA`fq|~43w~m2 zV{sCVq5Kq>rlA#`V2#W+n~SnOC8hy^H4rg4svCcaDQ}d28i{f(%io@A!qKD-z1AEO z?kgStS@cZu#Vv-C%y162%(2SlyNa*xnWSuKP|2HKJaM?UV`r)LO{0{+(zTLT_5PkT zf}5*Zc<6F&83QZ(!4R2U)>p?_coSFzDDo*PYqpVOE0^w{*+?;ZV@^r&TF&q#N_M||(X)ZCuAzV&M#Uw{44+b_SRvT%7} z{$6`rqSUgBh3NkHa%W?iQz37LWHb)53w=o#vnBc^!VE)!u#F0Y0eO)L@`8@NfKk&j z+m{hx$}3kU+WQg{AgqEU#@YOd%+=0t1E&z8L-pk_b$dyWuo@f7k`xC{(lxFtd!#9O z(0u^pbu7Ma9Ek)Y@*&rQ6bm~MFw~4w;f?giDw{`K{mZ?3lC@3sp-S=9#zAR2Zu2h> zw@)@!MBB#h->!yl*>}giu(%*x6iLTj6W_q9Nzk^c^@d)HTxJ z%Cyhz8Q-p-A6&K6^SE8?x!l}Pfr=9S>`>|+Y*IKgIr<*Gt^_x`ZJ8nOEu0y+6X@8m zA`_5JQTpCGLCIlsTwc)c(H(T%zXvZExdHZuK>J8Gg-UBJZ)*80ek>pb#=#wGh1yNT z5;?*ktS)bm$QK-joB=(P&EKkLz2fB8)jSfD0Q*Cl?v~|)U_oat5RWBOFf%q{y5R+7WoI&YArIS@3 zbFE=VNuC`i0(FdtXOKrh3Xo2O6J`9w6Ra#V%glW8t6>C`8i>rhsK|5@*aYTb&=&jv zj0~ldeE%m&TbOpgxXF&sROC*F`AVpX^fy$|<`-Lv?D_QY?4USWSJhb;s>DUH_LtKC zn2Ctk zJl%*oITrx?IIOv&KqOF>+nuQ0f-Tthkys1kh+#xHYDK@=#8n$A%;~=vdW~x{ee)aY z>^*HqBjt})5C36<*4h51$9EiCc=^KcSmnOfnbmDQefOU^vwl=szOQ$s&vvP4?se7e ztv!-BKRGdv8)D*2EVXBBe{=bvfrIBsZPADM821f*SfB8S=4y(wFH=c<5xZ4409n-X zi0}Cq61)J zMewbO0&^ACjUx>h3ZT08?>p1Bj*1F@ji=0CUl(m29B7EYl-Y`Fzm~peJ`nZ3J69@| zc(~ph_77H-r8+WGQQU{jz1=B$+vC=ftQr!_z{o5@%`tMUb28PobhjWMKzE7M@01nV$ACoqM}c=QYZ zMppxjDC6d*Sa8(`UNOHo+SNHbEG}If|G+?ZWhj1dcIEcfUF%O=5Q`}vm~t^-&4(f$M5b{;;dM}MVv;F}^shw$d7(oxxz+jYp2qrkn=`t|imf{cJ&^FM~``VV4N4AX~d;o!tihFkKyfEF|I(A^LBC`GuVv87k zjXzO0JFva6>4f-)2&(>Z^YF}Ax=*roxAjcR^Gqbrf8-9iA(B~bDpn=R*Qfdz^p>f< zIH$*As!w0dt*E^>w;jz)40R44={8he+1}3i;|skRQhDUzK;;dkTY7ehPa5j(e7tq{ z#J;BT!@9boqkOkS$f921!sROJP^>`Bk@3?A)5QTAH@fJ-nS`t%CC$)B0~gmaNG%m5 ztnhn^+~d4w^B!B$LQs~yLN69A7>w2jgUpTNsUG8sB5Rc|6#Ku~ezYbN2!sxgUL1=w zJsW9ht8N}VbnMhjZ$_K?usAZm_tDI_wrl(Bk@GAtbtMsfmA5Prs}2rSryIJJ#fiQd zRUPh|OAHK*bu48Dj`Us_6K4r;bnR{(eY-<=z2=^oYOSk9Ov+)9+>=S?5vj%n=p#2p zpWHaEZnyx92*;^%q5y{;hJp#G*cIY}D>?`;d&~3K);qROqA~$RFTIcqj{>pafX?bq zw!S$Ev~_Xi!a-SZt`QD8Guhp>fe=sM7%d(X+TK^YnON`Yn&hz|o|*nG_LdA_^M@{H zy2^cuA=Q4tji`ljtGHx6^hmrul>8&XBdr)wJ_^yPB;HL%=MO~F zH9>%qYe$zBFu2#%)>H@ml)W)wKv@n4)yKS<2?L0j^+$F?mh&CST`#U{6LQn{-X(QX zJ+kZOM^4;2-G^=Y9qtgS}l;Z<@Q+9V|K-4mH zYb)y@t>eNSOvPxpXPv`?b=a47LxOBy+Fr=MEHe0!K_9ee< ztVh=>DI++!-#`JtE;~lamZkA??<^*>S1qMn2u=QeL1=RD{-UD0V_;DaOESvM|Ay=) zIj}1obfRoq*K8SVNGIxC$c;q#Cr&nkPHswX8z-B=0|2B48R;_02yC{n4XQ4~de?3? z*qb*Fpd0AENdf-MCACP7XNt=3Om(a<^aquXcJM$lT_uzp)pIf=lLyy?MqZ!_0{{vS%!wpZTLIhe5pg+S7`!?%Xtq8M zaW3L&2c)E<(P${3L(iEffRJDIduh8dIGwejKvp!pBq>y|NcWa*Akh0+CZ})2yVl<& zpV**bz+5BOFO9v^M$1s?I}lit*m5}z1iC`tLJ}8fk$~UDUXmde+CtpbCvQO~Vu!C_ z^7XSlL(%+$_S2S!@t&dhF*XcgRTOfOyJ`8={NEyw5!lGD@3+W=zmA__QC!-?O+r&J z6yt@g+`nN8B8Shi>|{pJfjt~6lg^lF(#rpgEz!?r??9)|&r82Bclx{`)5e!&+SKGT zjAiK(cRU&JON4=?ML{b=wC=Otg}us(2O%WtIZun@KdVEK1` z=87?MvHFjkj@KiQ(nE!`T#tu7$JX&5oQosp*8W6pD&7fHUEvGb)st%hs$oG>!e2h= z1K>wrP-G%xM2CsNQu0d+!c=PIH2wcJI+Wb(4MIu7SqACl`Lnm5++ zLzLIUu1X0AL$j?<6|zi-4Eve~5;rMwY=4rTteFdCD?ZO;_WZ=17uHTP6)t9*hK_V` zNsSs+LdwS=C%2#pKfE%;5a5)&quoCUWF`{GZ1+3Kw7k>&>EPavL{T>Y4bK+s-L zck_N>Txvr!9u*(#09@Y$$n5H4Ern>sCb9lB zN3PU5RJ+Y)+z_Zx%ia(Y-4Li(LcaqZPg1dKb0Bmsf0!pZg}uoLtqB(awZW4S6u@O* ze%vxQ1dNtnc)f-Y4m&KoAj7V+5ENn6apu*WnZd1h3Y@N89AE$639+U9mgbDax91-R zw)NgJvIfjOY>c0Nto>6j?`h!jNVYG1S&x@0KZh`E;I0&PBr$<1X?KFVLsguvy9BS( z?ew~7lL<}&6gxq^>I4Oj5jj$Gz+xW(i*wLQE~Y7(NOeI^zwnvhzU58Ap~@~Ds$A^F ztS!UKbJ!fYT)1)3Dhf#-(hv)!Va(+pW83z}!#C-0 z=BuCI0M4A-wq{tf{05+xWMNc%H3OwRHBgTPKS)OD|GNo_MvK-bs2&jD-i5YNg2TnC zsEOl*3U3@Py8}icf>kg8sealmd9(G?go4V@Sg_<=y57NLcu#I=Ft41}e|Q1tGV5Cq z5Nc8V_kJ+MI>mc z!e$j(W%*Uutl(C^bh$z+3X)>L#jf>FOaB`x4wR)!uM9;qhu8)=f1vHglcu6;&R&Z1 ztJhqgI9I2;}HC^15S0W51AW>7iS)>bpRa7&;{bMPsx$=&<2{IS!5Sr*e`e*+DZ%8 zHw{#&>17r`Phx#D+EfcXv9-n53v4{4rl-lSb2db#*hcese5-=b7xnRt)+`7I_V3s> zIWaQS*9*Kps{U)?;^ncGIPow&dA0K-^{^wM0GIIbT4eM|8!6eM_`KB zh{|r`&Rt)WZlr5>Woq@FmDh%=2J~&YxAVpuEZY)*%+8aIF^YOp)AWJ$ud-IWqk9&` zyK&h(Gq3GkJzcrMUY(pyHDne{0eI!tY|kDN|C{ev=eGIbxDS0G0l78)dsfZOW!0R| z>vMVOZt{B+>{lD3Vq)sfN9qopIs_kq(NWqFaPplJ4!T1W8e%+9v~SUF&(IVvb~@U> z2VU58WZ{X+#>;W#X#B4%Wz_*>^3l)wI^Q?2$=uqW7dLH)?vVl&+QG_P4=INZ9@x8Q zVf)<7_$VFSfr~?^05z*{UjzG`+q(O|X%ISf*IB{&zMzMV=Y> zbhB;UlaE6s`<~P!#MWk(bTUh8#?CJ!`kAQIuof&w6D{dx0`;yw)N_#H$I7$nlni;XscjtlnI<7PJ8_?D-%T176i}25o9AR3?$U(DY zvZ7VsS$VGrls~W|4=qoj18S52>)inLn(l*8K^)S$SW9x4etaPau` z_eNiFX6>Rpu_64R8Xbfve_?D$#Hm*xzh2RWI5qXDAlaeg2^z<{qevZ7x;} zTl!})jK{n;9-H^JWD!$&0FV)shd`6BV1(j_mhu35L25}4^y;B-bBs7BuUs6fylL*l ztrOp3`rxbaDRgmCa(QSSAMt^fk)zW)^&oG=8&T zD58VdCCB#hSVeDkBoIav^xw)*oMQHS2nMkqEj~2w2eBqmoTwfFRl0=r05TRw3JB96 zr%~YnAENKI+ylk}u+Xmw-vK6adFkTV`mc|^cjcD8zhT1uTJse8W1#CJVUETYvzVig zeET73@!=#_Y_%i&OdZakw;RVAu^^dp8DiZb9=|d=(&x+t$)gmBRu%b{Ra)^xCDXez%h<`*#+9k5x<<@VbUrNWX~=0aNE z&eQr^crnbw7xDTg%l|++aB(c|4gsC>IL9`%K>=@bg6T~82W#ZdF(S zL`8|Y5M`*uZYZ$QPXV};DqbC`KVbgblI9FIcAyZ{u10klw~VO_6s|2HW68Kj`<{r@ zd~y5}>2ODS?zuNrgj1n*vAwxA@!It_vhVp$t(vNAbB}Zkx*Kl^?DqE^sJiKwI$sxY zSGk2gq918*N;OnR|G%Uk>GSkeG11Ci#BJ>fH@+~G|W%gB)j?I1t0Fy)RBiX8>W z`3bZlLy&T34s3}b)*rwr3W4&h!P$U>JDSo!JF;{oHQt~ghK`+8Y`i^3WVYTzCS~FnqK$N~%TO$n{C9QmoN zHX4F@Y35aII!0^5R5tSHix0B?1O!5acX4Mt)&Plc1~|PE*Cdi01Dqa=WGox^7(yZL zx7SquH51FT>z^oKeY0QUl5sw5qzI@w${`F2KfFxDW32d$jH@98ibaYV7IKFf83ORK zz=cr3Jf^3S1akswm?m(z*w)EsFxzYfZ5Wsk_0?OQ!SeHvV>$OXh`%IDU#6o5xgJaGXv_8KSg!GNRQs^>@ zn^^GJT^`EMFzLg3Eg*j5#?A$s9cO^oKpn?-{a4to|K|FKl?i>{|5pKP9HTxo9|8_f zs>U)Tg(taR(S@oxyQCmjf-JQC4oKRi%ILy^APNpY1s|X->GA_0*v!GuZ5oGY0VQ-c z8%P`s3anX<)|P=Z%Nt|)9c=9YGTimxaDkJC8KLcOxyuy)Pd;XaZ1svd$OTb)#9uh$%!TB@DJIr3fsqO2Te?NJzyB%EHVhYvLwG>16~x?Cha1xv29n9)7FthWK=0}1*2 zUx^-^@gAMnb_{geAmQ%6uRQ%BPI;-4I8Zx%E4-(c7K%%RB0oDpF^xR0^UnHNOt z8~oIxeaJMkwuCofQN~5(sjf~$BXp%PB`97ys{D+7E1?ykMDg+5HuTW`MK>XaZ71{H z=b&4E1+X16(r(%`lb3e#3zo)aG2knpaOjMg!2ghY-#^8X- zQDe*XSSK0QG*Wdum;_EZFv9_$r`Xjy5akg?2j`;XamAeJfy3f*g}MX!(>2@vFi zTN(-=4KqNf6CA%$^M8=rAjWS&+6^qQU$0PgLbReh3sVS`niyn%D%7#Hwjvpz)+8S2E?e3IFXWa8$|$j0TZQoukqvs$`BJ z1j*VofvVEYsVd#Tcmq}gM7M{rKY3TINE*a=a#M&d$o_iffSTcW?yb#{_X-eb6eLDN z73@On24!uQ>oSL^*$UUCMXv*o02Q+t#idF3)S#_2x23UC!0r&w>lC*Y99FAc%cT zPqUyoss+h2CyJ!sTthEeQP1XsLZ#iIO;Df3N?_JMWts7ISLSD9k8xJ6sMovIt;5aM&S07-cdUWis}Q z40nRO2gJvX4%;ZkkRK-Lnex|plvn|~d0u(bDiU(M=mVpc` zizIW!Jx1F_ToqIqQhd(==&k-k&Aq$O1$(FXYcu3qel;ru$=`;`ABfwAf%JY%`)00B z_6?yBtNt)=$pJwj%hcY5JxOeib*TKQywcaw7*%c5ZIP7XT-KwzpWP)^N4>j>xyY$ z!{b0eqV$^D?k{2ttpD&?r~3m*6VWRzM^Z)?m3Hn@Vs6Ab(Tt!QDFB(3s#() zZZ?~~;N!x7TqfpD#Ry`IqUesAad z+FsBk+88Fc!}#6eEIL=Y@e*_rVZM!5Fz=(k7ev7=Sqji%WaZRAvnT~<@zba*Zp!?b ze;(OdZ9w>GK9b}sUi&dx(%lEU`n{JyA7*F$wdp9L?HX#BCGtdM@qhWS%JV0+Zyf`%6jwBm&4lV@esA&V4a0%*sXOtc3 zeeLwl7loA%kN;vU8E(%kF1pA3y?yh0jvt@t*R(rdHlFr#2jp)gt?TKvN95$);)i=; z?Y6+KzIb^!o@k$F%glrZ0%sp-uW8}eYr5lRFt8Aq;&~|r!BN!s!c(>7WikN*2vHV8 zZ7C=rW#Me@=CqS-pe_?bNLWQSq@E-qGkNOITAx_bs)3Icc(k{wB7#0ZZWnq4Qp8k^ zpyrP{C_o%c6X?ZPS^duY5!>EmTN@OQFMUE=JTP}^T067y!14Vzi#v~`@4j<>9DP34 z|L>9hk>TV}!;w8FTH-Ii$a!UcE6w4noI)Aw``e#PR!Kw(RKq??qF0qbt^~Vvm1WJ* z))eTk93N0U;*sc1CL;l)KWlvgpH*Hi3FU3&ZE2X54R!QkK!G_WCw&$uQwU8>%bZ(W zMEa@Km)>U{oFVMu!$ab87axd+w|6ZZKen@LdpQ2UMST^ovG27D32L=n7Lg4;`Z(+kgz(7s zw%KH`sgg^gQqbRlvO}E`rh!_v*|3n{Sr#bf0 zz6qsYIku;JParTo!PgRn;U27|8;#~P;r*Hu7}JE`ZYLv*D?unUaNkTfExH>G(qLsYtcVX7+w?)soL~MtrXfl~=V#TQW_}V~)Q>N{0ng zK#ZJy8%E?YeM!olc4l`N)dQx;Gf$w4*g<$x(R&5F2wk$s(uTLmkwpIbL5&U~Y&G z7a1bQ1>et-Gc zlXdl9FGzKuLC)OvoaE#iAvqZp^$FpvPu2Kb+2&mx@LC);6_sYF<^$yn?tVliu}MfX zA`z;1NNg^&xZ&|g1ZsFZku2u?A^A_kAPxp8q(~_W+A>u-iIfshfULj^$zY-7iZaRf z4Dm({@NL5*jMJJeZ)Y`p^2Sdp+xZdtv8TsBdFJ#m2 zMv>F3tNhMpwCZYz^^K0LbZWd=$?5~nkzEkg7pXbdp83PYn{!<{-OF|hXAGj2hLs48 zJ#;xy=kqFr8KA8K%s`I99%dlf%P29XGlR?2Nfcu_%mAKd6k{cZSf7SjTvb)oS_QKS znJB<7(bJ4Yz>J*{bRc!0g%G>Z<)AF!m=MF_)2hk9f0DZVYlj)&%w1s)B?!}YJe^ZI6ffVf;@aSruh75 zp=@-k#vh1-Z_^3#hc0RD!Jq?VzQMsDGV8ryL_%wpR2uKfeuMN}C5?H%WiX_?`ni5({o zRnIn0vOaA`#rMDOv96K#QE#^SFEE9BKDD%GxnihhWJH^khbKGq4sBlt%`}{;`xP!w zzfb|YYMbznm$lB0utJ0|bgs71InpWnz*z<#!~@P150aNbXqljT4iTA%X!pB8-{^-$ z?zf!_;5q^ojI+$4fCX;3T&IH37Vro7F;pLU-E-#8wxo5(VwIJFKx|tKod>5UC(wG3 z*pS=Pykw%Xp%QBls0dWVBjIp3Pyx%Xzo$H6kEi++{r`*bcqn#$-D`1gb4^WiRNBt| zpZL($7G|irIT~%AWB*tD@zxiKTUY(q^)4L!A@L5)-PzPoUxu8%gUSdf6g-H($u<|< zKP2kGK1%i#JVC4$*;i13>MDyUV=MX<^jnv*H3SPEr|2*7mD^pE{McxoVxuYG`(l2b z_Sg&kbqsW>uoE|V_k!1Ef!vlz#O)S@$Pf>DaKn)pLo3UnBf|k7MBzdvo6aoTCA3qR zi>&*~?0~WhpbWZ=QZo5RHdZG7Romi;0qscGd3BwRtu$>8>~=NH^ljs(R@os}rlRAXr4x@)(4_wQd-D&S)deq*rTmSxpSLZZ92i*bZflM=gRuft!{#&7>#DpfDfE&ECu7S`)!DXkOL6Vc}lca z{0Tl_;gG_Im$c@pszAW$tm>%(-F7>0fw1uE;Tc5(l>zifb^4utDmk+H&{k!bizMW$ zK>1&INa4A*#qrLy=h(@uq`1PL$xU;H^2J&kV2y=29CU;Ie?4fFS8U z{KesB7GSBd1*4XH53Cd6rl@|>hT3^=Wx-uQ8w$dpCiM&Y$4*RaF(lfRDmrEWo6+qEQ5x> zz(({7m$o)h!4ykcS3^Tp)zPIRhY##q+_Q7X{Ot79#2C2zdI+J`(AG|6~rdx^+a7(fAg)JIawAI{lJgK)`zODu2 z`i0szxRC&^7lwuRUg=4Oz_4q?q`PoxK-&hLiNV$yIWH`X#;T+5UiSX9?EpmUtZ z(=gn?^5>*)ngJS&$13V8>T9B&a!+|<%Fs2Cvk{Dex1w4OfmEx^~n$8LcMVOIFWQ=N$_S=JTM5F(`>yX2vm zDWng3O96wl0)JH}P6~n{4Z+iZ&+QDM7)oCDyU>C(EJOJW(cc`%NpCVm;aCV=5N2nl zrzSPxh9zf$@@$lAfkRPI9trqd)YQz82qUD5yc*xcHpa!z@~QwZQ#VAOeKWcJv9bht zADr(<&&?$nu>6&@rNv8Qp6%oF2Oc`y`Q!cH?e9tt^L;Hn{*~0+>;XA`aJ46$N{Ocd zGMA>gkY8IJ@85aD?8)2KuZmK-XL_hJ=UqJ3vNE$vIaBt1E7dNG#-Uh;;Zsif!qu6fHG4& zppeLwNA_~j8HVvFTpZnC23l-=qHX8gVTX*Cxl>HlJZ$i{4)=6V@io!ypl^75IL^f1BRqNq+~j3qw(Bs;*s-S+cxyI<`)tBF zCz7JPumLVH8prc;K;#TW4`P2FPuN42j$YWX$xzEEVDcRfM~{OVvS4eI9gXZkD9P9Y z^j<7_DpkK7?aU=6)j~KZ6>N#5w)+w&6pLlVmwrEfWO`Wo=EbpZ%%3^9Yjk4gk^Apo zZfR{z^)~)nqPJmq_KNt*s}H{KN6iyc2gToDCyEa>pIp3YsOgTQ$L@3w_`<)5RnHB- zzW)tOCnJc(W#kuzg+ILlPV!o(&G3dtXkRL{FVQDbqCSyGCfI;bc8lPxaoRl8al;`y zAx5f4_afiyGhimwX!V8KT2z6s-Myt*EE6Ct7YGD~13J?}cW1hVi>^7$0Aofds_FWL zD5=b-xO;1&Y-ZNOkG3dKB(Om+gaaHFb_t)*+;c;jzSb(QJ=^;i6(WM$Mi&$EOt{%t z;EC$)5J(lM%!EP?PJwt4NT@#IKFcxGQH6-AP~c{3b6AI?@E{V2?1})&1=|iym#G7A zyfKLgLlYSfwU&Ig%`90m7&?>$gLnbBRdSQkjmXT6jPmbaiN33D=h(JmS6|O0tsEvJ zV)Q^$vVN*-y43Fd)k_8kr|Pe|Sr+K-uIX)yH|9kD%zSEaYA{uFLr?m~I@+80uKv1m z3X9-ElxJQ%t2ui*+7k^PJLz4Dx@nNF>~YGp1PIx9&iWvFTwTIhFe&&EYL#5)S)LG} zQ6v1PApIId*qa*~JX!>}W{G(O7dT^4U5;XN%*c`a8%#!&U)$i0tH@bWCZhPuFyeV-m+2?L?MnZ4K5el9UqjB`i)c6?E#faCpwWb`T?2c_o&Z85OM9eN^y=yj2nqJ@#9b=gBMyA&ou`N9fB7%*6FWQP z(8cl3G#}k|qJMN^;gqiJ`Vv1H2p;Ka9~hlJxO8ya>e{q8AbNgpsv&Csz^|GoW)F-1 zO}bA?^-mlay8i=7@s4Gt{v!WRdIa}+ug%^)IyAXYzbNEq*+r2N-mH00_YSwXybP6w zx@82mSKJcRq7AmHDx)PE`Wk>?gHEWlYC{1SGDWy5a=>k^1OE!$Cvg;Tv9Xo`0AAyk z$T+}nkG6!AC_}LYT@Hx=M?dt!LKX;!lv&vl4x+A-@5>o?pwY--b zH$kY;h$_qo@6kN)pW}74VJ~7)`p)XZjzTyTv=s1T+zNJ>LH_`>6{<|Q83JG_upc?< z4{+kJF4vok%^QYHHTKwy1D(f50Qf))v>MuJ*k_cfPMY@_?}k`pfAvFZ6t9OVQj8?W z*mj?0TshlMNA})kl3>^`O;J~&wVy~I%Mq#^Id9s6V9)7q-;`ncp+bZmDs z*&Y+iwZN{Ovv7!$0M7)yqL*M0MAEh!y`Bq6f%)>Ju zTjR!=vOH;d2+?rJy~EK_mS{v@$fOeyusj(XkT*Ic?5O1Icrf0;et+n@@dJ}%V#md? zVBIIe&8^j~gH!wOGA#J-w5&IL@CRAb{iD_84|pr;8>@qvx^zQIzHo$_@IUC86uo*( zMg9%@a=$PkJgmW5&h+sMtjsBTjSDPg1DCUius=CEDi913c{qglgRLW(uB{XU{1toJ z@*u7&*ya-fbkZH{Z{}JgWzoNRVj**}$i8D5*zj|he57A9`K&+1@2?M|iQK7){$n)< z?=~rtK+u^J*wv45fkksx;zv_`o#~@lE#i;V#4U1Tidp_JlUqi33w8{m4Yf5Pkdx~> zriXS4a`LRo$VNB6f>I#`ZHaN2N&GScHU`2ISLh-qZcY@e$#&FRZ8Fj_2!tV-KI#R9 zON^@DgGs{2WQCV2gU`3O`R#@KK35K}D_`-CSXI35@I5Apg+rdo5X$2<@yjTWH=Q|@ zt~RV>B^9cyuK?WaPjj{M*S@XGX^1YccBWy2U|%r=g$fxWCd6%pMx4OivnCaE&a&>I zMDC%n)x;HYj+wOdk*q{*li{@YvLhMR9@&B}c!N-Mpq~m_cAm(DhHlq{MopC1bR`A% zA4kOPe>WfmRTUM*h4;~Kh{+v~DCe{CD~}IGA-{*2{NAi1SHFdQM(*IC@EXnA z-Puk)HXK5ik-JMndPI%M96`qQhCPN3f!zON+}9TT73WnbKE(PoM1}thMvz_RMiQJn zoqZ)6A+}lX{o;la$MT^>H*Um-*N^Z6`g(Hdmd20WZ<1G~tC@Iq*S?hl@>yKC!82Kb zReFbcXE7sSbA}ztIi#oj(`b{{*VTz8s0hFqAqh}vLYY$~sUD=n#g1x8r|dpYZnH>k zv)wMOB54Jq+>6a-ibxC^gDIs2R48;{$yqEz5sQH0pL3A+gZ4&LvY&uN!*tP7$xQaZ zGTMq1*`9@=-x6Dq#pfA7BBP&Rx%%RGtig=-+j*gC@fMSW-2wUd0*@BgT^%tW=Ql(q zXLc-HTHJo*rBbhaXxlx&bQDh##CYZ2Jrvd~%V6|8#R`<0qBV0kriY;i=6M~)vmdT{^Z?m1>0gKfVv z9@e8G%&|4Kj4U`Xsiq7OVO`gfBSu1j5=zTtY<H<*hEJdopbL&7t zo)DS9#}ExS$i(5eu#2@5f1obFrN-rtU>!WsL=p9X@Cv)q$h|ax@VcrZ97G>aM2-Mw zXB|AtV7}@y1bCH6iiNC^eqkWhJZp|2SuJ@N@x9<5c+(H#OY_73YD&Ibu6XGVlSJdI z=FAImwI_elJTbFh?8{|ezA-kN6>L*~%$#@OpuYr!YJ+C#7v810T3eEhRpqKmm_I^! z_305-vR4e*qLU446+-=K(6^1Wm|KS1Z3_SQ;h!n?%EPlI2U~|B{_peo`h7U--JO)N zMNNIEnUKE-wz8sni$Xy`0g7UaiLdnK|a&;3h$b#_qtJ3U$QhO%3CoqE8q zioahciogi3y^g_x|MsU$d@L70xsvaUZ@c|CH;8}QG$=B>Fe3foYafutrI!n>!aFrr zV*+ssPmU%LrDX^?(7h`|^~&nm99`lGJF)~}@Fj8{{CfS+l3A!f%a{|hk7+H1Pk`Z6 zK)o8~SwP@bFrLL}c83xzLG(2aIMf;lj1f?(bT%tg7KxzZV#bd{!7r#`*2oR4MdE8= z27jccA)K!5Z~YmuL{)|&(fVjj>J+Dkdf#oK@^IQ$;~%L{)V%XFk>9{{drdOt&G;_7 z1)(e;^W;B+Jeq}!@Ex@0Y$}TYEo5|Y?qE+yu1i4nLN@{b&phF?%-DzsL0XyL5MEV+9C=a?Jb$s z4AOXj3N!#HKm~nZu~&pJI2|f9@aUZAlOfE!Tts4o(Nj~%zWSCB+5J(Lloo@hNJN<2-|}b`}dkN-P%|g zh8?FL*lti|5XM~RH3m|b*~v(PAYV!)tEhx>GCHmk z-bxG-pAvqpxixgKZ>g%ZI}BRXVbqZ+c0yt(4!h!b5Lb>zMy3SjHkgP+*?Zn(W&;O+ z^LxT=(F54ImKm7M4U{b1{CQL5jn}5GV<;?qVU_*z0`QI5m%u_qrzR)BhQ_!G+7j^y zH`s%mZGx>pu!Px$*iF$jVH6dtoEvavF)m%px6{u&D1O1bEME)m8`916wJV&I&T61P zcERt^m&Z6D!?Vmr=PM*XgcZsNKhT^_sp@FNW;g0KL8gvsH`2$@C5i;)16}JRy^M@3 zEG*sx%uU5R_7l`r*dDbTO2}YT-*|%jv52K|KAug6VH4O_`7e?#&;2@!|xK4xg5|9ciaD& ziRz8OdjIMi)eGnP0M?_tkllg5W^Mq|J;Xk&3N6ChpG=fVMxF+dG1(`UykrReh2*M4zbW0gJiKoB!y=SG97so%P8#w=kx=|Q7ZxmnlCAwWd za<9p@dH<6BIbYTTQWPqOt1UDNFMAT?)J7bt4OPW~*j2a>bh0ZBo z?Bf5$VbH($N9o(rGlYMBRqRLl$MVwZ>T;h^Ree6YaQde{pnqyoxb$Q^!uBvNTRR$0 zs5U1Ng}{^`IssrYz#?!9vBBXWv-fv{K~O)*t@w8*K31=pu?)$382%?dHtC1K1+SSJ zrqJi=CP2aG>a?&~3l`t|CH}p?{+9Ch(ihMp5#-0`lRweF_-!A5diTtJwIcR3t5379 z|MrWv{rMmL4SaL}Aj>Y{G0oLp7xDu^ry8k%UK~P)LIh+e;na_>h^kLIzPYMT>~KFkiCdCV!OBj8gt7y87xbH?Sm2)uj+?c zE%;UfMpY2HXt;1Xwm3=tco^{MbR?3VO#>cDv{}H&BURAe7HN&NCgL2i!$=p31amFo zHJV-MC(OtLnkB5Kb0x2-r8YS9O{p3A|&)f9cQZdYcjcyROTKs|jZ zD@@&Fymcr{l-!<8vVKQw*D@1j<6Ub@4A{52YuB$H{P5C!n{C@a`pMg+JC5b{El*pW z!|Aqz*!i|6YDB|7N+BA{?;)@`!x+xqM92rwO=LJlT7q3gcp7(6?osPg$Vn04xvm!F z9rT|>fRr_ECAilK4xrUpQq3EPQ!+pO%ktRM;+oFO{6+m(K7yQ+xc^U(6(NIznHkxy zB2H!=vLTGU2Z4lf;mxQ{j;e~`YIlLkLj~&=&Y`ZZ0Sh;1UnmCV2YU-no`Ma4vROFW z8W1}Ofo(7@e+b+KojSQ2)#^>aMNmF20rKP`lvrF6CMOOMWTwIk1;Sitg4OHf$yZ;? zB=lGwg|bOf`RvKNbh$kL$3tj%V(g4TBr)mYLg0#B zcMi17B4I zHK2|gp)Q0G8HQVBv>0LNeip0Ydnuc#vmPFOKmDyERvr^)v7vZot~?}uQ{PpO64Cec zuVN~t+pw{CHm;{bG70F-Iu4k6!`QL2K6JUOGv>)s9}MCo_-sD1-xR@z`kHh6P4tcrbV@qKcmE*e4$Vx5HcOM0;i~O zgB5d&*eR6PbH0&jd*ypa*>m~CVVwfnB))w9XLeBK+aXMNn<$2P7&^!>ESiBVfc=P6 z5riV)&I7E5n~sKsly!_iI-=TMjpw1?O%LZihtv$w132m(&_%S90)D=e(1VeZfH{(t z7%XPpA1XM8(kH*S{?9-9k#vP|t5knV-#o;wQbZf+X5;7ag_Y2;ox(dVCn`X(W2hpE z`oStzFG0zIUr`j0`an3uDT^%ch*RVM`IM}z;7Bn=LDBQ$1EU zjMTsC^pI`shS~WbY$Xu{Drd3KDCH6C#F3cgUjdmrSxg2$BEp^4!HkB*V`J&PyjiS6 zk)cJHeaMHj58>>okdUQkNsV(2uA7`Jd^11?YfI6eL`HsOt?eh-I8GiBi#Lpr&vW{o z`r^xf#ez3~M7LbYI1l%(;qd-3L>K{M-CHlWL|slsVo1Kp|E~smSy@?I8R~6-8Dj)3 zMGbU46BaJeMj$l;y@vFgwJ-j_LMqSrS$178EJQH0{3;h~(dk)qWrJ``RvzwH4NQxOPS!KH&;1GgHvh-IQ{y+_CY!WW7 z{6YDT!$&dt%f%al!3x~@jg34vlb7L=v#J-TjIRC|6=kphVuW90;x|n>t?zwM-xOyb z7j33|miQOBB$jB?RjueklIy<{)u=Dl)eFv}3qxu%C953kqT=!L6Z9Su^d3e;{a+@j~IID>-`d?NnV ztXya-G$J!~@u#Cr>z8G>QO5HjT@u7l6K(H%6H~jqW+!{qFeB#2GTF9HVN6)ojt;b? zk^$7~;Hq$`HqbqT1m?7#m{N-&MBJo&vvcn>9uufq7*}C$a#%_vi#uP;{I?&d-u)n zF2T_0ab-ooLrrg&UI7`n5r8~+B_6HPJ42FQh+->nf)cXU(6|*Dh-D+h6y<$G^d~HT zT+&<>bqGYHf-2yO#rkm@m_-g*Ye()Y2z&*Ub2Pf%b z4Ycb6_XaBy&DGrl$?AFgOK;%~54pj>5l}U#&A(Z5rBm_Ba&QA0Ol5UIa$pO>S^xkF z+ZX)s2sGuIcA-}WvEAmL%6kCrN^NazPi;>HR9ICC-pYP^*)LZLb&Qza5c2Y6R?!p=mNgwgz{^{FK-h}HoqPpX_8 zmvAcRqHL)NwUSfb1VdtEN#Lg>+aM!7Y^*eE*|zx7s-~f(%)p`cR($LFy*US8@05Q0 zu)Ah7?hH(~5nzPT@k&3!7Y+&sw7mc?G!iGT!!?gAuZ*>%&}f#1SLHOkfLz0H!dD_$ zftnkq)3w6MDS%W%b|9H3=N!5$O1PCXYS%x>IM}42r3?bcQ&A#x(wK@$_gr=x5=Qy2S7c7hJ85&6!!JAhFn&wSA^25~{}>GW{FgIN zMAbwMAQ?EcfA6k^ZF7WOr!utmG!R#eXGE_hV#T|RLN~|lr4t75WCy!^3vqTFn4%-B z^eRddm?x(EV*O240uq$8(?7(kTf0Vb6nkeLWEea5Z2v@i-<&~M*)ep28;9XNiH>(H>i_S1DndpX|459I_3Wor90JV$pdTq;SF+`gvqLfo4 zq->=^8ndLiMPkX1E3;;xWVqqdZcwIY(sUI6rcrS{pnrmigFd6XMR8lB{8iu)qSDj&%wu_fxKV+*FSI!c zlNk@i!wFQ|=K8~B%W5+)ZJ`Vk83=LXy;wmU0?Gj*4>*667%;~duJ}8b3Z$rN?PHDN zsjJ9)Q!wM6=99Zt!Gk$I_4Wj2HAVj7+}#}na0 zWug>7!3f+~vV{b{SMi@^F?}>Q$JOL^%c~yd-h+fx3a%Jc*RW#pX2DY^gqN`lrKhvZ z!GelZ1c~x@jmV7%%TKUOE?fi|3GZ!i3osq_4c64gP%v2X)EoTIh`_)=PBcutsYZnxn*1F}d2 zmqXbpB+MkiOWRM#=_1G$dY1YQ%iA-mOVVN!0zsoeBADr= z+kyIf#JLt@I;)V!a&wauhcH$q?=>@84%T%PH$HcCj_(Hv=63*(oHlV=9vVp&Gc^aA z#0Pno2;{@4Ns1c)zsEJ_=s;V#%9mxwMp}qv2}!ew0IkxZ0_yE1PFb_mziB8=380u7enHW={#yHEX>QOXOV&Ozt zu5AWqvfMLeS2|n?rQ6vUJEHnQJ9*Wp3!#i z5ih;oySnqxx$}p1b;pZ}v|4@*_j9i)G9TXk>>$wx|FdOo=4s z(z8U8%R@IRl5NN(;m(j{30Er>Ci%fP=vxsudni9=gT@Sa0*~6^F_xYyZ#*5d7xM;) zyX&uiy+2O&R1_?JsEh)WFw>_vB8~K)1{Qbc=q!-f7`HvYt3daFaMKnpeTMNOcV52m zM@{`>i+h*PE}hwvxT$?)eq#G4lu|C+U{mw{b5}p5RJ=|6Xsj{Ws3@az)B9T{%IkW% znp2ANp0Ky5t5(;(YPk9Ge`2v0L_zb+O^x+**N1{|;B`xT4B;xO*&|CExEcAJ3c!rV zExEje19v!_tFQ||A1sP`*BLaUwX8U4wW<6`P^9b!86-;V*6)Ye1qFoRch>LL+Ye?slv>bFDOkrjSXZ0M64E%QnvFGc#&9wQ#SiOb`{@2??bZLKxTNVPovYh+9P4YZ zO;!#@ruwvl_nta3QCaN3rc?4g#v&>KEaJHEZp}3a+pf&#Wha)T--j(P;h519!e{kR z^c>(evVrNO!U!hH7pft&WT<+KVf1G@ry@jLFoR_fa#Ij7YxhgH2xl_FH3E(go}1$4 zu$kK9dd`M|J~21`#qOOxm&bp@-D3?Uf*9L7hjv}K`W9}`WqEy1k2Vw&VWy6Ae&7;$ zw?s|9_lYmzp#* zFB?^YUW#FhD}E`6_%G#dcy$iy1g~Qf*pj(97H~<4%jO9w_Jv|W>x8Um5Exdn8uMOn z!|4#)yWW|kAmyd#z5J_!-yikwB#qe&2Xy!R?BvAo5E=`CMkiKJZD**}k`q~8J-r>G z9wKEpHoWSE`T#&}7Oyn4_?r~iO(7Z*fz~ypv3T)8M*P=xS$-a|-q88E8y@zBN85S| z?0@HU``CEk^vUG5q|Gtz-8nKjcj+GA((JxFv41Fm^IU57mRpx*wS1?lt$%DJx-ih# z(b^Cw4~mV|UGuvJ4xEZkP2GBmC)e#kwxRq8e0`K}DetM1$EKlSqvb9aZ7cKt4jEeu zjS&%6B_LSP>2n5s1PBYu4g|%}a0Se5;3RV*jVw69=;84IfzGPqA_1F(c$l~nQpzlw zZ2t?J&W0FDZngy>5D=HmQ`2_an?E&P1(+E-0v07-IkNG@+O8Kdr&7kZU?31$MR++H zVq36F5YFDbx=j2b+qZG8PoVr1II^h)5{DeHMrVYyDA%{5Ii-+mBF`$DU;NHAV2TOa zp|%S~R$~1&X`T`=H&32;=!Vz(Lt|UpuMghiJ2BUDuCW>!ocdSMwq5^fwyz9JSz8o}^FWg1WsWbh z+JkgI!JgAi4C6xQ0Nu02=dxIYWY6h?VHE)Fo3jdvOky5N<{Wc(7~E8k+$0HiZ#L%) zTBRI!|0Y&C0ri;?_f8W8zp=Wl)U`i+@Q$l*QBwDb?=|D{XS-^PT~@8FxAE)#+Lzgi zObX9~jGnH0ubo0Uv?7z7rvgPtAoZtf31B4@u_OLTxf`DV`T%61R*{8*)s|frLh|}o zptr+*<8}h05LGtjO+-c@SnbaipU^UmHfEgx)uc9JEzn=7*i7c}SfCnStZUd32n~gk z1T>E{FmugP51}SFVbkW<2D0DXLF{--ZjtX|ZBBIu1k#(Yc8o zo}6zAthpj8cAz~iu9O~}l;J@!;0I+%y}95dRr;|}tUg+y07t>_f*2(l*bO<&F-l6F zQr9zte^G|SxMuatsfuoWTM#0)xqOZx_yJjLKmO;{B`n*<`n69RD z-R-@f#nxcPQykYJ>_w{u&#rA_qpj2dAWNM*m2Dhs>IC2fD>c6tWx5xQo&X+?iu+L| z24#|BaK)f<*NjQ-2qqISq1aR^v_omV043E_Px#)c0P@Y{`QRm2BThor#ou*;~s zCWpmmlYP2NCvs2Ph`o5IWE4sbpSVp2$fLe0{~zQ66FKXWM~uu(9=@ zwcLpG`}vdbd(rr5G64Z50zd!6IB)(y1_nbF=@+8`r$U=!Mh!rIX-N(o=9!xLZsey8 z%bwwl3VCh_c#);GS(_{XAQceW5Y8e;VZ&4fYt6P>c(3MNm}k+u$_ksyNJe!dZUcCz zEM3A5mnFc;We*Cx&I4_16Ib2TPZn1r6hw}~NbAgwp}*rvVtTL+w~Rod2|=IT!tPzj zG8=I<@~~L`fS3Uou@KV}CHL;u0;JU7ffGn6pDnCNk3~xagvQh9LA^Nr`5$l{k`G$m zF%T`b=~D@vMv9qo_Gz~BPm3PSx3Y9_adxJMw!b?9)0?*c1Ui=#?0=Wvb_{&3fVInh zun?oq3~gi|$}FH&!lYFq%VlCD5{?*#w^lF>wsFXB3!USL6A9e;{_`8nqm5^$pdZ4c zhMA}zih|j!FG7JE9E{VR)2D7&K6d2LfqlDoZbJh-q%;OIy&Y}YV^YrToa;O$TU>1O zQL?>p)1$QE@@G%k^XIm5%1UmB{KH2Gl_}vzn!B&Jv$ej?V{=g8oHhe^3p}!i^A@0y zs^=W)?-12N!#$po6hUQD76yU@|f;pNNH|50p0R^ET%^df(Wc- zsY$G{TOPcf5~e0W{5Ft5e+tIoPYN*?yv^8O3?fZQ@k*V>QWw%hd-rs%`{~vD*RM$j}m3S!}t50y&6k4$4{PEU0FVUY>5=hb|hnX^CgyX zrhFPhC0X-nxOcPpG=ns1t9qo2T{|p&ZHCP%@6YDhl1t@N`zX&g)L41$@S%%a*r59c zFLgHVpE>vZYi-*tskeZ8B+gQAvUha#^x=(n?#Rwd_5EX$l#1igf_Gu_+E5tqkt+za z1$|kB4w@-A$xOY3VkC4=fCB&<(yOrcy+}BqWQgKA@-iyZ>0dKnCCagAhFkKTvGJdnKF0W`uvz!)E3v6;e5L z)PMmmIT3(lh$>)_ybgjLK-xY5y)Q~lMieF) z`XR+#8tC4(168_(d#1BDT%`lwuf0(sbXT)*tL8*yir154BLX{|D5JY4!AU3%%Grki zF%j&`DBM7|Yes_t5^B^Fb7DC5nB|EjEsSMr7QlUzh}Bl3NCZS>)Iyf|7}g?{0z@X_ zZW3T^q52PjQ+sxBdfScX_s41~5} zTV2zD@r~TLUg4FRtF0A1gHWkr5TvAW4$zN}M;2AO(10icNda~Xbc^0MGs};X21Nv8 zgDyJ6`ZO3)U|9Bg(9VD$M$FgBC+f}mT6sLO9NKQ=P9TQgT5Q4t6La?;x@b^T9++4e zYxN)@vUaV&;Ojej`mjz=IksbA_^@8W!riF}h-Ff2)jZ?FJ>V~fH^s0J+@zCT5{QhT zEs&*BUFVP)mw;eEQJRC=sE8o;%bIlA_CSV72ipyaz3f;VKZo-eiu|@P0VUgjrsosj zHxMC(PiDMD!A#7q%l#n1@D`91rlRVm{oy*%8yKY8CZa3Sb^ldn?wpPk2Cc zrIK}#FycN&kzoqOx=sWwK-h*2Oejsd0B9Y-btqUUkxFID3x^DCG1XIfXK>I1l=jy`Srl>FTJ%1AdzU?ftu7D ze3B4Ra2m!5?S_rf7)drTwA*IoOhu(IAz9m%NWUn037o%Q9o=IV$W24C=qaC~GN)1b zB_*`~>ST*aJd27H2)6Cu^-huibdW+!`8C2m^lWs2AiA}sKA;-)xik23uS-A+JCERZ zdKif_9bs~>6rY4{&$!i54s?#fRVYnBI)apCz>abiaWx3Vz>0Qf@XsD-%j=xXIt@%R zx{P=3;4IDqtf;6l9s!IAMZJty!Gwn3@cmrcA+kX`W8J@_C`-<2X8j6ckC}>ozpFFX zD)l8Qj4tfWl@YDKQI1)vfu$k60{Hf#wMB<+vKA2ub=N+suS_Fa%6?08E$q;Gx|?!q zvlGBWKbD1*tKCQUlurn{eL-3aK-FL+VT}T`Mggo{fa)(0to1k%jG;9OQAv@w8aCEw z5B?d94Kj@E7dWqVMnuSXuUT?-06b&)A{HSF>q|xsPd?MIY^D_!jJC5I<&v0dzSX4@ z-^M}PA9_(MxZclt#z_aZvXYVzy7oiqlR(8dL4Nut91|1l?;{?XB&wh)D*}>_a54G+ zW;d`g<*>e>qGa1S3A&lzw;WGJS7f76KME)eu1B~)>_P@8$^0zBl>o59JVW8U{@60q zJ$uT&3a~i%BVq2k+S;MELlsm@9F8Cs#gIlilZze&QJV%T7;_zSWl~M}-^{^eMb_mN zA3W9A+jF2#T)A>_qI0o-+I_0?3j@9`1QoZv``DMe|N8uanH>jCF5WBtYJRA4Dv=uO zzj0vgy}Rcox@*cO;xDgtrUqiohxb%8rSDJOJ+nM`_`vAi`FIUXPtsL&OjivFdxVc@ z&iT>)Ol=^`r9Db&8hf9-MW^KDO3Fb808nPuq6&Ys(ZOKO;{QwCcL&B*9RJV0cU7l; z>h(^iu2b**)NM<)Euz^qmDI^3F z@agxNeeYefY#@L9zJX-CPxp5B?aa>3&hF06#9CAy06729gcLM}I4PsPRUNRM2``RK zbzUa)`q+^dM^ttfrfPzT&14VCU2q#?B2( z5s|6Uvi_v9LpGhiWTauhV(+T$W5@AKeHHg^FjF*(xx4DhO7jxUJWcSPP!m=Hc1)hU zb;nWBHu6krmNO|NO~}+d4mTT_=0=nd%{00pSQ`B#qpwU=%l>6~3HqOZSu+wf+WlR= zj9pIE#+;(#e1Ni14VHUA8Mw>doGWiZ^Pw$lI}C>u2WOGcwA7r+!%!}eq|MEgtZ+^E z)q`_4I_-gu9x@s$;D!kw3smYS#_z-6{C;s=u<&y%J6(PTN|Hig;7Ldx-YVHqx8XfiyMhvhx; zC}6$=Zp4Gxd5oU>j0WoA>`jG|^1=MR5)aa>wKNp4b0UO~?3 z8Tls_ZSGs&I&VSi(%!sOO_Hl0NCtDkYs8iJ)+8zhhc&@_w4%mhxe0~RN;p*ot5})S z9PzMPaaeJaOfs2W%HIi_A-?PJJL{OSN-T!v0m{ZjmcsrHd`n1|aGDGCTvx73m)i+E z1s+VHG{b~Q)mbihPVJeB)0CfT?pzHou2T-g?a?RFpXpOxt|U|`wb2>(H&lBPO$Mnd z`J^8cItOpDDh}9>fK+hHpi?MT!xhFS`UF=A3OQJAOzaO4{r(_A>&7%EfF5s(ImfZt9VEew2-;?urALCr_TJYgt30MAx#0 zdfDSdeKq1kWF(q3Ei39byD=)uS&fDU%!dy!iIUquF>p$$X$#tD<%_c+OZJATN+?DN zIYMOtZ4`&f>Khwy(x{^ErueF?g9rE&#eIzkL-vg&gJWObFUhjYv7b2D-_?PYc_~!9 z%tUshLacB|Ew5Rcv}iV2Dd~vs8ah2l*YrMCvE_Y`XoU~I3-A1f6-7-qL*;X(6qLj} zo1BGB`9(A8Tgx(PM`j$_)7j!S7Y(*QR{PL8R{z!wEH^<$4mTAIbf)(g7O#iMc*j=h zac31}d3=@b*5P7r_4=7jqvgr*H3iO`t;I+6tz=Db{Y)z#I=y%@#nCcaQ{1%B z6L>sKzfT>l>Y6p!?5PXW>pwO1)fQLI?<%l~m@p0h;c1@gXTHR~zT3~u3GS2RbvvlP+@xA~yPqHKPo zS&U-kqdc|m36UsbH%$v|wd{Lhu%owL`E1HHeg8yU$GpYs*O<dFjn%@ zbyaNEKmZ-Bs((|GBZ%8v6UTg1B6JAI?`2Uqv`)-OMC>AclS-=kHo&0qYcd#FoP zH3wd3Z)$HVYITjxo+v9gc`NK!uu1)uX%tu{QW|AbAH5GwYi{xuyEB~*HO6r2QI9c= z!%dvQ!QB-6P^rAT0lys>)G;v@tgP8%a;(_|^y6?EVptpUgj0)`6l1kOr8!U?(FOUY z2{_vV2Yn6{b$t7xn0pFya*~sB`f{*O-UbUQxc)&PR;-V3yp)udoK{kRla%xd0oH_W z!MhyV4Yndl;bsr09d!Q#4H6D83ar5`l1QSfR|Ts22NusAZjG7Q+&_EYI`qKfUwo-3 zPaNM_zk2SmaTgvkI2hR<@OD(YCB3JvYDQ9R$KtKrFJGXCehw*n-n0#CGiJ2soD|(h z?A833ASag7sBdPGD>sX|(PkTh6`a9h>=Fe0XjSa!2HP^6HQAiD5uLxv9oYKADlt2f z!(tE0Vb*j{N$|4Alzisx-84M0a`>>m(F1Z@s_ooUPrWcV@Fwmqahdy#h4L%8|OyxdQ633 ze+)|2XeI3sgLXb%F={wixwQZIi!2Pj`xkvx5shRgwpIjC4z)H4HK|sWWM#3e$ns^u zing}eTT$f6&&|Q1c5-4uoFOw3xJS)WW+2#1nv;(iO7ytu@P)ve6~=}i*xAY#BZ3;3 z)U>&uFBIA8t+xg~XnCxqCehY8t*dfi!EX=$9m|&Lt=aL3ohftL23EAy*0wI4w?^rE zytrcX7ms!hbp?(Z#KNzyzOr?mYSZOST0*PU6u9~9g37sljnfmIBMl)&nEbb*8G1V5 z8o8R*?kdemcftk$Jdgvry0Dv!%^P|2uitsMS=kq|j0GbN0P-Lwp{+p>=~*K)Ai6eu z?^kD5Ct>TMv9Lf!*KP=Dq*4{YwhcT!n46lVM@Q*XfcKU)(Fz6Pp4t6<^B1-EEDF5U z(%#_9&Io)UlC53y%4<(tyzqqD@_Fl(Mc22rcQv=PwTj!ihPnz@9(_mJ54WCJ;GAAF zymZM(&2(qMiCbZKWX4$jw`q-(w>g+q%4jCN>5HA#(NJAlnCnpOEO2>;5wU@QxgD5e z6CT@_e7qtk256d0Hpp9!4H0X#NO>D+-Q570X+rc;R=1|EVXCq?^R_umh(^sK_n^h2 zz6yz(RbE~`vwY^ra9>Yrb6rhR3J6^YIV%mjqvfpmK*Zlq>at*t>I?PGK)bIaC~*Vk zDLY1aFera}`VzZBy~NV@7^fk98}{q5XG3B*b5>Sl-^r=+Xk`Yvj^i$8Amo(K*I89s z1RF|cETY15d~?%T=p>k<=&Wd$;rgu0Ah8e)9(>rC*_f1-oXd>JzBG#tM2jFJh6&&h zJNl=@n%QxF|DjSE`$oZ(Yn0^&WXjG32^X+Xp5GZ{O)YNd0Pus&8+=HY)2sKp;iXsl zwP%wI7h>JP(hav1wG}D6COK4yqnKr|xt9LxHP$VH-(af(lT5@_IA~^G!WKi1U^m08 z92_h+GHQ{5B6IK823~#UrKZNmr zb+0z*BLqbXi%W~4`71X+y>i38k6F|I0t)~|xovCL9rNcN;>n&{1NB}kd;h(yB45+z zq2;H=y~p?1mA?1qjSqV&HC-NK9@n&BUkk=brc82S##4PU%@xHtnNExJo5tiVV~q+i zb8wg)!$)s1Drkb+bl4z+%58~MtXM=~2Eh`ZRWK8Rw!z_D3}nSYOEJN#gQYOeRTdN9 zPz)ukT8swmV^PKSZyt9+f!m#x<@UKTPqoAUVr@+sM{g*|a%H(-&|VA`EHlEBEKZ{i z&?P*589RAVonv~!*u>lSR%AD+Z-ut>UJdK6A!8qJ(Ukr6^pL)>7v6nxT&U-w`)qJ1 zmx>681Cp|qeF}*CELyHvT=klp;Vp?Jv4liO2E>FX;9%})Z;llZx??Q$#`O8{# zs0R%;H;cdXJ=3Ggv**_`mun%heivl(ygVZ|*6hL>jmb4CogJi7Ic?wNmQ*qf-S!*l z&|I;v1t0ZHtdJ1#72}1?j38i9Lp>@Z#<|45JY5^-(D1`35FFTlZ*GTZN zK>|CIfWu@hE6H9|&qUCoWIY%pf~PVpTvkVMLl_-QN9lA(#m>@AK1XA%ryv6yV>6ah za1(>GVRl#S0FoR49kaWQXLlR#17o&lM?bM91c~5rZ+OXSV9)a$810~Cql&>VZek+e zzULF-n(B~aki^u)RPai|)Vu<#8c_6=cl?XJEO2VjIiqYAS{F&R;z_{*{+;~xEPb!V6ZB7;%>Gg z2pKrX!cz(&L}+UVjnQHyqv4XK9&H7tmsaqZF5M!F*m0wT+0w|3b!AeL!-3mdg-H-( z`MI#5fOg_cb|g9y?eG>77C9s|;1J3{sx?|@qu_>y^6Kuu6&k0-#U+au<=sJZOvh~I zGu#op+hDS<DcIkkov{Nd3nXYVk!0EavNR{+1@0tD6gmx z2XkRkKe*`DV~Lo9GOD@RAetum^(aU|+L`A5Hj4v{bWK~b?`MO0kdeS88Z{HFA|^qd z&cfdaO%iKr=Z!dNm?~qAjLy`8j&vDB{x>g}C7GWdlEF%H9o^wP_eW5gXYO1?kvPR? zFZHA*$673gr}-k5<_e2`NO$QunVBtGT4%FVhr{{k%+dKE)bsM3&b-<@1Q_6oN zzKcX+?E2}UJ5c*BVge~uYy{f7A-;Q*$$~f|Q0#i=8AjbAPLgLONOI4jkv^SMq>iUv z35sxN4JWibFCFW1c;J*50nbe~gIm5)Rq*9YJ_%_QQ*cODR!T~iHw&juC2*{Rh_2Zw znJJk?B|3+=Q_aSlA7T+h!;PBx-wpf|TX%tf4t9(b?|V!iLSicJus3LK~fPYPI6!>=K8OX4#4MRF#>#)mtSh1x zj5F=bKy$kh^9fIYTqu5iIjDb`TDLuo2i*Yu4i2AC)jy+m3QVi(1&{60{V^F+di z{?M_3xNFJ-gIR0T(~lh7HT+;td+95tOZn8`3SUvrjNqZchAEBkA#VRZh?ji;msfmq z+3@M1RfSi4aPS=~jHn7)oOXcF*}+k@F=vE#h4k(5-Md0NK8Ws%-2r#b%jkVcj8Rr1>G)9hJ0zUh&1xoYC7>pOGHx zu&VMNGY^Srlx$ON$y#?jGG$WTpXOPF-tVsx7^rqn_0 zimTUEDT6IUj3E}>KdddzH01VcpqPb@_FeYZ}LlKn8iyoU)>ZO65`IwK|@go67J_f{+emCl)&Hh8-to;(k}ZH zfS8qZ)%`^U@o^?&A=F5)&a*jS7XdHk2n4{A-{!D0+aszQCIeU%@%0d#xAQ{C*y;2& z;%5~bZQoQnvK+Q5u{BpoFfJ;EcW!q+gnf#1e=fHwH9J0S&oOuf7E)ZJEDnLfWxJ_h zYv=33n!oeTkyQ)C8T&5Hc_bvmwR9ZHQ)6<|@@`8r#TN|M}sql@z9h5*wY=q>(1ww?3)D-v7v167|@4GhwhgB0dW@VpY!y^1QlLOl#{Cr(EHCC1kt0 zDmgjSpT=ds2hgE5=zrJV&;4mKA`jPN_uedG%yKyvV}qmp$`EdhM zWE*R3FbcTmyie{i`A@@5OFjc67zJ> z#(_1%5IyLN>F%hjbthP?hB-qA?nc{8aWaZHBGiD-p(e&TObA7Xtye@+=WP+oGKf%K zLtxn|C1jEj8llZ7&KYpunhn9RsXS#xQH95SWjQ(Vu{lFIP)2%vnm=*e8o|CApB!gq zq^87X$7dJA*%(vK6Iz483{8u8rKyXd2@a-gp6H|cNTQl93$Dz*aBiq?tkm=G}$OExcl zwwN$vr!Ewk9cwm>(-KDsJb@+`fQ(SHwX3K>HCsl{Y_ygX6-&(_l2ppIf$cf#5|{ht zeY~~nAB9-A_0=`?tT5Q`pW>o>K!c7!KWOlm2P&SeY#Hnh<2{MHxd^ytP#-+q#k99n zRp!BMv#~Jg#bUxP;&GDz`){$l{}xNyf5%p!la)HAZv4=G;FY%Hv(YxJF&C{K(Ox4%JdLjJY zSnwtiH6is1Zj)+`n|Wm6IYFn-;T#8LipO`dp-lzj zZT3|EWGZgcrhE$w)qSEzn#JDVmXd@>_Cwj)L!4m%+ej8HA}p}&$0<^*kY3hID*Ot< z?8ah>VMPE3{RsLBPrJk+hBOar+Je&etqMbQhRO~j5J*HlY@_1CS5yVNGY4(T!RqmK zewQk20$6ZM;#Od9H!DsW%4T$Rz%sD9q8yv~c}dQKW#b9&t5jOLESmCI!ANNJm-{*+JSgu)Vw0D{Xx!X({V>lhePH#%^&mU35)urJ7(#O zdCo$6XcRSr0a8k)Rk0W5{LHK(_Q8BZt*;L*n6>e>4ZZE4g<_j#2JL_kV2>*;89TAC ziVgjhX!LwH+2a!8?6^soKye9l3gk|bu;3!0;k49>pkmgzO*ScilH>Un4~M5rk?OB-yVx~- zdFd+aR+?*M?GTgg+D&FFmJx{YjnFiP#>^f-V0LXbOS=&mpUQx)%iz-+0bO+u@vuOJ zjE{k~ZPbCaoXuipOSk>&imU{nwg*!kF8{*nX z#wMJm!EVQrBrC;_XVYmO=+a!2LE zsy0$pb>kEh9z$Y4a$8}nbPt|l<%zCQ3$D!45bgK}H#J*Dr8M5}v1Zd?jmQ*55QA}O^!vmv!>u+PI$&$Q)gXm{I& zO_)+T^FCK@nrgT(K%8U+rjQ7J1U1R3@B3qBfSBTqe?8nhOd=c(rvtl{mH3@E{tr+p zDnA$j?mkPCq`Q)2cL8i^u)gODFhSSBMQp7Ak*_cGagZCy2g*L}DD#82)kl?k_#F4d zqPs&fUpvc9OwD@c3ZHcD11G`DLoA@js=rfmKq3yie}I9OCI=d??y7K+j+7W+56#-f zDmu>EVrz6oV{Zhp*_>}Dc<)R9}mK*q&CFw%}p`tYkNGAu3H6Q1i z!zrL0`+&az(Kzyj(F3WO0b=;6q#->SBCz1Z{bki}0+FKJk(?A=B#){LH7h z-?Ea(;@HX1j&vLOOc&8DvGgr)GOuWH>2*pOymC-41p9H2TiGp-a|7l_m7CRVQ=a6W z>Itn!Oc&~>xtOP($NG4xbKJ$zq*XrxX_F}n-aD@LIlN^qIJm-5fw5X{z`9ozx-_oyeFt+&F@OvP;3F4>b5T z*LN1Y_&xmiJF-wzb{v1l#)8sCu{dwzII5ZHkWA1{(@bZC2!iu(heiF&7?|*sTbC6^25D$wP6rwI^g9nD^A?}I zxuL8u%NiV+&6uy*oI-B3IM_l88wm<;B-nY&1xMcqa*P#Ryaiz@Bf={-;{_W#eN*}9 zl9 zlIuV|-0CwXzX;;tpr`~YQE;z&KiyWX{B734&V&UWuoBo+d(s{Gfj!DQOs1dI^-Rmy z(54@>Nu{)BSxS5FXz$!vypbZO#HWXToD>5a-_Xe#4g;2fDhY_^d8aR?p%!5vV&Oni z-#TH3fmork3kdyOz=7ichk#B1e{a~xR@h;nnRl*ul8nazYxto6I}D5{&iSx`WyS{9 zeicO)2HzznCUzv^`VArp;@+$b>Ip}{$-$FMeV-3nl=SGUDN=HeWeS&pjgefZ{$$^H z&I<|iJ2aQRFKz8|xf?pdeFla}vd2$`AnP867vEcW8!+1KZ%LqG_=D{^72Y z!kk!#`Tt1vgXgN#tE+JT0J~Fiv*iG?Uq1v6?X*N`UTV_5zvlctVeLTFuFCKcY8aWc zt(4B;sI8QhbHjw3HVz*IeavvLQwk*vmOVjP&q^5IOJv0ZM+C-4-*m+N)x0KnxE%p?~@2%A=e|Ko^52!(g{mQ#>?%cNY+uZK7KZE z=g#)hy~=~S!^!)bLQ=j@VA{{FYPjrTpRh5z#MlF$3Tzm^D+-{7@6gV(FINUZgBbE5 zqKBiQ(p!|9ge^+mv2;TLYrXWYBBR2YB&pla=;f3ZSWVh5%+BMn^|m$89X3? zCynTW*m6Jw%Ka(`FE;K=hFud5;7UCuB`HM(DFwWPS=5N3WQAVJVJ3MGolin}d)UJ= zN;h9`)Ho-2`XGdW6v1$ z`RX1I9HA^e@4T%h)0SdazUZmTt+1u9TjD9o_s%R@)7IS3wXSUWjIreA#BIw~wR)#( zp0?Nr*}2LB(6F6m`G%|EWG_7}$&715xYDYc6fAae)S}1>YM_7?veN=;!W}OnbuNP= zc-$a@a~XM|on?zFFQw2G!zP1_Z3MDWi?f5_yz7h3md5@=kBIGzcbu6~?#=Ml|Dd98 z+2X_Jca+z39Dd%&fUoY+z|qRaAB&&VwYXB(b=G7Rd(xb3F=?LCl%%$tvb4_JCBC7h z@y)TPjIV90)A8j!f_oIiE`X%&r2BR?R87In?>a%zGj3j zSl~J~%G-SK1|4p6ji89ZAO=|JTTc1LS|Tfe3YD0M4dc#4z60FCd%MMjx)EU#+8bZw zmN(OiSY--vQmQt|;kPOac6RwbS~z79?oxL)(x_xz^mr#6lT}X}6t!Eswl%A8jg0s% zW%IiG<}GOQdK-`4+}-D^yC`tolj6i{>hcTC30*Z-aSw*y#Vbu2_7q1#thv-~Z=2QG zKR31^_SkzHN(Pycq;1K)3hM=_2s!w=FQ&1o(v_WPgEu?vHe@58+nPBflwsqH%PJ&d zG)m%*xPIT=!88p?CT$nDK3EvBWN@ct>Pn)DV)SEo#%4xu8lOHu>BxfEYspAUOY2IL z;dg7R3yUH0OA6gm+c#*h^R=$6g$aB<>xt|DHe?9)K;=!p=*+Hb?U_+m=4dHy9Ku$F zcYgQk*oL}+?gd9IEXc~v-+WPXt*`E^z;&;SP1n>Fr{>hx6*k+m-9zFX^ut*D?0#!r zZv7nJj8(RJ`^l^4HWt89H@bj_^5seox?mpt$`>=_>u#(m)XvWM2HF5TAR$t$v?Fm? z5dlVv$sEHD(6yUGheA4P?rV8NJrt-}`koD52=0rnhh?h?vh^G43$F#nRr53lwzv`0 z)zJcp2#XQi%7(YXsr}co--oCe;|08~k|qogsi+}csw~oyJym-ZqPsiQBOWruXKF{9 zIXPP4S6 zrZwbe78Z$0(b-zrnwgxOEo#R4XN*~!EYb4ya(OkgpY6O`YHQ$IEzu%Zv3#eanR!#; zVF58~Wie~qa>16OgD^ZS7UM3Xbn|FzNg}>AN~#AdsrRC~LVE8BFO5wk=_RtetD^yw zho4B#0sKTZ2Z?MPCGo^w{LQ4!O|I=;wK1u~WGfwL?j5Mgaweu^6%LfPI|f@v7pz{< z*5qqC_KbmUZQ|-a3Ixunu%{ofps~tP*wo>zYPD5baxUMM+69 z)^{0^r@{>-#mv(2CTkk+SJic?n*VhD3O6tGU_HCn|f1LbRN-DwQkP(jk6B(Rj)s?p}9T( z>!(9I?i}1QWqML-MP6(C$n@zcm4$;zgTrmD{o+H&oTrCoHg(RNxoYm5^+Q9WiF}|8 zaT8dB4c<(3D@<9p-kY4L@Rdv^dJcSjqz*$}#AzISkMJ=Tw$<5}Uo!kLYezrGBNTXV zojQ*%Q@+NKfJd3tVYvv09KM(moO*E-1a^c}ubJdD)@vT4q==CE)%C}3?c93Y=4~4{ zc3yhorEug9Je0m>_w=QM?H238RmUBQIjc}PV)ASCd~Dxk(BgX&;A$N>@BvSnahz)g z0@%-714S_fp<-ctt9g^w4twzyF+&gv0+}W_-{`n6Nl*s1KH~V&exgXU;Ige+V1e4_ zDb}PF29l+rNxG06EUv4}nVwNRudg62t1XLtK&lJd7EX^(o?hNF7SrN5y)+vx9UG=SRE*OrPW$J!$#4kl$Yon^)eU-=KFH6BMa1q zqHFLJat%o(;TB;n{oN&LS$W0f%1dcE-Luh}nkvvNR9za?`)aT%Gr{u{=pi@V(BWtn zJSn4LEASODTTmJ{?r_u+C*sU}^BCGmYVbokB|HVA#pT)u8`E5AX^BbdGAvb7bLDrB z!7r{D&xNnfFfQO}xhNNIkMcV6sr;4!P#_2q3aIMlmKh{XNLz999cVSYB zOWLby`aycLbS{7~j%9Xz8p{D@Vyng`Quz-uj9voVt}zZS6PJhso=!bVH^i(cAW`;u|& z30uqpqnCMEeZXFp^Q6SRPIuEA(cNpxbH=hVa-Eg+dbj^+Qxu}pra{#C^Z_6zIb#4^ za<4NfIL#G8OkhVH2c1)}f7EnWsG+MD2*WO7YV^4yvK?Uhi*+Vz6JV14U}Q*(WcJ`h zsAGLaPV{`(sWZF8*sGpM9y(`NeqN?CNjh8LKF-?@Ro>OLz&ly^+>TsPb9-bipG!lN zkIt76CM1h(|4Ba9B9T$HQ$_!>PwQTM4&bdOUvCY3i+o znwIA&aizAaNx+~gEo-Tol3&pVYE=~Gv?Q6%ZLu`ND4lV@RsHjULjkSWm6n)*%|ph5 zb<2E6d|cOu2_c$FCaGF70i{-wtZGW81*Yp!*+My>13Qz7JUIMd9axp@AK6%totMNG zT>{#n#zE5@P!qLQSNG+aZ6i$ug>vRoPj7Ls(y6t+qRQGbZHv+K8_@HgqBGJdpBjC2 zDGBkw1f36M59=zPyyR^LjR_D*(_n%m?0+W9=7~l$1Y983j8;j?^mGulP;XmcV{X>k zwoQv$W|TW}?J?O|z3p?Clnx7r*0#zv%lHjdCHPpEwPE^}M#T_Q8zhMjgQ@CeK6u8; z&&mX=z{`flDjrtm1U!nf8=wfD!M(>7Sowu?6St9-c?Watp?Z<9j6OGhGr{~%uhhtC z?2(`{%)kyTq6?D1N$k^b3QmfqfTYE*(@i~923wVwTcgO(2;!(Io=TQj8jFR|!qUdP z#)OCmuNC8-iky9YZaS*b3*RG0Zp>5fypC}+_1HouN1%8!Ff{` z2+Im}!&`xC&Wv!1R5zSqTsS47ksN8#II_arH3hDcJs#gYYB1^K@laB; zz@%2#jc>R&EmdLtjAeKsh8Q~;fiV&cl(9jjD$5X|UV&nU&FdA|yiT@ZycNQ5*TgS(^b1NGo0~pa=vAGR}85TwUV~kH13V)Hv?HrRF-d2NPsL) z&#b&~-mrNlyh?C$EH;HCz7pHeY-3=l^{25bbjz{8^(YP3rA;AGX{@^?y5okZtcEJN zMWTH^xnV+d(ypw`6d)c_CXHF~Tg<(NG8tLqK#2Jgfk1($NXIR5CN*%=#ixN>P?x%O zGq5~d!_ttUyhN^ZH)?ALeJ0gA7lIVSmRD3i(B6rNc+KzW$6V6Tu^)>|p-HG8kG)=>~F1m&Bm~Fg1}P6o;Q3 zc_3Paq`fgRqUdFadLAO!kcV75ANSE3>GCkr8Mc=7OgaaX4nf^{OP>#%V(j~^xFYC> zn^aN&OkMOqB=Nx=Qgu}XRixAHpz!+^R0$3v|0a-U`BbbV1^-kdDvC;w{!t?<@RIT# z<*U0viWFL`F-baH?gCl%4u{=!vq@^z$-J^I0G^6j5$5e-S>UB}3FbIfDb1$Yhzlnu z#hI88gQGmSt&A11R=Jl~+*r?tx%k(j%>b5yvj--+npQP;O&lY2TIIdr>1EAL<uFPSx61%Au;l+lL8>Z!+NWh~~ad?xM;DS71K3@rJ3^>ga-DWe_jL zm!Fy{C^aWFN5*kUi^M`Ybi~QYepsk51mQphXGUUkmZ;j=6^&Bh*P0tEK6L^Pr(q-B zODEp%iHn5~D1G)Vhnl2dn}SV&Eh^tjgXJf#B%?Rj4wlh04v@2b9nTAd902SX#>3OT=?nJ z@IC{0S0WZgA!2zOqq2_A%Mr|Gdk`7yTd8aj4fNsu6-qPPCB`T=n|(Q~e%SvLy!pZB zHuTGbmy9TcD^nnYysHX26!KkPSVS`+q($_8l)$#D2WOG{(L$8ZnmKRjwDRayAnQ8^K$#E(FUcx&^Dq1mhLO}5_FI$wQ7M@yo$HG&kAO^O?&=z-^}MtHTiNP95e zA?t$b$(yR%Nr4j?HYb27td0E|=|Me#g0@R*HcN#JH+gwmb~&!TNbBg116BarS%oiR zMO74D93(=ZJb8|b*l+F>j)o>pr9GkJbIlL~IsqS=^X8F8xMJMzO_N))u-+))J=w_9 z#5+FiEKI3v936FZCe$|!&F*L~C~u#!Y@~LryJ(HKp>@=q7dL-V7so&goTxN%3^Z4T zIdNt~L7KC`Q`zgS@tK^Rt?k3^tnR$hYEO?-*j9B9RhNeuW~51?4$#}XT4CCv5tZGL zwg+u942>^}1{h%Qf@(79XX@c3!2t~W&1~JT3JaLeg7e3zs*0!pWu^Bm!#>1l!vQJ? zFN>KqWk5T5?8LB5mEq|Q+9CCId1|VsLC!AdpHTRe<|(@*-&tBawg_F)+TJ@fud8vc zH^wrt#m}rC@RsSJ>3G~b#lOMqWz^?`FX0p?yL`ri7@|ws2br-Z1{t-j30#XrC~J%1 z;StE(fYlz64@>I7w=u&BAFyri_Yqimp~(r33cRW$XRmU2L2=o8J#WeOXm zAhd}u9^nuR-0%&PngY95NNlzd$VTsLo+S86J>1P=hhhbm(I!M`(NFG*BC}xUPtU=7 z-J#4r&wlyL%fOa$OI&W+$iOeY1l;9*oyrmbmNG~ThaCqGrJ)J!RMi!ad0tu)OyP+44*j9pOs z5N~%N$^{P+aKD_`49~Jw3meusEcDsuzYpa?|ntI|>`{yoQT3y>zbL1&49c(S~E5&ghWK4Zlrq5ZL zZ%@r>&TzTXI&oKKsJ>}>d}I9D(V?1(p`g_lCT$PSb<*gpd%*$5*=;WPR*NKIoM2!> zgrat{kqO}p!poeZVDo!|kh{xT_I8ga5D6ajDn0+Q(-YxIFZI zz$Nwg$2PwFTyvMiWwnk=!y=8(Lb!bTeZVDS$E%y)|FqR7aakLM%h-&i8jq>@|9!Z) zqa}dIx%$&>Uj#mH?~%x?(~xOzSg3W(qG1D>IsaYAn9@@V_eUoGc40a#urKgJN1sGz zy^c=ff@pNk_&%Uh@GFtEBk)P!-mU?O&IX{<>^q^|Kxg4hT?DB2e;?2(dREk468K}_ zvK|ecO&U6F&GWV1Suo2$=cDffI%Rvr;8lTV0>}0a$=*3c@15p(QRtYmzYpkm|1Or? z6nHqWuz$Kl=g=s0=Fir9$29A|3LV$fqM!zM50Cm;;GRJ3;PBQhn0AiP@oAZ>b@$Q&Dq%;;RBXHNPaAk!}n6aRQUFuw1|TO=}D)UEBU-6w3BrS(h*nY+FR$P9^- z75m$P8T;n^R3fugLuTtt4Vl^VjGlStdw|TaxLC>mAken2_I8QP@j#}n>jVRtS@U&d zEGgduWM+w*l!m_sy!#UGlE|E(A#?nQ)-$sf=mNkp_&q>oj<{c$@p-`W^`GyN$ZXS) zIbm2sX66E;XV7K;^^@iT@q{uF2qb^~%>5D>2rXta1DTP91~NbYFGI%6i?t{XU`+f$ zIaZhg>eshFD6u(N!)DtIt!qNqyajA{5AFZEJ~QRMlglKriP}lSJo9JeToJeLA77t8 zu}mt^r)v0g_@-+J4KLEW$C~(kKxl=SRIV4v``-Kd&{fMNLeP`j+dEGPA~a)6N66Ow ze}$0Y{sKNrEWw>Y*+cv74v1rv!_|Dz9r*3nPw%_=@b!}C)U9ou9i5$>{ry@W4L*QP z{5K5FVmz75XGP~iMN7D%7{nGs{@K|6L}L(tzyeU_V@JbkwxY6RT6x^C~uP?%dhAY}xR% zzFtp3Eh5wfjd_<@hL1*qri&O z#`suU9IQcAvB_eBOE?@l?Me2&t6cn4648lis7|N^MayN#?7=a{uf3QxqpmPe2p}3f+z-Aio1H- zd%9;CqzRZcnuO@$>L^&=s1xVhAaT;139#5Sh{N^*@v#;rj#X@gdnUGzW4lMfaSwfs8ib+jLPK=M0Y!g8o z99Q${7XwHnIY~buV2U-0O^%wjd7aEF#R&J@SzR;_>~nYLGJ`gfO)B@TRkk^ohj9;f z@=1Mzj)JKO|EEwJjnKJxdNA%V`HS|?kC03SpTm@+9l&-ElQ{D#N9?XXz-GWs0Nz`! z1N;-l4lqEpjsq?L{0680(*ak5KZ*cuh5#s&o&-P} z)Atf(;9X`uU^QSD;zh!3V%Bp+*=Scb@?_&VrxLIR@HA0w8~_J=xn~gN%_PDd7|K7I z$mIguN8|<$1)xa*zEiM|$a5s%2>{w$cneWcHQ+W#i%mo&#ej#2O6LPmcNyv}`yo+z z8elyD?XM_qnJ?0MLS=3hk&u+o~@ms#!-=i|^NNC#t)Ns2=(2UnXh*ts0&p zYBT{_iJD>n1Ase-nsWg=h+5#~yJa3xD;)Q=ZUo#6K)x~DXt$m|_zY_K1yZw8J2GHg~^vfV{8GMjv2+u>nZ(0W6e~G3q z0K7*u<9MQBd~f&@q7l$!o+MfZ8ZY~rX!%D(E6yUC@Bol+9d?!#IDsONC>#SsE< z4bhS4yCe4!9R>W3UI=)B=$Ky;Z5|;y7PL6_R-)rT%i}&H+Om^q>!C!)KS6ZDHll5) z_e9Y3MA*ch_%_i=n*eD4NvQASBLV1#Q-%QG^HacEr_KQU6!34N?ehU>_i5z-;CcGt zL}%dnjC+aB+zJ5xXFWu8_6nkN(6>JrCxR0Z+VL{cxz`h&2VBl40G=-ZZ(rC?bP@i( z=q;j)Zy>q^ZMw7#a3j%W=%34eMs)cg;BKNT&LaAu3*y2IxPa(N@Ya=oB)aNkqN~w{ ztI;Z=Eep9=yW6KeUlvk{BL@N z=;rAFwC9#e0O)tiKZ$M~CHl!+qT3E3`e`1~&p_*+#}VDWiRg~2i0*uy$dCTmc{<(HCgb7iimF^xNK(iN16K)&oG-uX+LJ0Gn`obxD1h>l7#own!Q6BOE>m2L zyXwmc+r)t9aOL<+5@s0Yn9n6)i3bb<@SEikn5^U3`XziV?jT|J0$zpja5VsV9q>RI z*9&+I&Z_%JBz!<3@k0_xZ;(j7jf4|cE6z(vq@F|~4FM|BkS~1}iHt>nuV8%I1bCf9 z&M72vktg?E5_#v4$S)+}>H)k!!aV`_HHm_2NqE`;eiDVavRsIIi*P%rcs>AaD!H6Q zDcV!|a}s6ektjbA7LnUXcpFGmB2N|CS@la2)hJVQG>KXV0GDHGuOdHZi0ChK_ zo~ErNng>X?KwFlzl2~p7e1%)l=-&z8I`KOaD}m3daljiS zR?h*vOk&MS5^Fn1tUHRtdcX$Yy#e3d_y<^o1E<6A+Yu{B9CvR$)B$C($o;V5peG1yWeJ_dA+en-NnxBdOKO5-}mXbJk0g3Zf5*Og6(naW(i*F%u z>Ek3WFCuZp>m+^z{)7Ay*McvuDieI|Nci8Ia_~$Q4d^(%NUn@xb?GGeA z`yUej1Rs5V7>R#9K;jFO+51}(U%pS`EA+$H$h!~y8~7b5bPFlU$)u=QmYF^v#e&-! z))Ppvy$gS*Gf0U|27CoSpYM>80CT$}K=L0*NjaL7)cZ+E`voZ(xC5AZ5>|8zNXdDN zlsxFkd9RR?{{ktl-;&~f7FIf)q!hJ~QoM_l()Fa2KS7GOfRxI6NvYaMO7$6})Z9Qy z9iSe6H=IXG;}%kyU=rVqZ@0pdysd+j_Nz(hxQ&!fq+NSR>Ha$@J#nP;;<+E+A9#tB zq1mKN2Oh%-q(JN`Gk23R+XuG>eX?VSo%6mRWkEJ63t>~X$U({&ej9tAlyT5t zNiQi&x0AB$VNzDakTL;0SN(>R)o+rr7T;QTGbtO6C1vBau*rrqfkWF#IqXlQ9EtB8 z{TM070*B+?AZ07;^^eCLKBxrBiC>d)@;p*bJ(85|B``I{+UE2=QqEXT%9*J5?A4^4 za|$UtQb;-Xm!zDB`Yt$%lnYVUMSmpa65JZR>`qdyxQ>(`0hcR}C*>;Oc{T1cUjsa@ zMSuLbmXzzzzUzlbxnYo$8q&X=Tv8rF`+m8SlwVy$%Kv~Ck9Zr@-Dvdrz1#t4>Wlnb$;*&DIck%e2lvO zTtvzzX{3A#+I;#cDSrX{^*K`hhJO2pLdxeIq5~=0mq*lC2YUQJ(R((Kf4J-<4 zM@X&PLTbYrQk!Z?ZC*}l%kN2Tn@ehY3#lD%lG=GYsonRH>bs59Ufjs<>m#-Q8d3+B zkUF%T)M-B;b^1G`&iI7Xk%gqrJe<^7r;NF1VJ|g{Wr?*Wt!* zBy~vvsY~-nU3L+vD^4bL<-4S=o<`~#v}x@OQrDpk>(TxV_Nx8)QqTSasptHN)E`_(>W(u>J@g|t{dI#un=if;6W1b+4bLyR_IPpg-5;{Jo1ocDwLchPf4mvF~ z!n(xdz|z1hY~?|R!#05;OMq<&`WB{&nf$N*-)BhwP6Hx=DwPMRS^SII)GDe|?xO*^ zlqy9vjf(2YFU3ietGM7uiioVF21Fg4NwQyBLY+>9;H(CIOIKvij_JVRTkm97vgO9}+FUQ|oX_P*s z1!5WHDMk4G4>YQd(y($h-rs}wIY=Ky>O`7A)5Y_Y0Gr)WWee)Q0qq&1a-|<-EAYKi zls|3q9i*62sYYp}JaG{nF5X9Z#`86_y#inbP6H^Djpronb^H5acn#W!Nay2*b5-z>EUZD&{vdV=Y_8Z*B!t;18M zH{-0Q>WfsTo{GOQ7MLHkbn+AZ?^-!Nz@yPAj~V7$Bb9x{bmKmoDmBIvcv_CDuvDy_ zyw|ATsE>Y(m_`>-tq%Q2D*@L6)&e#HnAZywA6#Qm0BhmN5m7}A%Gnr0=VJ`LH2H~y zn}Eyhlb@&=NIwD;g+M(|%ggzdFY)_VfOf#?fHJ@_fFl9t0R9fR4t1hGlv)5{%_`-9 zKLG{-$Dxiqq+5|^4^j`lX-B#m;KtZ(MS29@9VX#p=`PCY6gtp!2@~e}-&n#dt`8+%$vMUtsKKQybpZiR-C_>8#BLlh_BE+zvU^ zq1HoQUrSc*JAg?Ppby;=u(ywX2Z$$eRB{F7na;*@2KotdNAyoVq^<(r3{o@d=}~$C zb1}~ThBDZ_P-CbWGN=G!w^SJit@KTk9S^t# zb)nD2&(UXJBb|*hE0CfN(FqyK&)_B5=Px6j3Ah$*Sb+2d0QtEeeE{y$N&xsxL0goI@vaByPf<3iy~wM3(w5ob5Ujt>9K%AaO-C?(vtye@VgBV{vEC#c}<^cUUm6#Zy=2%zE}92%M$0sKB2kg0(QbT)x563#&SGN2jnjzan~ zKqYmUucQuBI{GwlW@-%(FPUase3z%!HoQqUhJ^n?0Gq>vvB z>K_2Zcm|y$PE|`iZ&)`kOY2hYDpp4UOE z!%vN^s`js8FiZ7 zNV&~;&+?YXv#A2<$$*)7z7%sL0CG6l6a!v74e$*9-iejli+E?(-pTh^GniJR3_tcIBNI%o-Lq8~=;BPLEzGWGpa{rx=_bO7*ndLP1C-afyxgMmy1mK;VW4PVm z9bsmNVUxU9|2*I+2Fx8&2Vy-)gTNZjr{xW7h7QAekko~cZeYONay;M!z!tzJ9S+62 zm+-ttLElQ54ua9@+$NxtkF&R``*Gi z_Pc?ld!Mv*Yin?Q)r|xv>L$1k@{$>g`5joN;%HM##d7FA)x5+H{dcN0^o;Y+`Gd3R z5uAr8+BZ!3N`VVUZJbAZsoaLd1>H@nLPeT_eJI{FNWnL!A-w=ALkq>@DUMFYWj&|J z7Wu*>Dnu>ppS#2~F%wo$YsDer7;&<=1ST}URGw6xR{p3yVpr{P_9T0$z24qxAFxli z&$N%)m)noDAMJ{BrMR+Od9DIiv8%?_=IVFd=DOYWkn3T$(_P>$c2^ZB1(t#YIJ!zL z$STMys3@3LFj26!=(k1Bd<7wj)^K}VbiIfbX(CS)h;mUSnnbJU5hG$$EEk)^;bJS= zlY#a;f%d$H_6WP#o&c`^<@QEE7VjDWu zBkM$^-{kcG6W5xZ=2g8ee#1CsYi;I#{mR6^YQI|U#>+m}4%ZHRU}ufF2xOTvHZhvL za_;z;XWTvR^84nE;axTpL;rrI-|Y2U`zr2+(2%sX;7?Dl2Yuw}UFla=t@Df3XocTg zUg@`bUEI`I;9{ax$b!cDCdN6-M89mR&3m^smih*I%iY1=vU?+YFGj0HRGun!a>x+3&k?id3x`5#He78Y>#`q z++FF9^X^oX0soqn{gwWBFA#9K{BeCV7%x0{ddL0o{MTIk6_39v{RyZhQIf<33am!6 z{Rw>&t{oFDe*%bB=}+_y&mY@qTGKyX=#N|L*;?sO@(#}#8=j~AnC-^zPWgMXcPAzG zEg0LGnAqnRD|`J370l(}rrw=#{7*do@ryL{go+6CJDK%Ctlk~yUwk&c-0eXz;~Ct* z@3{yD55FA;CPQfd5Pps9ssnT&PUM{)khsrJU3bG{o#Y0mmv-XBYW|o%(bMZ1@W+Dr z93C)SuWJIIzb_g7?-HoDcgMueWJ`tr2Nl@`AX5r(b5>OPQ@uL{r)i)wr|I6EDyJFV zohD8*y*tgEW_fp7IL-F%v~rr`-D%@A*SpisX_*&P(CF^BOn|~3SCwBZ;{j6XFAsZ} z7JPY>_Oc@EWpVK3(b~&AFZtst{sa8-fnOfl6@~Gp;se& zGrEYmw3s?zH7n>@WnZkK<8Wr=Uj*gc9%b!Fe96suX|y)0jC5Y_lT zTHqPP$VP8R4pYb!QK3yhO5em9k6-OuxdtLm>06nN=ZSI1h3GOX(KJYX&)~|IY!ALL z2t1L!OV+k7i7MP{Ypapa$zqwea zg{K2#Y7f5h+aN?-u0hWbf0TQ%!+0l=(J1Yw`D0bC4$R%$dPVyYl?J=QZz;lG)A1^( zCTN|wKj%$&^xi^yEB&3u*Ch4z?wVj-A{u3*i@P8{s+fv{{-nOK(QM45u8#4lomCOIE;TeoV#s_=7{?>{eU_a)u9T@2cY8yJV%3p;h z_DPhPjf*wPuk^=wdNtIUojn+7RTz01Lj4d-m}8jxCFg%PmL8gl!Tu92W_q(6>+rN> zyTka!J+8NN00OwB!l23^{%WmobDuF?bZmko7y=1WwP6pP1S8y88ObnHaRB6Y4Px>&s5RnchV~DG%rm`r6ZPX^79IpY%=X?bmEM zep)Zv#ZMb#yZC9NY!^RmlI`NBLu9-7=}_4&emV>^ZVPtc;qotk7hW8pJ$B>qNG3XG z^ZW4E|7-8eTaV#QIMI37_wG|G~)U6DAWb2Qy)#9ijNCD73T{H=X4+BMV^X- zMV^X-@8Nc66yC+E)9^0wRGeSxsW|^WK8O177JDiVF7s3zT#nl_qVTRzorbr>Q*nN! zr{a7mKF{#s{lHUku*_3&a8*bS{JWd=en0KOg+YX)0P5WvYx46{%BV4 zkn^uqbMFl@^6xwOXdCnt_CU9I+YB4`yjScfq`kp2^B;*nmNty{f=qPT`Huv{_^HkX z1^0G0%g$!@zpVORH?`p26GXQ$zL*n~!bLEJ>D+ECVFl#%~!5VyM||Q z!F}mdV?jZIB<UQZlt15VD6GR}wwOZoR4nUm-|x2$Na3b_k<2DgVit(BW}(=m88 zG>_@I1@AW_sIsXrxh!Nk>7sFE2E**dAH=%iMFffgi9O}1i5Kk)) z`C&m;T6Hiym=nwmE(#ignZfj6M$pJ=M~`3%Le9EyHlT0NkMimgj1KC9sko>`?GjYt zer`|)8;S1)YS)07_?(Gu8m7aPrTjF8KE$TQeIMeP6U-*A!q9aW&NHOaQ9%sTaXpJz z8%RqZQX}a(ozzqk^B7plU+-4_s_@qk%qN^Vn%dSr%Y!7T?5AO!PHyLrUr9rK&=i^X z2~I_5*y*IJHn@PW#LYB(%p%0envPS@4I-4&f&rxHbbL0dn_5!ai2E6u8()%58k_hS zz^^yDQ~4jL<=dMuy99&z?@fxkAS1S~@=>6az1J;7*AKtqssNPoXw;nbCS6^qmpW2k ztM(Uy;=6Znj^Y%>YOou>e^pv3vo550KJFx(Mp9F&;Yt}aPzqhhmBjU5YX^P)i|$GZ zy`D0guO-%nGY1meOyZk?aL_K)mE`myuuD(@o=>Y=fD2#3jkuC>pBoGbPUd%^{`zRy z|JT}GrN%3{mUdiESQ4k?w2`nREz-t)xk&9#L0?a5>nNKpq(u6Jv^6QQ8R|Ak&P&jb z(f%QQr6pu(*)1VR{{FG0O1qSQ>0#1_BxQ%jn@UZs*7!_q3zI=f=Y{x?boe?P8RP|L zD{rKHx?tYAtmcyvDe1YG&L>9cEwfPPU^<<$97DQG{#$-h?MZU$#}fuI`D?y{HvKRD zSaoK`5m`DtiF6ho@(@#J&cMp14&)_85QE&2fGJUBZ@eiQqokHI|m0oum<-(q8 za0Z{dJd5!vFUV&!EC@!B_fhnf(VU4XrW8tpGRmWz(yX9$RC3y=ir!Tnj0?sG6M~7s zxxsmSG+|OuYtn*W21|k~gWquj;A5TvE4Y((b8ttn#-sD}f-i#Gg5L(u22TffGs;W}R?@bfr(T~4o(on5?n?9kiIjUnye32Q4z z`S#{;R>F@A_6J{?4(2G+k#+h`=9u6>@CNJS$C@sttLbKrGu_Sc!S3KabAmb1^f2FL z-TWlei*GIVVIN^#aIfjhx_*B%zzj5}u%3RZ8Ej4q-VZ)7L(J)Bs5yfb|Fg_6R@w8- za8qDL1do`JW)!;sqk|8FkAk(P$P}{zUuw#N?ZLZdOz>8)lM_q3f;WSAf}gW8f3~SG zNmFUYnksXSsW#)xc=it_nsZsRuQ8KMt(k15n5pb2Of%EX3^S9J{0q!1gkaR0IcBbz zXByaPXfz8!lKOS8uO%B(fNHn*EQ z%$?>p<}UMFbGNz2tP9o$_XQ6I4+UE|A^AY?WN>+~Iru^F8)h7j2EPwBnS0H8bDz22 zJiytztIb1ZLvW*cn7PK!g1?%LoOAqDa9way@ay15!S%sUf``o}c4rdCojz{3vU$b4YF;z1n?IOs<_)vmylHlrx6DrS zNAtFM$Luoin%(9-^S=4Od}uy0ADcg!Pt2dqr{*takNK2#lHGenz%;)9{^QGBu zzA^{Q*XA4ZtvSfWZ|Uro>$oB-IcAw5+Dw~evu(oWAO*FJZEFv+?d*4KdwaM&!XC-q z%2Bo>J3gK4F&wZz)^@R7Z8v+I?QV~^C)g8h5Bpu)lTUQ^vb}8|d$R3o``P|>fE{R0 zv4iZXcCbCo4zZ`(q4o@Wraj9Jvz!95!)<{bVMp3gw$P5YMYhvuHFlD%wUg}>JJr_NX?D7uVQ1R&?FDw0oo(yw96Q&} zvki8>ZL|w)lfBR`v==eo{GPqoUcyZC`*yLt40+pE*d_K#yVU-`F0)s$&-O!mwY|o! zus^aZ?X~tg`(tFi{scMJKead7pV?LR=k_Lhv%SUs!mhTr+S}|e?Hc`ZYxZ^f2fNL_VYk~i?GF2v-D&@5-?s1AUG`l* z6#Slj-+o{}v>(}z?Vs!?_RscH`xm>%{?&eF|7Q1c41J&d+_JIA`eq+D2 z2W>OMyg|Mw@^u}uSY3vTyG)nmvbp%4<8oaa*VY~8+PUwz_U>?Zgger8a7Ve0?r7J^ z9pgG9_^^xX>bkk(Tz7Z8JHegkdbsbpp6(>q%k_4B+{v!5>*xBr0dAl>#SL<&y20)= zH^iOphPpG{neHq%%;mX!H{2Dt5pJX#n6J?ZmO$u)7*47!_9Q(y9?YbH`~>_Ic~0-=NjC6*XS0w zCWjy$cadAm$*ya_uXQ5nY-Lw;g+~7-BR}hx6EDTmb)LitKBtjh5M0P>8^Fx zxgWdh-A~*N?x*fX_cOQ3{oLK;Zg#i0U%1uoR(G5GrCZ~E<<`1iyW8Cz?oRg`cbEIE zyW8F4*13D#dUv0@-#virzK7ff_psaO9&wx8@7$yA_wF(GxZCWWa9iAy?kV@Qd&WKM zo^#K;7u<_(t9!}4>|SxNy4T$6?hkI8d&6yaZ@L}sEw|JC(Y@{7al72RZg*PQ*pd=E zydq;k{mj07^ZJHrfmicS$;g{sJEdVxeMYTUV|kMs>YD0ewW?&~&6z%@zV3pITCc_m zrqtp%Hq|Qy_^fTr7!d|h=hdtcQ|C0+PMK0y-_{gZDFug9gMZy{AT>rmFEmubH=t#QO<(a zx{R@@vI}cqyida-RkFrMRh6|UqMDNa{RW5XX`z}Is`)v!bLY%&Y?w25M&0Z=Q@!c% z({iRZ4X>@A+E6=rX8qI!SyP+x>KDv!s%@yvoZ3`1bAD~Z^je2u8vl8a(U8%jA!8w9 z1)3@ZN^njqk$|uqfl=OQjK)MpW5h_@7w4q|g%aW@p`!`~%SMU8aG}H1u1IK+w;LzC zvNA6ws73_^qA4iw_GRL?QXQ$^0-@Mps#fKqFIRoO(0rw(Vn0rxLJTVw3M~;@QX;fU zXi{THCdELZFfW5p7hKR-D`nMGJH4THMlB9!=ZTZqqlJ!^Qkp$h=vc+33Q{|}siFcu zv%_K%CnMD3XfX{-N=(P7>DahbKm&apvoW(VD_$s>E-qXs2^*zYq(%h=3nf()hic2c z3!=jvnUUa{N;Czcp^|E|r_Nb0c~+frEXLP0%)!-|`Z}=k!Z`$1IisPj4y%!K7Bq-5 zvq|idGZ$i)WYnog9WitIj7BWWX4coWqckSVKs2+qaps)*`7@{2Q~!Cs{&N=*!G$xY zHqMwow{}WhyGUCQ{dCMgJuN|h!FtNfhAFe^$U|`rm5W+b zQ#MW-crm42TnHHj8C3|BjY2mZGF*&{AVq3C4pvzy1y(8gf&wU204*!SVWn7$j{>n2 zBBteN%0-h8$rn<}|2Y0D_%GqV3X7zKl1!qLf6=k=A9s5Dgy!5b75cms;U87-3>f0NhS65dhkK>Sn=+uPZCRN&_S%ItmFl~u zvSwV0_=3cwD)bqKr-N{DP3XVeI}dBHxP}2&%738{8lw`QpoKO0KFU%JZ(&WT*N*c_ ziC3z8cvYlB)5%aQ!O#bApPgdZrc7H{l@B2qTGfzM@2G|cha{>dNj4dFg-C)UTB6p4 zQe+ZoVOScp6<<7sWB%sG0(A%Oj0!pe^*dR;GEysRW3EjRwdVDS94t>V<|CT4-61LZ|L4QpQ^7 zqe!#*)*+EzpqWM0JfdnC!)u01;3yinsNUaj-xP-X`W%jHaTfY2qFEAl5qTqK+APm5 zl7?PJUNM42L|Ymr8iTm-ffY$r5@?ZBq=u%m0<>PIO|i%~uOgoe2~>PYy{Hc#beK1~ zwdM^~oe|M+NsOreQ9sTn7z1Bvbba5Pl&Bk+dPc31rX<4x{}PT+%@jifNhZTe)Ei8_ zp{h3-KKK`JLe(2XiH}W*+QEECN>WBN6>^D@W(U=0r_9$(r5_Vee6T|Nunnn_WQmD? z62i39Ma2j4YtxZKNNyj4>}lBYTuGlfRuO-3%LQk4L^#rT%-eIA49Z1SjHCa}p zHHm^t@&pM((MPnJ_%Wu8!b&9u7KWzPOryj`vlc3$tq#y-G8pSXI-+Cal9D)Ci@k_t=5=8~E!iC&#+-b-rK zbCu7#%#g6F@}*Vf8%Y&T$R?9xoeherIfLi}PE>t%KzwT#5_-`VfnJ9*R4p-7Z4anA zp+Ti3NgPSyph86@&y*6(_h=<}r;B*1Q!P(5Yf1}cI_DW~TX-rgo^3vW)ME{|1|m zqi+ougsmazdy71{Gz1+s{G3yg7B-5cpRvfqR>KY3e>emteZ|V7PQ%cCOSjb^rTbzk zb)||n1*s|3X{t)3HBqXpOZ2HNnNvT#jekR|NiFr{@}eHD`t+%tEz1$|0x9%6|KL*0 zc%2+Qy0u@zjkNd`t@y`pibmG$y;)0alAN|J4t@HLYB7j>dK==NJt8ur&7qUHSbYdt zWJ#uG=N+0bw5f!JG;%EgkBM{=@R%rI&mv0=cxaN7bicJ9qO%>AB#HgtPqlnC=a{KnfL`nY?8IU3aQ{P4oL_vS0T1aBu8ecERGh z|8+P!S*Ph9RcdES_N2<#gQ`Ac=V?Z`+vN9}8rWfyeWlCUMY`sY9V6NM*+^Z{!m>XO zR_3hCZO@+3ojKjzI@8TP$i93Z_TLBQByzeZ_T+TVS)S89r)OecPP@c`#DSb3Cnh#I zJ#*US48pcU%0*7!+=4b)m<{DunUkM0KIgWa!kjYr_?$^O({g6zG~}+!-IcR2=hB=T za+dJFJZB|%6Yg%$xjX0noQ=6Vavsb1EN6SpQ#mi>yo&mE&igr^#Cqm@mfJq(i=1zA zZEid_H@AIm$J{QtC*=0Z?Vme1_sraa+#-JExmCFnb0_D{$gR(9%w3ebICm+(t8=f* zy)pNe+%^0j%)OHoJea$Q-)4T#kC^S zw>>kFVjBLh$j-`M!AX(sS+|&;oC2XIoBXV$S+``($ht8*4RuXceb&`kjr?5)}Wp~T&k=-YIV4^a6NcQ>J71_hGM`o9xR%f4=J=LwjY(@6m?56CC zvoFtH2ERUgRrc!awb^%Nug~6){b=?Ue$QpUoV_i3XZG&wkF)n=@5?@rU|>qb5{X2+ zM2AFYeti?&NkQMlAbvyngWs-<55)$Pz40S54rc66xrn#T?4J2a{D^obegos( z;zQz>$9u&4z=y<##Ye_V;uV=IGarjr$Ipv5#i#Oreta%?G47VdSH!Q6ugcsQUmbrr zz9GIgeph@w>Z9>3@#jnyX8YpX;ydHJ;~&TOzz-nMK9-rtY?s*~vorDb(wnNMZD z0Dh9WJ@f6%_fbE|{EXihncvXb&iRKH#;C`Mxf0O%6A1F0rfnfLNM{?z={cmH<~^Gp z^s>h@pFn;bqo&;F_WwMC>=yHsTbkYhfUm;5ySGW}F1F~pyO-r3 z-3qrt-3b>z-CIHtcVdUx`qtsPJ*~sVR(z$x6|Q07ud~MF{jN`orN!LGX$iLzhLAhh zTDO}s5L?i9PfLWq0Q24acBb`&?ZY)pqkm)J?F1h?=*#eGlMfwXpM z?eM<`Mn@(sJKX_vTS&FH!3C*3prJ{c?!r8VfAK}Uq-YT`u@iSY zC3li`w+a(V6>XAS6P=^%hLT?Ey{0Hu1ynF8qiss>DHTlIB2k>Q}ur^AmGi*u_lRMmzjyxk*|zR;dvQUE0JJ_Z+%_a*t6;5;t{@+K%#)a*e6F zTT4&s;{YX@AeS%WI-&p6g8z{-Nrl%*oza%ie+)_;No{qOkR??9eflIOttqJ|e$1Us zXS*dZ8AAk3x#AUq>5YP%xf8rsFqW<6YX#FrD1TGXe5^cA&A%h)?pFRsK~9K)>21{f z2sOV``NfLwDvlQ9?498E1gnbmDFw?cA7PfqT(QUCt^~` zZx*Ly8#q5YiFeCcu!WpP`IL#(CAdIeWU1lcY~^YV=jR*KD_O z&V9bknb1#AzcAl$!ZXf0R4%7DJ91+41bv?x%=ya#&RUjpu5u!0C?|7vvYvC2i#QXx zl=F|*@g{W(zcrj^T*ukPP5icUR`D6|b$&be?c&Vgr<^a`@3QPc&JbpC7O*Yn1UsR2 z;|;0@X8@VSn~!9!WHu;v79>_N`K_Xqlrg_o{7iAV;!?$5EB;RLRzbH?kTa{oUr~HX zQEmD!dVs|yqQyvpE&nSMN z_$S2=1)a{CU9NCihM4qJJVwwwq~_I%=c~y^#i5E#ic*sQJldR~qs?S9<-a}JFj)N` z7;m2Cw5~s$`+sviLDmu&ZQQH+e|dV0Q6`ZZS<4>WE zE#u9k^!)TfGcCO`eSG?OGb??PX-J=zJ}bRJMw;{`W?}kDzS>w|mZaarS$amB^!piY z7;DmBXc=uXI;DS-{#p7L>EFa`EFQ~^wU2d-b%~u2>m}om*&Zv16~)S9Rk4Ywu_(64 zd=Xn3yPDs1u^Yp2DIAqzoB2HxjZK4NyJUQd?Tzh^?Uzw1BTL4qj81lPMjtyPqX)=n zl`$-1WNO5sUA*7ClQ!0Y8!6lYZvFz3FId+y!KZ3|7?Lmz@^4SWHqpEp^Bv8!DtKS@ zTM6&fyb`{*8M*Yq*Ui_1Z#Rp1db6zNb#88;J!eYD_7e%y{!-#{eE9?3s3uQo>{$o* zim!vOg2BOe31?rktR=Qu&4Pmu(^5DA^o=_t~wZ=1H7k9 zrG?2Ij@{@k`ESh`{&O#uQ~m#bP4ItWMetv(2TpReZZc=j<=lD8O5lH52b7goX*Gxb zo96Q{yTl9*zTpm5ocliQxz*E!8#X8K>%}dd!K|YepkKk9kQ33AO~$4cRkwLBU~BxIl6Io zqYw8qhHxiiBy+$D?pmB@r*fNOE;lDG=9a`VR$8xTb#*m29qwXnbptmT9_8l3bKFwc z#*KvC+&*0QU-F+#zVkeSyy04d}@|fI*!3&*yx9nVZCE{_)^6N~?hr`ImC~ zemN)YZ;(}Q`f#(f7w&`6hq+lMeOTn9eX8b%Y2WyPv_kGsNsBz3dtcIrKLDllq*wFh z4os5ZWoq(%^M&wE&2rs-Z}YX_*Ub-sZ>xE_^m%i&w(Kj#J^h?-Rq&*Ny9zaVN|E&( zOhl5Jan~wlN(vbZNVC09LSRH7Ay_fT&%cQea(}&kn}A19j7k8(Q>xUd}D+%Jb*1< z?ZI}8+AdZ8o}$xm-d3zqUoQ#TojylWr;JS!@3WFG8hg@SFr^I}>x-U_*&5Rg! zy`_nn?Aum@3HtD64_&sog`Li*hTrrJCriJ zNx86$m2%Ir<(6fx+_7Y5W_~ca_JSGp!7Rl_c4?*sixd}w^Mj=`YG+Lgu2#GbtPfVr znmN5TSY6L4^I+}VhPwH|U32F*&JXTyxS(NLu(4t8jA_ARO|^{+xVy&0A-v5gJ3VsS z)2CKYqyx$-yWnApa<3k_0Qz=gCAd~ep2uE&?13(uyT-bew+e%JD@=XIUcby3%4 zU2o{RrtA8yk9FPJb!XR4y6#6tVEb;}y7ldLX19`V?&Oy2K7vZ{r0&l9=uqa0m1YvDSjb!FN@jnz^OpG-GrR5PeGUCRO=G3< z_gnD~TJaBC@sC>Zk6UrRYC$YM9KQ4s@jtiXpSI$EX~p-n;(u+$KWoMR){5_K#rbkZ z6xY61{PR})i&p&0R(yXe{#7e}pcVhR6-WL<6xX+{_`y~jiIOQdGO>@i>~4kSgIx6% zE?4(b<}77JJU!%oRX9m!;KpsxQEuD@otP`k3pz7jXyk@=OHYvYlFL7P*IJ*uX*sRh z=`m9=^=(RQTDPe+^q%pwsQO@Gr$TPVUd?^$)xn*eDmqQ!x7sU zG2Vp2bo0fXkUbi)-$(4Rh&>sxry}-r#GZ{9UyTaGdp=?>MC`?gZH*Y;{Rw@%9I;m; z#@ByB+t(uYdc^(^F}_+Ax_c{PJ0r$-m_pmPBPOQ_eBHenF-`+u#`A?S#P1Hw<2xWy z_b2KeL64ReU<$dnU%>79YHqyG;)eR-V0p)vJMQTCe#bqG6SoAncihiC=uJE~Ugq}v z`#cNxGeZ?gtX+7^9B9sz8ndxf+`vxxmIVtXU@_lWI_*yj=ZB4T_sEDU*n#J-Byfrxz_v2P;wZNv^njB_$RJVxXc zlV`G)6{B&Axrn7jEIneAAY*@cvajf`cRkfm@UauiZrTB~if%fg2JV5^pCyPV8lUWeB5YNl?kmaVq0xBlD`u znOUu%U$5dhxR&|VdS+OUGRJz3k#ieQ!QITX_ShnN-8SSrRPn7R2m8_%syf>8wKDW0 z?MPJ%>{+OuTLzZe5^%IF22ba-*a`R;#9Uh>+EnnYIge5kNkUC6 z@+ZG&jm~D zM6lRS01NGSFwc$y&#=|tP~Lvx%zxV3+31pX7Fb~~085#9=eFe5&Ls`MBbEkrF;86B z`C!t{0f*UokoQ`igpFd#dz{GO>Pw!7GTImNe63`*G>P}2SxAFf$U3*9^;TQHEQgx3 zSKzC{UJjPq%fM2*7%b)uTuSj$a3t@sQaj%R^X*cw+AaZ;b|LtnZ36S`0&qx_tE<$0 z8Cb#Bd?Z(Cyme?T+H25{vsZ(8_J`mwzKJ1uXmN2Z`f9rpO!ECTYew)DBT_&gjRgt& zV>Q1{%v<^SDf()@{v&>V0*>OVJfuDJ^D{NSQOqg#cD(&}MpjTyUrzQ`%&YBcb@L0b z!rlTF+MB^q_9k#7-@1}?tO5&orur6DhAg1-C|Qvob}15nu14z0jm%uuAk}9b@>@0q zn~~tN6)8PCf?Xo1jb2u5A5k@FH>z4{Ia7($l_XzZaN0ZXMwM3h8&v6icdDA?YYdJt zsG8LtQIo8KNUGO?U$Q>r9583 zCTX{V6|4+PnqB})Nr%iKCm{!EE)tFwGZwC-7FHu|Zyn>{V=Xnn+rXztVA>xXJ}20Z$W5933{2V&Bxm*uaH4$= z{G4wkO1|F(OYB~7f_(?vXWs^k?ccy^`)BZM`xaPaKLPjKH^II3Pv9870wMLk4IIh( zl=SG=!D03_@GSc=_@#XX9HR9bjg-7?%l_xj0zrV&G_( z4i-2E=CvB*qjty}#SD67Bl4~m`+mvX*ReyCbbP^6YRT~xOd0=NSHhU!jsdG&Cot)b z1`jxyd7SNz0?S*y&D(C!IX$OOd!H zsV$_p|H~)ozng(Lq*pSd80jier51`%pGK9L24k5!htMauBv{4jx5RfgSmDaSvsvkt zw3dNmTq#)QO2B=t7%X%LnsZ9yrtu z15bBj!D{xgr0vVd6Fwi@xtL6J6V-MCSmoq7o@8BG%HrRSf^H`EOe#%fTeB?2lWRnM5_KNx zX4E;TkCTSkswUlqggVAGfnT}>V43?KSncM6g{}eI;}(HQHy0e?E(XWDdhjo9Az0yN zfd#CX^Q>^^gF|?d_GgU9=Lt~JdY-}aa0&04D_NVl3E6hHBiHW!U?ZdPQ*I@xk<>0j zl{T;xmFJvWqH5B8AC>2v`;o@D0xah%ijwlH!7tqp!7{fTEOl3b#q5qqE`9(Ox$D3x zcO|%&{SwK`72s%hIauH>1M}Qs@N_5hg9+|Z@I7}4I7DY&(WvBBVOH&a23ENn!KC{s zSmAB}OWjYvLYa5T?Fr^xGJDZ>WAjPBJSU{JC9Sl)YAda+LT71GrpZHNveLsUtn}J) zEB&?6N*^6#dxN8`j2`v>;6wY1t-@xUtpuyB_8KewrNT-dp+Dd!VWlLJR%(7;s}ZRU z`Ux%@Y;+mmXqOhbXczF@b$mS-sdf_`GgZ_idg%*8LH4+qZA!cL?7^qTrcfgVmJAge*xh>*viadt&wI`9f_B>~1 zzOr9)_oJKc;EJp-}!6Tlw02%Za2($Z*?_ z1hjD~d8{Gyzc%vEemrZiXCO~8k5Vl`D&jcSW#_RY`!Q=pe@8~&SCn&_?S%xpc}S+a zgY!YZV}JDp*MTu#^PE{7g?0=q2bqlLuomsj_yr>Y#ZpN8&xMDFFgQ*GFb z$Y({V3dxEOARDlm6(Nx<_a=8;meaE|j`+UF&#|z>n4?fVmyQTiS;`>DQ zpU>q~+Dv5m$*#WK=Mi~&>p6?|7U$0PBDqc^(RrzJB6Ds8QsE}+eVml6H!tN)?&AC? zj6>RqZ!z6q$E!3!ksEkEZF_;<9QqB?`ZgdL&#KJ3PRO_u>2|&3BpYpiFtY0kkW)8a zrO$m2$#Ehp4*76C{EUrJ_{YI|hv$v@>%FCvM8f$hckl{M*{wv1;GOKH-;H!Ykp>vb z{BuXRqmZk2DiZSYkcwBRQt+x>t($_ByG2N;Tfu0mWtPECZkV6$u+H{mm9AKTgv1#t z@9=Ufk_~@|?809lsqkU@3aftUPNe!BA4%C8%TD}EMq>>zwm%B-c-V2A3g{h4Z#<1N zIeAEHEaW`EGUO!w7-@*Bk!mQ?2LJB9gG|6K$oUg_exs4ySAm?q*~s6U&vU?seNz-R z=Wc>y>~~p>5lN3C=TT%l*0Nr?5b2Cpsr<#CBUjPORNQF)%6Wne=VcR~!!yH&*V6w_ zB)m4ZpB;uANs$jSfPpUm&nM*6?^bu!Gz{7=nek$GP=XC5f#X?r4bP8qOAUZhV3*$EPR%iK^- zuUP(Z?SEz}&o$A>ZqW<8S9D;VNcL8zGWTE3de~;n)7-5L#XSinE~^l34bOpHrl0mdbPV( z?IeVoLzZbyMo#UtR`O|gwJHtE`_mwDHcay#Am8|Ze<#CI19ERuO3Sf_BIl@E%B~Ea zOX0quZvk3PPe2SAN{baR!MD4;gEcdY5ZV+3yNp0}YbFq?V&BRt|_HAK& zlwuQfm5qlzHTO#&M#9oQm8!2XUBPR1J z4cWGh*kKVnJY+dK+eqC{tz-s~lAy~fgqD)DX{qISxFVu!pxn82$fiEqy{T%M+fFSN z8`^Ggwz&^1!-v6z%!YiwIHLLORv}8Le(zO!b(-D%~Vz}TXa>dgSO}jZA~lP z5Id=rt`{q)EiOB=O4_1p%gSks&a&nj>4JT%u(s$vWEHhVx1E`0i|#qrSzC0QSb=TP z-EGfrrCZHvYKz@?BU&I9_50l8`+>2mz9? zb)g$efq|9`WuG>*1X>Cd3KZHhEyI+SzMX-0+Id^r&Pe!Lu zqPEmSO#asE_{ew(?dO2gp+5`I!A9>PnRX3Br zvzxJ^tOJL39q5QWy#wRL_w0*IVvk}TYouqH%*?E}_uR6kk@Q5n~eBUc9_iWim=1$;Q0F}zbo<(_ejsqbx7CF zJu7wKoh#@6%wCbs;@VUeQUdfQHb(R9#dGCxCd*Ya)+05=ViM0YTHF;)j%+9ZiF`&fFa zWVeTU&D>}#F=E6;g$4O}xjES$4ASLvWTdC1rr2#(3kYKnGjZURB~5;FiQgP{`^|oQ z#NURn_!~BdoA8%E8hRka|K`fj!R!2+{SWvz`S)BEJb22#MSR}<$8X}#`mf;6`fm-dn?R{7{>bW0O)FhB-axQ+ zdEU&(@P_7r-A$_uDK<}PQCiU4z2VZ$BW==+Gv&)lv;0LF8IHW__OhWV>z+Lp@1E9h zmEGk`O}D0-Gi2|Ebpw-@J^QT8$ZF?5kUOQXVW{aWj|EsIJKuXQ2kcnNOw1^mj2Jz$ zS|sakW;U~N11)JUvsn1JY{Rrlcwb)cxgf5uTy(v-(rh-2GlQWr;U1;-BA461oh5XW z&X}X4N-krS6{R7+uc$CLJJXq_GpZeg^zblm(izq73-Y+nO_^DBjrBpFiD@5x!uO6v zzVPzo+BK7tYt~LiTIs*^)5c|M>+04n<1gbs%hqz~fw`^st(lryvvy*Fe^tGBa;={( zsf*l6m)3!BE9UL)7TU?nX|HZCU0%rx@MsD#d;1Es5aO_jsAPyOWrR`rKHa>1xIp4;6r5BlHI!9MB57eAbPZRQXA z5C47_##6wX`4=In0<2o8@OcY8nJyCs-IHRs7!5|&B|`{sb_TzK_`{@?B!2%e#@tr^19vh&K*Cw})kF^GTRWxN637AkqT zp0g2L%b^-D40^SG8_BqaKmE(_Fm5Vv%&KFn&iENTBS^f2W!6VLD%Mp1og65Tkp9#@TD6Xl8xh8LSgEI%2Ql44eWAAN=g6i=#zm!01`gC z!liFKY(yt*P+}~!LurySs3J?ValajX(jRnW z&?K9@Zf}FwGJc=AL6tO*^8Coy$-i6OGT6UvYWo!=6P_j5T;%x?_mCFVvhUI|9G-9q+45G*G^LbgxgoFQdYLDSlJS8X|JnU(bRn4+R2?K_SZBV-@NsB zZ`+nO-d@ zEdxB7g3;T#Q8Hl4<;0>iepNbawwKs2V)9i+>>98rmc+nkV;5?)!PldTi?hOf81#$;YSk6$Wf&V_Th8H(xKib{H&(KJ7?W^GcF5QvhtEWYrn?c;}!bn!8MzOALlUYcJ}TG}E7CQ2qYjqEV)y67JeAuFXo)9!8*YFjVzWu(Ab%M&jw)0_NpHZ_HfGoze>q&lWRH$sDM_}?+VwVR0P41Y zv-TCuP2pu#m8C&nG3`S~I>3n(fB~w=feEecL)gu#NRDX`?HA!X4_xT58M{?CzEn?% zKOO2wlX%9ax>XH7HS}Kk)gN5>+7tJRue&2Tt!GE8Jmh2i&yLMEAqyk@^E z?0Wkxd$87Mv~T8x4UzX6_x<+9Uw`O3cDKt_6Zv!GS6}&xbaoEl66?nM^6@@1-dDt$ zl=^J!8N3mz49?qS!iLwCH0+!)@Fw6Bi>0W*<*;N}(tZA7Gj@GbSg@Jj;nv6%(i}(C z(D9x-bIqF0<72(ut5(1H&zBx=U)I#SZz?i3a!I(E`+vM*Sw-W>)X?(b6x)V1gXAn# z!#!RmJqmRMX9+*U?a6_VKsFQbgpGos5?@tGeF1;KPofUkh_<+pu$QJDR`LhRie`3qipS}IN7(E`$ ze}o6yS(y@q>QIdv$fW4wb(>juR9MekVI9MW@wx#%o#Ta(tN68%-+b`FrcKh>O|O&B zOb;bw&dU5sF@A;&fy&3G(@ZKcTzX!HkvufmtvZ+n@gO-7i#K+W3isM{dY^dQ_dC zv{n$!3!BkMVo=(pLP;=W$+C$Ni<8&l#a}>~{GHj^$Un@^@*3iB9*X>2IvaT#4;;ck zpTYxW29N=t1HI&i;yL)N`*dMEVQ5Bd4d`%CxC}R>5QRYr{7+(15BNf`gtQanfUWFz z`pCR$BBkDd`$_i|mX&Ro-PXU-J)X0fzZc0I8`b!0r5J#fl_)+lJ+cS>8I8n%v528q zEgCXQNGc7-#r?7?+&y~}H=UaQ@2kb6)63uze$x;5X-3`GOTvDBiljJD(nh-NY4Yj2)q2U3~0k2k~7V+ zQh$7Fc5O;(b<>XHD`&FZRSi3awr$JEl+M22{^?NYrq92RHMQ`xYd-Vghul{AcI3}0 z5u|a<#?1gEJIw^7^r#~+V9+#byxq;{VG>wz2c^0%Gid3a||-;IR@(+@{}jfEuXbSLmn8y-r6LfZ@26)|T%5b(#j z@)@)v;yn54hd%w;2OhlT(+}^xZ2S17d&YP0;d`EYHuBPQ&vECwH{EdT=nWdbm@q91 zOb9>rIMxgFocHs@WgoQ}dC9H-`#La@6HKM4CP8U!;ZZml;WVfkG$M2H;Bm&@SnM`KaxiMw+jbFNVboQAeC;8fy z=cK;(JC~L(u1s&)xg+*ymJv8?*x%!sz#Xqx`$dC z^jBbMJsJ)V*i@kKao&6|RBaO2DL>ya($v0EDX&>kaB_NoH^6r#SXr6tuJ!oRQ?H)d zCZPAh+I(kj&8qUznF_+(^Qt_VDYjf^adAb?rfG}_!iv8w$OK6UHHa_|+2I(JF22mn z3}HyT4I~aU@Hgr?W({0^Z#HSr~O z2H{Tp?b(~IICj(Q#?Ct-tjXhr0bGL73m9C8BZAqSWcmxK9Q#IbgKn6r1h0j@)b1D^eahi>xK*tf z_P9s{$q+syf@JYCKew%GTS;;2?yp>>Z1${JdE)Us?LAc$(ih*0y!hmef0^6yCa)U* z(VNoQ4rIxc_z3U+uZ*ABBVUg^Hs^Rd4G;I=;oW$68p!}V7Csr7(^#4lt{#yY zKrCLO30JB6H?#kGthRc&(PZ7T3`8D<*nDtm?25G1!Z)Vy^hP}0iKknM`-$hV?MTOw zucR>D99C=(iI}njZhWJN9InA%-?SNLz zgoYB9fE5Arg7E;VYf_AS0s$1N2y^VWqfe6UBDfNp8f+cr?YH0l{`=D2xn-MWAf5BS zn7@-hwg9=sP}v#M>Opb>ndjHCkHkaZ@s87*r5|s`TgrGJM!W&o ztoL!#bSK3+@F+62rPCNIJEB1~kDFL0;xJ^#^T);~rgnaAn)g9BkaLwgf3xJ8|7U30 zpm@dw5psHv2QF*^mZ4u(`uwF06+a*M zy%2e>P1&e)4;9omU|?PIA4mmQIXlZ?kM*AOfz52GV52NrrXFyC`hx*Kz@(wC3n&Pz zav+-n?~-bR_co z;m=;a=Z@ii%o!Xt|2}_IGC)wmQ394FISA;bO-!L=Sziq-j~)-v?2@J|i1#=TNww5( zk+u%C)i3M2{FcugU){89<-qud{Zrm8g|{ErcX$5QB7!x_pfBeIy>r>;6CP=G2L2SfDmw>W>*?_z{C~~h-H6D8< zssgBvu~(gkJ6i@f*0=WczBo12Ff)DR_|B=ufh}7%507o?+aVp9ThTv!$DYeSJ1i#o zA%6#((+t;Uh0wMIeh$+ zR~{@nAq&%2Y}o*;7bmNQy@$t1;I_esjxP%b-};9$CJ~&XV2u&&`5v2^wK8V=3rlB zh<~jwG_Xxbkahs=5;m%zJ)*dBATTl!y@3QV$US}x7LYb^kh-f(m;K+flX4pg^79oN)FkOVDmnZUlwBOM+d`$aB zb+DYw>GA_fhlAx(1qxQDK1ebbA0DhY)U$Q6p`xyTQhG7+FFUqxh&;xX`sTj%k$=Y^ zB(?(Y`lj>~Xn_>AR@Z`>45_BbUI<*H4Fs4gu9IX6?L~i$s1ai+c5^Hhh#Xizk7_1R z_tbuWeIQWJKa3cq6Zn*y0}yonC-ZIWTX<~>4Bd@{lY%m^@rbX zmkX^uQ~V7^E%{xEt56j?L#md zm3`~`BLA-c^PxImYzlZ_tS`DLNG!O-b^!Rfa6`~GfDlOBDvLLS8YWz@A*v4cZkcST ztna~)Ht*Oz5P6s@4aIp3hkx!H(EDG=!1-I0|7L*VI zTPC2)M%ALBP>UQF*y1?{u06B&$jR#ttyfCyWO zgm??J5!=7U&GsT6tm6%IR{;6>*m4-qDf{?tXwXf&U#*G{6cTXR=d}>$2ue zULkuy3_s4MP)!Bx5@8EK@m|ChaG1opKwi5Whc+y4?(KhJYO3*jmmhr;=oEv8mp3)nG$A)G8D&Sb>a7{3Po?VKL|eCl&+D0hbjU z2LmU}OvxfsSWH2a-s%^s+W_ZH51xs==0lAUP|cW!t!_;YlJywkdMW#qrWnw&Mw zf5=ba4W+D3slm^34uET&?bx|tYuno1P=(K5e))9o2L8Lzg5q3rYO2*{wi)eG?yAPl{=%_};@m91 z!?|p{qYr~}VvqyU<;WX>!(fD^LdFw(OM`4UZ8m{f)pS*m1!8k2$cAC!ql>x7&hYyz zlrrH!07jUp4dhZG;V0~VX>D1)xAvZafvM{e%l>V5))wcNxV!Jf33_QeGDLm}8aY|# zc>`FC#2w|RI0)kRHu4-OGx@_~<=z6|2@?3q>U^hm9)E@o^j6k3w2#jM0Bt=6y0D&n270DK;NI2%I zhviqEm|c_YH5jbTT{GY0AO5swufwtI!JkHq>O*BK9$LskN+2)83;_gFkf0DqYJ&=o zsiN7DtwF4DkJjM;0y;#L$ZY=lmv+~9iVcR;hGpY***>EoWqIAyeFtjXMMgtfO*Q}U zp~2&Bcl(nMKDhC!%*@trKNvAS(0A0Gx$5BuFdTxU-sB%)KLhbV#D;r;uM?)|&7`!C&h8RwDtr=RB1U%v4TJkUJf%YTpgIhdl@ z(=Z_l_Q)h3C?Jny46%4HMxv@eP1qmOwD^kkA+N~i7H@3A#09V{>!#X2{9s@EfVI7O z_fy@s=eaVR6L$XISAJUf&96jUFB*p_lwX1QoW<*xfxXc-A335uu- zfDmEAXqk2RaiIz0!EWo@_FehPk8Z?+9H3#fpy6&k>x&ypLCXSekn&;v=`<`L62W-SidgzEe23m3(Dodeg>A_APkyJaw9!iVYkmL(o_~oOVAZb0Qj%) z;~jZ9tpm>La$CB?Qd#L7XwAt>cjOm4m8K@eS)A{XCU;mjcM*9M$RKWNCpva*2GK%= zS)k*P#WDywdXOE@nU6g$t>N2&*ER^8rX04Xgp_KmKm2+Ke58icB#<{iwg^Et13tf3 zgd7BVBw}!WpE*SHfZXDduJ+OJ%?0htR{z{g%In3WR?crjp1%>X zh7{&giinDoQ6Y30R;`BjA>5o|O>z1K_$SP0vIAr+)XI=Z>UZws_qT-bdF~y`^vCGR z=0C^pmo9-1-JsOvdN4+$*}$uIq@^IGlmH5BJIZw@bqah;#5K6opY2xDAk{>7Fso1j zBF#OBj6pTE{r=jzU0!3Tc##Ho3Zy& z5}+ue;J=f;z`SgilIDUxpNahkcSa;JQVv5AG$=`H0``FA(7qCYvJQSyo)dgXFdMRd zqF3Unnp7B7><*Vd;K*`hSSUF;5BDL?>^3(BkSu+rA_P2m(8rH zt!+GRI`YU}hrflOetWh!RlFU*FLrT z+_Iw8KiuEi*4KZGH?CgZ*4kF$Yi@06TGdIP{oa<=mbx=X2G+N>P!s`qI#Me#+p^g~ z#qPn1WWbOGo2z)g7fE<WKIk>|6SoSx+asRJ~@D5|1eW z2_FS1jW919jucA);BqX6nQ#m(f0te zE$jT;=Q_(uJ9!}T6J80@_Ra5vkRun-%vP$B+=(BcyC(2P!5kuuI2$vijk^nUm*f$w zhJ@(9EcM55ZUkXqZ8*XYZo?nGpZ9-sKhm9%@-*K9FzO-5f_B!Zgi#|sAW_>_)Krz1x?KiJJ|ih6()*D|4hz5(ts#*`^okZ(*OnrQoy3|}0B~pf zy2=7q^D3($r8*^x=dRtbye-9>yV4b`31^oFui8a%t>*T&%|oLVf#Z|gcv)F(u`?sb zUs_#kkc?TTe7<6)ygca0@ucNjo%vNOLThWPnm6r0w5zJ3q$U^`>0VVAY}&XTa}7&h z;5W;5C}IaI5t1(#0s~C38UFyp1m1y+GZ*Y-;!%=x5Jix1Gr0c zSMT@NOXur-{yIPY@2mG=Wy%l<`vuan%y>hP^^13`_Hwhy=aCHNY)A&xf(D2&3p~th zFqtW}7ukWNnHTOBzxd;F(uSw8G-fmwXJwd*C9yvUc|o9AhgoTysuC{yA?oH4i)pZnks*wesE@bq$cRAs#*D>dckY_2fw`Mo?qS@d9SuTr^mhfu08JV ztQ8=WfuG?6atmBj9|6CaDRx=vg2)Dw$$SrnEt#Y#@Skv)T*f{?@GgSj&G6R~Ab9fH zqfnNL!GG9X*BA^0m;Ed}v}tHVsBcC0*znr&x;4^TUvYuAs`%Rj1w%uT_Zpfzn^&yO zs;t6*^4K>14*wDY0d^AhHnXt3d5aE;l3K z(Bu{W<@sOu!k*i2=hdJ8{H1r?!M}7?`-ABfu{)(SelKoQivv(GL5o7!eYDw7DTSyJ zHD&jM^paLkqz;aiYAG8tsk zNhnUUWC5p01YnU`MkWrhsa@sG(mjwCtjKqedn)PGRcaDHaKT6$(hESnj< zDWHRhy&$69P*1r)*&ODDG5-1Iw4!I%?MRjg9s7kBwzM zfA!VRUoBnVUR)GfTj|^~IM}h{i{s;8+`(@+@%)Js&w~nUrHA=3>EE#xip5mi_#GCA zHW@1Wus9A;FC(l7P>>&syv}Q-hdZ&#g?ta+fmk{1&T?@xLcqxti7PWx8wp@jtPG3S_8Hu z(07bhtqQS_L_k%@q5?iEh}neL7m0XHx`&b4`K@n>`jo=qVSeq%m%lvnWlXt(-^9D* zR=951OjZkEKCzj|7`Q~dY8%ONHQN=R;Gw$xB}Ox{T^m%}Pp@Avp;oZsxsW&9*wDIi zFyXAP9*txkm4y(l|bz!OoY>_?q9=dM|7Ki`} zP;%k-m;3$2CNq3tk>3HEPPa`}Gafpb5Kaul@4v(ys9s%NThY|fQ(h9R@9SJs*U;h* z?Qlz{iVB*&J$W51?kc*QIVvpEnlN3 zNLtP_w1OmdOJtr`&Hp`Q`&!y!YIFzTXpHtUJevtineC)i8qCAv!7ry1e?NNO<#3V| zq-8V0;Uhi`g|m3ohW-sX!_KRg_w!DpQe2XQJ8k?X_FcIN5(pxd5>8o{cpkFwq9Va5 znWN=Fw&N>%r3ZS~BDS*?`29RT#XlvtLGXKssT#nm4k0Yc?XJekb7tWu;VBr6@_yJZPzwMWcG<14BaDU-`qyCG0btf( zT%V^@#or*GxybdSN?{rzEos?lC|_2qm(|*349}DqRU!^Em2;s=&0i93@MuC1tb6ai z<16{thDhfIe*2YYTDxDm`w-9OTU&eAU`5Z(E&rRJ|9r*x_zLcb`~kc`GcU%>T`<%O z*)}onL6jn+Hjq+&5E=!WpwtR^k+3&7+ik)`$yx%I4I@`gySJJtD@N|mg9n~hn1|YH zs=U?&sZHZkRD%geIws#xO{i9+$(V&?h!?DL4sc;6e+JW7C}E{0F^{ctw@9zfEr+^j z!32h-A41*+SsANmuZSt+14PFbQmeo;!QiIKDbh(BH(Rad{e+rF zE4@;vwhUg01-d>hRkB#EmJ#~bV%=fqR*Myj+7^Gm`OIH;J1UpU%ggJ_>%(=mHPuy> z6>wVoUMK@!I{X$Pjh9vfR7?hS;44|Q_FWZ?olp%W4Wt_CTYaTFvaeN^wE+s)gJ^MGhNLWC zfK-8bx*MWh3)aFf6B>?kYE(}T;anqfeEG=>U#$2RT}Leq80k#)*(kvQm;)cd;Q(%f z5LGnxPPtwlpTNDGa1>B}Q^(JCZXG|ga;TCjB3fH}Z2&M({4jxfh}MyyyzA_dnr5k< za1E+ipp3Vp^5yuHf+#$)bksLaL=RgIu9N zuf;5hf`W{U3{QqfP{@JN%k$AFy(M0s z4Nf1|U^WwQHgZG5b&E&*@^XJq!BB>$C}UY#v#)sARq{rX!B3a>lx1aC6;+hYeRt6m z3>xE2!5VQ1F9egw#lQ)4=Kw!|KJbJ=+qFR#6xcDJ3zZe8_hleB+f(RK!EYAjn9M%!_&%8w{cYO1d4J&I4FbR^bfQ zg!Dr|Aq0DXw3fuDfj|jyiL7;4B9vnzN*ht^ZG=3RPG0CTh*y+*1TkCT>WNkV@3Yv^HK!O03kxXU*(?;uu z^#UE0qACU}B{U}_Dv2KBu8{RN+?F@!F zGc#8~&u8-dKjArb@)Sm!$~;sd2vI_#Ra3F3HXSZB#nD9`n_X+mM45;XI)jkc) z{6YxyoV;%f0iT;Ah?5!*n<792%jZ0#Tnf@`F((LU_%?Vem80k-XAm74Yd9PMFa8#b zNQf{-gD6LVJd^QKf|{vDA^iTON3J-%clQ4KcmD$w&HdxxpeUPreVCu1$~hjSR7@%o z8JDM_FG6gcvc?0Xwisr65%MsdX2>(>Za`-SYC5EXL$e?^IKdJv{Rx!>d#G)WxvPhXPRVO6JG&&Yblnj9-sAMRI++>7s4aU=uE(T%;VG1v( zAIi$g%E`)cQW=rxav)Id#4;kv(Oy(a6b5@QDktKl;LO-CWF)lY2&qb337(O_l^X0K z6oN>#M3OUFts$_K8qY@@EU$J-N*oSXun!`4CDu04u83TdSl<*I4ACT?g_T-_#nH9` zKo~kwz!Ly@FfdB3#gL$6MZ%KYhx!Ax_d{MqTrHA0Mj)Kqfl5$t_wNm&*BDofsjEh$A=ZlzZ@p@)O z?M3jA%3Z2;SO_N<8x+a|f*g<|m{(An_ znN#hju4_Marv1zrEKez_?ruZ5ni;NzpX$YYm|vd5N|Vgy@Vnq;pi>rlnTXb5LTtdy zLUAy>3x9^c#90;;dx@hr75T?TuG%VGkA6XaYLVI|$rAZ>?W&!7BA?>9RcprgNpfHB zgSSj}2X^=OKXl6^@|FKHa=q{7%XfUlPk3)WwgVY_J8rx8x!T&@J8r+{xteMSE>UuY zEuR6q5DOBw;juOg>#xWLbYwcI3`;GcRr8FaWmu%Q;!3f;Pdgk5EAi!6vR5cG{iQNq zN)Tskdy~lt>l1L4wvQOgbf%}-ty;aQNLI(zCfy@E0a42eO7Sx6>WOF_nApt~3tzrq zwjL@aaxd7*%m~ewFlR(y)%n8NOME3Vct{P#P5C8l>n@(P*t+VpX#+Um;h~r@#{Ph# zD3EV9>#UErIw^oiTXX^Ii@3_7>EE*;nz%YjhlQN(UPKU4w}s`GRf{g&VuYoFfEXDA zuqu4C#V1?=VX-(3PMcLrpBC!@j`S?7=;FVG9r=^^sxC5P-b^U$Qq?AhzP6C! zR03EbiYy3!1U^66&Umx1KuA{yibc)2uBm|^sal%Q^>d@^)^+!99J&1Z8xCxno&Ec+ z<`umoS58hGgUN%3c41q((8;b8z8uBA@IP2%hy+mgx-4u-!EZu>OURkk5+ZZszQC_Y zzN;CXNM(Ae((kMksoN!5V53?_k`0AZMTRjs+OQ!^Xn-i9*4$E2Q&Lq}Sy|XqTYBll z-W|i21pJltmD>kfEnBk#h1q3Z|FXi;>CUqKku3h}>D^_jsimR2h3~n)`bEHrqAB)-+QT`xhhymI*oP_+5WV1we53-9a7BOs*5^NmD9yg*r zLLM3+s;f-SgMNL|OOXMpmPdIV!U-goB{4#~I6%v*;K-axUMMA1pN)Wg$%>^Cr~1j{ zQ>{#x>WmdO<>m|WYw5@rqCH4fFW^>N2{#)}+J>!z2n8mN2&-m#VfLEo1$kk!>FBM| zXdb6JffBP`)K!b6WF~^n7C#~ReNa!TR1&D$f?Jc`08}?4ysWyCstLV>z}d;^U1Uzl z7bPh_y2!xFSc1IIM$N3qU~(cGH2Lu~Ho8jYPb+Ehq$TE}1kVbcFjP~Zrn1nkN;=g% zrA)ZtlIn%)6is^VsFG*35M97wes7W1<f96hD!WukDnL{m?|*MWGLXrm^n*;1&f!M`i~N!!RM0C9?7rs zAIcUaG?Q)8%>L4Q&JAYBtU>#va5b=oLMq44;V@Hr5C|cqx$rxK_FeSX7IBOA>rqr4 z(DMS86bTU)K}1w4O15!3x7liXsR&S&Shc{f)#sN%*UD@&-N6u)G3;9U2BjQwjTtO# z7CrGUaxu1NzRlKHUsqdIL9Lgl-oWLwIc$y+zc-aKavGq(1vXov7e$IPNEIjynM?}` zfkhOM@(-cw`AElAl@*n(e3-X|>$MqIsh>b*K`_wpKwZ{4QLxfP*Sr-r*P0 zsux=GvkUd<(@RmKbAdvAI|*5&`8ObT9uxc9%!bsZ&xK1uNjE2f1XFJf%D&Q&aMTPh z#K@!HByWO9C^5ke-BSdUi&9bU#QFU~81sehS8*{#u4{fZ>rf&=cSWoKXQ{ z$b2_g9i6-Y#0dQbV2m?waW?uDs9j2_auuy>_3nr|ET%zX!4T4kg2*8QOvf7585@V{ zR<7cFaOR3VQ&$`w-rVX?K0V#seM?F46@!CY*C@@6isUH0;mbGPc4EueWhIW zl;wEaz)NdD(sw~p2gdy`3VJQ+PKkk`G{Zz~CCLy9C3QkfCc`))@&*G{{Hy-9S|wY8 zd6H!VD^i7xu`)?7rUj&yl?fMHxy6F4MY;u)iaj0Ui1SnE1xs8>?VcSddZ-qS&I1~cPy$@R&(0z*d$b`oXZZVLZJlK3ZZZ(k)nlm zCy3ZAC|{;@B$O}bDL(3MVMHi`qbxJ|MQ|}ZqKmI5*Ml=N;>(?_U>djf-No}B?xzlSkREc%9w}P^0*igwk0lt z=FUh*&I`-ROwY~8wOb8oMyexJGhkehKXUS^d<3D?lu*14)8y>j_ZL@i>(lr#?5`|V zz>c2J6JV%X16M*gFp7vU8|v{utts@`5Z78_v(dsJvJtD2^rBHEhcYS)^63~8z$sa& zS!!M-tqG5-JCC1~hOB0573f{sr0&x2)vxJ==#h2W%%r!}=m^zK*s*7c$4c3=N?JC| zN-rXD#X#N3$E6)xfh7_87F$o#!APG;U@Da92+mU_X&Lmpft%67A$sdlH((>i#bD^3 zC9cFigdC)%)8rlI<-{|rZE1#G9GY2FvER68mnLE6v?yqR*o;cIZ^Qj_A>*Z-U7}9g z5C0x@;_&^TyR1NzbcBg)Z(?8c7Dr_hzQ=_|gmIR*29^88MefXCps2jKJTE7+&|OGz z9UH1+7J%DYTqm9t;yC1r1Z6Xx$m_e}6wllf$(X)@%_3)i6;{)Znbs@F8zm$d@h6HD zQ`HvakR7_h+L&B)p}XrKStU+eeR{tzvh-w~hq zf6&i?vs<>@TN?<}`muZKz?p6`>pn(c2twlmfgu^;4hjspf&xR*H6TI}(ZCQt`@`bO zb$yXP{GhmcZ9l)Ewe{4&t_IIoYwMZ4-3=bTJMy0AlA+a)@C^6f!B)O%plko3TZ@VY zy7nHrqX>1CYJs}+V~jhCed4?YeYA9g1{r;b!&2%EneA#f1ZX39C!BPxi4RrL`jcHo z9h69O?F4y++g2>FNz9cYnL(oV2?>{AkJzZp9XW}V#6w=1CrPpUN;qftO~wk|rK+<( zNho>O=R_`N7Q1x8oQn0qA}=xdq!e_gfTeQ!LPJ$hy{87NqQ^5)<45v8l8yNpcv#Eg z#|#Vh%_RqILL_|Ryq%jxYZP*ji?IsOA`CK`1`YP5-VNB8JEQicSCE%>Cxy?&_pm%g zm}w^j89Xf1gR10pI4IJj`AW%#>r`E&-1rfbTNF+hvaIorDocXwzVq1#ROsAOEYbj@ zxS|;%1cQdhw^NTwsDdYu^g7s4bg^kCm`M0aK8PK0B|s&#^%f6HxCk61ati}ETZ#H! zEzB&m3nipuj{Ye6n2Z9~B_slUH=Yz7@kxd25@>>5Pn`pVU*cw;Q0z_%+H^UfmUOom zb-mbA*jcKZpf)MM5{a!sh4rdlMr*8SCdA@v6twne1fb#zHP=C0CLV)GBJDw+8|flyw3lfB zxZf9uexi)_3~R~Igwo+XZ>{6v;`yV4d*&87+o zYVs3H62Ew2Hno>nl)n1w$m^v^GFH1gJLkT>C`nZh{N0BkQH*ngGO#el3G%8zO|bbG zh5HcfNgA(QI({dbU_?!d5EUmR30!_5^7_9ofvDft*%?{26o{^8yW5f1kk8PP&ndEo zRRN4yk@Q}eF{~$TyWQ@5cRrG~;g~rygg+Lh-2a9!)gms=bADv~)`zyPuiaVuS`zYJ zKCo%iKxJd&+_@!bteX8*>;|%sZ6*(b97Q6?p~@LL&w!&#e>B2@DG+**G|rKy5U2+g zlXz3|%Ml+F&^zK|KANnEkHt^+;*qg!`t0pXtkRD)3PjqIFO`IoxUACkNDVN;h3ilh z=usm|qhu6G(U}nlb3mJLph?&ROrC*QrGiJ&QF=mx$z;kk_?AEI=(Gw)^-T~@Zy6L9)k)?JUpSCpgMRu@8cvjvTSqM5hXnnj;`AZu-yiV zl7lFWSJK9i)X1X{Y!5xGf-M-Bs=d^PUz)Zxh_uATmk6CpC+sZ9OcXjdX-s7fgMM*Q zZ&TQ^XCpsKY;YPQZ2^%s54OYt@{02i1YjZ?V6`S8FH)OS(!#7>g0y69H-#5dw;z7^ z#*Gt;35+x+mBO#W)}egK1Bwe3AYy2usS2HtLBJUquzt8&=x!pT{!nzf)dmUY2RyJ- z{t$hX+DttC{gENs%(5**jQ!>-W(I<0rZP@xK~q~o zFrw{^VL+;Y;u04N$BXU|Y%JV*U>@p&F=@^3r&p*o488H!!i4dl@hhEGi_=T#l-d}? zqaQOyDE?%RpM*P)SjUv&` z*_Yz;qLvEK+k#cmP8bqZth6ek8-G**)Om0OiZ~)uUm1Q$N3;|1`SVlJm67V(=bq8J z5#QdfC|DZ`zx;?YC9q>)QBtrHuo<=7zCba|Qne{$tHl>$oQ=G`GFE#b_rQoui57^c z@nkX`DV{v2^vB}KdYqKf3i%j?SFv4_g;y^WFU4T^g<@xqp#Owvsel<7jn^d$lW7E- zhGpv_0Rs_E^b##yE?hk1a)|~`dfv=}a+(_IDC4^?Ml0#xM8s}xT>`l%YDsCzClp%- za8fv=!r>u7Q5p-QgKCsN0ESLRv^*t9qlU*Y8@nahg^0XcEJ*zkCmdVSE$Km*h`j4l zxL|-bET&Yk6oJ)zT$ z-RRU>c9)T1=Y{p*%dp5M91kj)uyIf#VlbLc(kRsi-l9p)w64Hw=(viq5DpB>^SHJC z-2!9MSd(j+3u?nRk(HvRFCcqGJtmCn-Mmw1tjhF}Yhw+)8}rI`x0GpZy(9f(k#;nv zeqvT{?j78cZfR|&)+g#dC(Y<2H)pY4ym&bnG^8j8(=>DZMsL@2pF zhQMrrPvYQ=3rPxXc59d7*I+in4b|LFioMtng$VW9 z0l`>zB5y(fg2L-56G@)b*(FT3*+2m8Ho5_`w~fOgty%h3vPqZex8emj9Nu8vo%9({ zywP_m%VJcgmqzb|H5mWixO*rBi>MeSL;Agi=rW=98=+-LAufvdh6(CdfqptEfNCB@ zBb|mgh0Sl)m*d1z9p0tabxh#7rF*>-gPA2dVvW$Dt;%L71lfrQRz7@B;PXaQv5_Cl zC|b+;DJo1i8O_Md(t@4fFReTa?i*=SLy-aYM_vvAk2d5UYiZPQD$Hn9Ba&j{a>|5n z+643Cy`g;vd3h4n`rv!tla612ss4ypq+@fup|}dT8HdA}%t()iU=0B&*O;m@J`sGhe1`3^OZHeE65Z1+tx@b*pGTVA6UrM9+Ui53Zq^U7`sW6|EXNkrneRJjx}J zO=e~x1=Ss@?*Qv7E(d3chjmZQ(!)eP$yg`O(fQ-Nm3<#tJcE@gCF#@;ULx}ndK_D26I%dd~0CG5<(seXWa+=$rtLKgFI8<1ge-|%!4juk200uTIDcKn| z^oxOkFX?Gq*@6->DPv&}Rf|NP5P`d>Akhprfy7Mf(5{k-hNL-GbQyGs%2}tH=8UAm z#G&0v22LPFAK-*Es&@Q86*21L9BJqOfg!BJ`(MB)$kL?+!W#jLQY*K(1+v?coo@g{ zacBm|8z603RL`b~>Sc_bfUd{TBuhVa5a$J8gNq7X{7!brT4iqcl$ve?o60Pyrv#c& z;)^mjN{vQUq&gVbFS2|Jogc~6hGr&9io`)`ip>f&1?~|~7003hswYIm#pwXSbF)*} z`t3Y=h#=Zl?ZTe#(vA|85pXagnMmzqnacJfA_mhFo-o<06u2Z>sILcxL%N=N%4Tm7ZP@lEm!JAqQcUEcsqYHUh+A6XG;ZK5grQ*0pNOe9eW`tdC zW{<5z5_cOqQI?otfX@~8<1oNN;bL8KgJYp=<1re>#l9v zep|h@nvX|*HMMmL52ieUT!EG}DZoGRSd1SH$Mnr=S6xaW8*oGceiFx&K~ju9;dV*X z%Fb#5wC(BL;o2YFJAONrl zgkI>yu@fTaQtY!FLyiL=Rh$$O)#Ayk?c1>dB2OkByNP0PYId;X;hSqP`*%gWH;dhS z9!n@9;OfCaTK)ulJd#gn=s%9=8XbzEZ&f`rZo!4f!60*zF2~BmF4m4{1s@`bVu_1j zTx5%xXBiOxcBH51mGXK^rDUmoKY_@3J}$YB(i0YC^$BSpjy0tPKx3Kc0*KbCz$76Q zKGqVDUPbFOz#_B~yIAq*4mo_Gp(2Q_Hn_1HQfv0-LrF=y+YAIK7>HWVn=hE#)K1e%$w2L<&i(7Jw7KUxvGPwc9| zKO&npQn#odfuS>!lGuen&(I|MnG#LG3s8QdS2tE31l7nTMnk|nd@jlxjn5jT4nq*6 z7|;?ab^Hk$(cOuObYq=!n--_f=`9>c+M0p<6cC^Wf>>n>`YfVvq>e7Y4~#W&Ai+}r zxC&y&7H9m4a$4+pbOTzdQO7;g`)+t|$L#UQ?-L0|<^70?Eo#@HCNh=_!Am17WLIb` zC&s9Dc7_tQC!{jkKu!_!@axk-$cnlmFGzUQt{PQ*nJ!=hm{)GLt1z=LJ=Nm0I^*U> z%`Hi#(A=V}LlaI}8r3G3n@D>k>_WLDN!b@f2y8*Z9^}5V;Xrwbc!T? zFsVPF;tnTf!#zN6B-EblB3Y)EepmKNHVGmQW$vnFs3yf$F1!+4RS7P`^VE(?3HK;X zALnv$9KHHFJ(PhBn+M}SYsdsYR~(b9Hb$dlEQE^$+>x0jnv4PN2xcHjgN_GPTaAtH zn4KLTo4pkMT>X)&)?faqul((&uj~ip`pZaU%MJf_{SCjnQQEX_@HyW0?7(X3J0|v# zJOFJ#Xk|44XFiC}Y?mZiaI_yCMt~pDA=9#pKwq^Ev8LCG0$9m_Z%oE1uuMp92x%&y)MAu@UYpj@FeQb! zn9lulkwuh>f;byOcjWR#F^8n*R`YMdI=DOG@M`i+B5x);z*^NEhs3^g(gCRAkSYvF zvSDO6K?fF~l^gY+z`P>E5#kQ}Q4&^!fNi7ahe2_x`h*@-04qb!&4fFZc#-0b`<{w1 z1O%g*QR;)hmBQsSptpr1BO0#P(>H~Aq#aE|sbz;S`5nC z^3iixr?QIB0Z2#{H^YM9G$f-~5c3#>CN;#0nx`m7O! zrZ2&+XrraL^xReYN#ZarD?!^8n|{2NRoIxCDie%$ym7J>*2TRzU5 zOGaY1sQ?Sf50U?s!2QBX zT8jNCGxIvIzX>MV->FnjrvaluznqF>P}C;mDcWyL`fuX4L7ce+j+MuOCTgd;QYR1f zfd%@!DFm?iBE=i`J#~i=-bBoZz=N<2Koqmv>~{Idm=b53sU~B>7Wj)wg#Q&?A=QeC zUm{68v|fm&O4)0p&@3m=C^8N8hrJrNJf zhHCS-aDGB5nsFdQiogdK%u9v}IFTV`g+%aE9eG@}IoT7C3j+JOK(%?Y%g}YCZW;BC zMlhrTIXtMv7E<6sODxB#&-wX_EOotFj4s`HvE}~g?O1_2RvuJ11vyDnxLnB~D#RaO zn7rs-n;(`{D`Uf9fk}$)lU)W!Mkj+f15p5gsyMvRy2n%EBF7;XsD!xqsfcse#}lFj zM`^!>U0lj)Xct#$>0D8kNSbN3fDvk{D=W&&{)*+*)3q+Pw2J1pUUX^6#e>#uK-Bmi z>}HzEaM)>NPSU$dtA^e?iWK6UmN zUr%lJSKY}fWNs~E5W{5}_LL%2?gZmC} zKTe+_Yvb-sb5BTp)aKWT_t1%&GV_qJjm!oEC0A0$h0z2;sjsE{?NiXjltHK23xLCS z;^mN*0<7{Fs9Hl#uDL7BDR9%G{kU>}g zZ^qH#L;f_nW)dCHK{`eUOx*;f2j>CQKo;Tu6%_=QoP-Me>4SZPH^;~z%isH6#onQ6(Yu7FY-quGWuc2PCQ zAI31v@r66c&3YiATu0WrB0di5-HrC&=oCoX8*n0JT9bQ)!}UZwU}3*L^wf-NsVTa? zX@}5}OS`CN-%s_1-7C}<-&v1Ei7Br@uWz*S?&uP&z2`o;kgTAjI6+qHR#eJPp3jXd zvI;D0Q;xl@*G9z`S}CPVUY1xwrB+Y{1Kwi9@_{qPcQaQjsFL+DN>)SVNoZWu9KRHa z-HOVVSQoWhWi}l%hjpM+JHWoi#mwt=<7|a&Hw{>CTxp|3@DS$SU3e4z7L&cv&03Wry^J+Gdxt}PFhVkV?x(CnVHl(EYp|i%SFXve8+OC3r}_uf-#~0=6wmZ zihNIeGtPy5%hxSx%L$-aazaZ|GZC14z`#U#1m#-9d^TNi3sX-`L)H{`ssVvSG8^y! z8Fi&980vA;aRChgqqz;v$^(%{`BWspha-;@nj0R7NFzi1Bb>y;D)5@KVsE9w>9WOM zufjrs1b0gx2>2ovP)AjIvcWF6MhATsk5_dxDO5{mCclc|UipD~Y%)1f;poZ95;_GF zsipz4Iw<@_E)oq->>~JybQ&YFUa0sMbi#sXm|OqoW`lRZmCOxS9w}C%@8+Qvm(Z)5jZ|!03-;7Ja5VH@~3U z>6*N(z37(eq9Sjw+`3{1zx?Pk))Cu*eSMM7K9e$%x_mj`-G`mp0#jdw3IxIf=@1VU zK#9=a74sq zsbNg>>(s;?!Wsm=>{Y#*gCO5S{M7}X9SHUR%CXyz;aFlGO%lfrr*-q!*xTY5_abp} z8hSB6Rlxw`M~L&Z95(%YNXM3=SM%3?|9f0hE}h_?mkZ&IdBu%cYWJ?#?J&FaGYYkX zFCNE6#i18+A<2}aPl)#_*^#&>Xx<~YYx3!Y`iTGQ(@r_7m9E6WhJ|odO2znr0@KXV z8bTIlFw&;u@&M%)>xU7$L{TwHi&0=)OGU(#J}eiaVz?4n!npfB=~kXAry$6yAHGT= zWi#mw^>|U2lM-}@ntC^s`&13}q%QCGNZa_3yh?ab7deEL+@|QzMBF^lb=s5YDM^37 zz(2x}56`<%uG@_4-%3FSFMbEtKHZAY^g4Xj4y1%wc$ zP8gX^L_fsFZSzkJkLGzM*`K@7m+|R8@8}!yhZ%6VV)R+@M?#(IkFX)rga{vb7z7A_ zurT!!@j!@Z;IshaSFM?p%@mEg7l~O=y_t-9ts2%R0}q~!&qF2E!c+bWavO{jlUqkF zo31P^shl}*((O$1c+#A1@khf0c@-6Ty<^{Zdc2M_w;KTBTJgKfr&VJ(`W2xjshFgt zl%&GvrS_q;Xkv_b;SHZF-S1C#iOUr^ITb!A!B)W3UKPD~j7{(&GltANf?Eq*#Nr?3 z^Lf#zJC5E+6?sdSF2j zAj3N;9FK;+9-og`G!u1Tu%?qC>_b2fJBC*vQ13>B-YDe_V}h6z=$E=wM+gXh@rC`f zH?X~Pt+kB}#m$Fu+-0HBs>0H$k?D%Uvg}WdiYNQdzVR1rLie7ll+DFCrRaLwUq9E|9eqm77HjWi8I@^jb!TVuMBcui=Y~nuUmEAn@xhzWTcjx z@>;|{!ytd=8lk4TiW8HstcvuRFK$(2c!zB3InWID6OW&7l{%uIW!0Y1wvf+L==S+< z*m%Km>NX9S$E<! zg4+t|%~$ldv_<1~F%=ilE=J>J1he0|-d$hOICSM@?d^@7xA$}u<{!?DVz1^@RAFEC zY#N+%j=T4kR1VCQ2IMh`?_x}q!XG1sK#tvpz995X)A3D-G7qRdJ?&D8CoPZ@ECNtN zQi%goFisKsH*L_aXEJd^XuTV_wQc9@R`N$&d#eYxf}A zwhFlxTL`YB%%Y9`(ft1{$()_H-{6ItNY%*Ow?qn>lB{`M(O-Y>%3s(rd zs7953AHFoN_p)~-Cg7kjO+%?zO$wNzVdZ{mu^PJ{u@XJ(l?y#20+s^h{cG;$OwbF^ zSq7uZaK2GM+|Y#tbAxh%#Z%^|{wtu5F(;A2HfyPFe}!kJvMP)vw?l8^C|>g`9Lo-J z`MCxcpQ^4d$}i0?EbZG_8}?-Fnj6Rs4GpE)voa2xob9jaGNfJM^_~5ss$Q&(Ue1dA zSvi&-^Om-fj-&*Bwb}%Qj%7!=kpMgrH&*~x)EJ;O*4zlg=A6r6 zt|TQT6(k|MOnpmypt7@gQ@FVTBheQ#8L6#!%x(#Xfi8-z9i{MYpT2ZpWbaIQNpa{4 zLt|UBQZ3e@_Z}N;Y#up$+b-2Dy<@`z`Jsw$^_}b*()MUZjz_hPrN#(atV@M(iI&cu^bXJtBBKU@g4NPJ(ANi%LFW|v9 zJU9~p9L&ya&=FV5MspFjoHGHa?+pg7x*Cjb`Nuu4oj;I#Xm1Z}n7WIsMLXclNIJ=XJ3K7sgRtYPu?S#gaoxIfj$tI zUrJTmyHXNibg7eOEoLz(DNcI-mfKy5@B>#2X^tdCni?DG!=ch*@VfK*V3^=$F4m%qF?_n8gtQc3#ZOMMIW`UUM%zO=7Gq?&}e$aHN@ z5h-O|N(UV>8h*$K2?kBV9>NZz-g|*i2T;F8gesUYon*r1fMg{nr_2Z`DVCJ(hPvuX zw3de%E-i%Qj(`i)%ojomR{b?|j~67>$im{>6C2K+ZCjBm?y+281!N(EtVlBUAkeul zMH1Uun`)~0S{N;mGZ*A6a=s-&03*emoN}I}0SsYAKq$w8P1kUtN5FYUa$);=i;NM7 zFB5%EoB=?+YVuLmAQ~od3#UQ6z#UH9Q4)6tTIoQAsF{8e9e&UEBCri;agWwO));l) zA+4hWiABt0K4)-bhg#^1l@!4uu=>mW-W0AsJ$BgvU-8cIB?w9@WiToDAS0N`azONk zib8_XyNX(ecO4!xC1?}N8*57QYUfH?hIStwOVJq(Wlgmud3DjdR83;-O+}Xsj_(!w zSVKigLtSC?om-1`4bTt7M*ahqC!K|YsuF9TFQ7%U&z+nE)`bq7=W2~!y@W}k4~T{) z2d`DNK(G&(*;?#+keBOC1p*a5s%&DDf}`_%WfsaLDCD369GYAh#2r+X zi}Qu8ojWesVoNpH@+-snc~#MW8|*N>d-$F9%Rl7u^l0wv{WI!rRnr`f4Ad%g)1ge%#5k9c)!~YGm7(Dj z5A2_Lu)QJQpOIPpkFqrXq`56|AgSSd+;S4cQ+QVjP$pMBn+k_sD#pkMT@n*@2O%FS z@WOCw9dRZ}SoLbGm|+_19^}%eM+&5i+0sQ^4e7yv1LlAYqXqfD&uk)98s^M4+^FXZ zYo)n_m0m}jO{NNl(pP_1da$^|Gu{tXEPR>#uwY_LT!N?*w$ZWhPDhA_2td5 z<2Wjw3X~3aR<;^cHRT~6w-J|@#mg{LJ(4WfJ(rO#ikNB{c1NAxJz7 zDmB7d=;l2GBOR8alD@DKgMK0DJrMWMW?A>f_{(8IQF;lrS-vtez!WrFfzx-xZ%4+} z2cwxd5eaDq0aF57fgpG55%ypo5{arOnl7IB)(c&A9WNf7zjSQd-pYpRmM_k3o`^op z?)Q~@J+3rn?YoavXS+nr$&QKQsap778KUmS)^N>@@4#Mwsi$3l zJ3`w50UX*3M4_*rroIgb-9f@Ab%y|)4g0{T13R%3ggG^GGKwP;!#ISCP%8U;|XC3Xw3{v_w~;>{+ZQ zk7}kEFnnd#uKD~}+_1+fetvQ8#kR{PTC2+Isy2=Gu%l5cUs84?Z>oPjb;MO2s*m&^ zDL}@R){1r{80wDlH0mV?Y9MHV9f84Cn(4@DC!EgcM4g zPG*UT)ops;n22$&W`Se=7x%5zrTE7ck-UIf8rAH=iYghe>@+O z(v&igyrua=X_OW*iAyIUc4&g3(jW}O31y+|B$`v~c`b*);-t4~XwRn$=^*Cx14+m; zF8mPZI(a3~B1dB%$tWM)HN7>^?~Dvx`O%Y?+oF$%0kQUr+V1w2PG|C%=jfi3q0gE3MZAkhc2(0KCEA}((6s~~~ zbigKIk8EzL>FaK6*z(keU6V_D_uO#hX!K{|Zl1?Y6VK7vBEARi*eIjg!GpBtt<{z*D1Cmb{7xZadwH$MA{Eb!POGv-yb z^;|xC*`0SCF*&1miZgfA6pij3Z7+-DWS4!jE4970ed79^ms}%?^L>3U8vEKe4dn-% zZprRIy!0dnmCDhrC|-eygP@cO1`gI0L5gWPNP&8wR9&hCYiRLG0SIh)#83EkH%neS zSzfI1k^VvU`u^E_rbnM1U=u(5;Vk*(JoLdt?Li0_ z0(tm;v@{gEX0v3sT2a>_1sc6{p`gV!I{%e$Cf2(MFW}@F@Ojaxb{3-H(s4R?zb%OM zw)*vS=-YHW7lTIUD@IwcQaWW3>vQlz*WOvkL1^pSRNN?5j4Dsa5@45J9345NkAfYXJ zssRjLg&Y&vpgP#3dnh7AoVW6+I)#q}OPE)=$QQzBKt&rJbo>T>_{x`|lQcdjM4dWG z%ja(_lw4WG0o!Eg%Lj&2oH_DhQ&)3UWs7=h#@dxPbMUImW};W%%RbRkQ{UPUivG`y zX&FbxCJ#=?X4X9ruzV^^PeQ2~Nf_`^h$bS)4c02syZDS0g;P%(4bZ&Ue3$@y4!;LN z=EAbC90zOdUzm%OCtGFfn8kY*XIYB)=s{ZX<1n&!! zjCa34O4tQi^xTx*RjCg`FGELY_HqSCRT_!~ zL)b=Kf-pYm?)9$$E3(;d!?s!FoRA`y1qO$RQw%K5J#0x%=*=oFc{BQ?v|rk+so8m< zhMa=OWCvw42B(8NR2C^tWJo$GN}BHo00#u^G!;xB;iT8=ZF(E@gw-k~oJduGzg~7H zbY89~uJ~5ze9PPW=SurdPq1sg@J3U0E87gI{7IPo%WIN#D!}EWmvU4Yo?%qOja0la zkjQBDP*wylCAmbwViy>^$%_QRAM#05Z3N$#LgrS*zv1J^xsaC(J?3G2eC*BW{l%LH zw;vugqSiaqSY1?DKUdN}v28*%$_HK9{HJ5ZyZg88!ns;sRa{?N9R0>mE4J-=L!JTH zx~H}rdEuyWC?V;E zoFbM$iV!O%_K0`F;<%9)kUpPkPeJKJI{&wp6d~3A`c^~@Cqm4kCblPGmb5kB{6!mF z#eHSyPE@_j!k=?#5qwI)rh}#9%Z2?Vt9D7h;Y9Iq=L>Nu*#NWK*|E3w&%7{{k?yn> zXFIbCu4X$}0CQsY6OA?QRJZ!!`lKH7v8QB#9mC3}KwxnSBUuE&iS3n@@oV*9$c*hM zH10v25pGJ6$CFl|f*l|^^n5%pc6|1bQ{2Be^V(oWMj`XQ_L^ARM}x2&k2Iwhn7;cR z`SrKs^=3rv@!```aLjhVtwZ-ZoUkxgV7SBagY`F!Z4H0c3Qg-swPac|VOoQJ$)HD? z7iS%q5WE4d=8>1>BMEDR2-|Q722KQ)J#%w%Z-3U8#YYxrOSU)nJ?XeJVe8T3M-m$I zD!eqVms^LnZ2Cz~_(*A4qoiiogBY1b$Rj2bk@gd6Sx6S4%CQzJLjvB%;vw75Do0iD zezN+ss0DH(io%}TInW^*-#IMBOi*n!s9{lX(=Gqk^1J*cdVE}f5K(pA0YL*WVU+X zOaSR9ib6@Jb-n>%?27VS zcdEwF0gN+R(Q@06%0P7J*h_&>wL#7in^Pz~Syobz7tG1dN^_)Snlp2~CcvoRHu$_r z8Xd(NHRX+}Sier$g+Q!DIp@pK*@j#R@#D4SmP|)-vNoB8+skUBGfsb6qD5WVTv}Z% z9{%_C{zIcXTgqp~_wOH>Zz*U!`%_gP%P4O!I8*XdDm0BvO}2bbV?ynwPyqU8 zj?sm-w%wy63!5qoI}`(S2J_6KFbueIRFVk_YlR#M9+cz;!dfFVOUUBKNt_XS{-~-r zvwya7$Iy`jlm4u9cWHBTMMH0NoPUA`n)gf&@7E0*8bg(lff}a6SwX1+@ip-y*fAbq z$FnJnK~#+pJTGh%jYdFp0b>)@d%&&@6O{5#40@L_7nK(K=pr19OB-B8HWy+ZUU-$< z=CUdlBZa(t=%S0g#z9;-XmYrb`OH-Ea7W+l9W&;iUH8391}1vlZZ`1E#X0t($6G(V zd+VM@2v z*Oms zshbOnZs3Bs{C%+u<1QAiKJ86+fq_pJf&zSb93cnEV1P|cumSSb_u=@|!lc~;3SOOl z3dvX*>xZjx+AUqo<*0osE;5^Q5zDjr-8_~@jun9g;N$CjF%JVwz<8=UFkP{9R*I4>f zF5BEyn%5bs>Ls5!`pk0ca&Y-&SW3=_oz9AQL?*B+P$f!}#pp9$Qup_BosUc1%V*iw zuxQ!B*5`-_4NFE?GH|g1(TPa1fEXFpj&SchaBQQWF)ScCbIOmwc)`$U6)nRxLN?3R z;NW#o2#EAnxT09a9T6Te$Wmdy{NdOFw;%6A4oI${c)CoFR9U7e@W^*`M)8d?D zU5K@cU!%GW&U$gA0EQbOzaYev*<({=SiysYKv1;YqV0wc1Lx64NeQK~3#y~JErUvF zvL3~ICg14@RW2^hE-vnwdRP@4FRc!jbV4ri(#?Z3>{cvQKy@qjQ8|u41Y=OV4JCtE zDwzrrYpUe8QVVm7uAAzF@t+hr#;tL$!!e-c#}}8Y)BEwxOUv?di|2Ot_APL&hg zOSJpwD3px&ZPv`z@zJ(T+bh#2`Z}_5^4+#GUAoO}HGOqcJIW@Gd(*Q#c>fopKUjW2 zFv5f_4)7BnY@?M{C55M`M-omJ|4cAi~%a2^%g7 zyV>t-C&pXk}*y% zRjpc8Cu>}sEgIQ7O-K?fE%%1R+J98A_s}8-FoFP9*hY#A`57p#byP@9aZxm03RtXY zkl3_S9nW75<+0-&NJd`_cCkFh-}fMFs@-Q?X*L-(Pk;+QX)u6Lq{*++VK_mF%H2X} zc~9&zLLQjEF({LqHJweW@hWxKFx z`SaN8XG0LtfBrZw+Y60!K$Rx+3S+`fc1Oh6)|#D#E}uHe zK@sesThKwwbO$XgB`Gl}C2 zpGt1oM;KtqxROA!+E6DM<@m zyE+Fa!i`57y>(S(1zoi@BLlMq-c9)`i_Vg0wI_Hg1KQk_fGaoOIk02zL^#i1R$iB% z<7@t@r_|$drlpNuHeEd(o;mQj`nFyxqkSPCPw(!1+?`bIzT0!hdyy);pR~%oA-czcsRD^1 zJ^(}Z(TzYpG|wM$kdF=+3qS`_?QkDxa&n{!#TA$w1?%*vt5%6}u+GBaKKP2H_?54y zKnTd2mOdk#zXN={yH~+~Mx`$?!p-cT#DRd8_lpE#&XNN-G& zMxMIW2?fIO=P*`+ERpgqiOGhtC6N9By#6GYfgZ7aDVtki<;XWaT?ECg7eewNiu!&2RlawgLT98+ zN%9(jXC-ZLQORBad-G!nU&=OJY{EBo3~ZeFZ6r52&2|0+aP&I94ivUo{x;9F5Pd`? zbk(r3^39 zu&-3gCE=9kg4s%$Jsn{a2u&=9W3 z1d%Mo$f*vi42BwZq?&7cq%DA@QX}Y%&Mo_32yzmK)Gid58VtrMDdCom-LKpe=cBH^ zchwzIp=q1Y*4om%$&2F=a8^$quiP-(k`QT$&$6y8S-7H61??(F6u7(T&`IzjM3Ln( zMe%tDihgsw{(84B-(M8Sspy(*DRFo_j!m_pS%f-1C0=>!?#aCY&(XHCr&Q%Ab@_v* zCg91jxU%|unHjm}{*=K@TRrZY^dgV9EOW7@t-j${d-F5y0o%u~p1z{5r;CTKUX8vY zv@icqC=+_PrQT9j=y9Vk513xc^htRJ+DWtyBw1+lM<5%WPK5g^qT3W!Rn+wob37II z_~=w24^ys1SAq!f#XVAZRQV108dP=W@YUyLr8zw%b)L+Gl#(`oZf>q6ImO=GQ(cmo zr&AYa)%o7k2Hc4i#{8W0fObqi(vRO<8Ga*;#N}UyXJM+cBeh;R!yY zgvv51>Px03au5!RO4q<>Qmc%>Ma0UgY>0O*%8_D@PdBaL?uzUYi(V>e7E$3 zCH@TgIl<*WvfqoJK;XxxD*{!L#l~Y?!E5$jdd-#l7p~sfS<~3DxxRWc+kF4?&pmMJ zg%?g8Ub_Cs(QAoRtN`=P74N`~NQgtFH8NC2@wJ|18PRRmeY&}}r?+$a zwkw8*`?tN`U(--OSG8;Avv^14^8d1z@eZ#rcE(~x*(k3KqLRW)jFd8g6he?OT(E6o ziyBFfTRG{vmEVp>3;)+#@&8;ojF;q2M3OOo6q$(Bpd=Z6sfUYBPr|v+Y z1Dt8(Ye_H?DdnnCsS;I*K!RI=4oNG(QX}DFC(x@kWd7J2pWikY{m#$-?pJJA^wjXF zQ^V{ZqD1@A2qM_;;`vVD$c9w{kcEXIataC75L*}|4yAUgz}GL-16|N z*IeVih$n6Q5c0VYF2Mku7IMI8Zk$#;Zk0K5j+$zHAt(EiLrVvDwL~WVuA{zt3mX(` zpVBW(&L8&91g{U(_}D?>A}d|~4f{}h2(eMO@R8GIgvQhwOq*&Op)rA%MolARSddLz zhz2k9b8%K~Dud2YGEWFwOP9xAgMgEqn2P(gM#Dpo^dM1#eHXDZ!Oh#|CR1Z=BQp{! zhSFFYLS(g*+o)UFlswAM(nIz2<^7ea%|8f+hIb`54v+6XGo*^)w$P;_QyKIZYTr=!2$ z!%T?Q-Z6akO|b@|P`dmF_A9j1Ga`teFWmjChtZ1BT4XCr5VvB0h{Z1%xe~EtU2IKO zU4*3P+BL)PY0;F+q*Zf3MulKbW;*ypQWH{v;={`6rIiDymDkW(<-k0}V;r(ZBeRSz zApXu08>k$wp|P%_wyC_dp}Kbe_4BjWT)O@0(ebOg>c{Gs*i@WX&HmU>5JHfquYiAYG-{$wUm!r(09B-j)_`mb0 zf4#6hGFx3*l9dS!Oa{1)8{k5cNtXmjJK`}$*c)_wP+2k6iKHYasGxRc(F<1{E6PMk zWqlINbE0_23lf-}C{1`drBp>oZhHXnG+HSc^mDO1C*oBzmkr3dh4)!-L&_7Sk}?$i zE}?VI&wYZh`TNT*!Ko_1)XY$55Re<8)hPZ8(j^DlJ~&HC-cy@#;Sw%fQk5c1>xwvJ z{1ET7mcZLY9H( zXYsbM@H6&v7RKANaHc^Vg<*cmQr41f#UB+mEuc2+VRrgwJw5!c_f;B3TpSm3m-x;1 z`CTcX?fM?4?JDkiCLcQ@0WTDeli3s?d;?fXmFWY~824@~7*M}Ae&`zU3}^9Lq5o2z z!*4u}I|2kw#jOe**qY~n8)=0NYZ{qI>>7JT6c-;phmmMKSH2x;Ge4Op&tDqC| zBNxp#MHF&0_D}MWUwRlzghgWb0s_v^hoLzLdPc;_G&-y(Cj4B_#G=BQ@I6FHS9br!nKKdx0iMEq4b{~c*i2O8C;BcsrP}_+-4mDFjQhkb` z5qLN!GY7a&{tqa0QM3doA2)aqiU&}G(}%O)zx?vcDYwqJT2uuW{sPc@%X>PDiM*5F5Qg_?NC{(y;BQsE#7J z=ov01GE`9*b|bAX!6^I)Z0q%G#-vJuMB`JzpriIYrR&@S(#bB|$Pci>bMA{&T=148 z?ED;lqiV(k@39CCN>Lau2o3cVw<#?_pNOE}m(9(gqy)K9Mlul?vJk6^b4;WbY}~#k z7H;VP66g;&h%{10#Vh>=KX{w%n~Hwyb>)1Du05$fR*oa8oh8qo+`j$f{9qaXoA}t- ziGOI@zP+t|ZjOCs^;s6(MVFKhvU+=H)-DuEj2-40EG! zD&j~*8YjbndWdACXG*|{U5r401}x45rOd~J(OXo#6Fjwy18^WLS}o_1K;Hxe45m=I zB{d~OUFb#^Q(z&7Zs8Ozr6`+-psu5_zPz-k08L|f*8nseM>N7iEd#7}$|_VKZ3?#) zMP5?>B&pBHhHX`zp(a0HeC5z}ti6$US5i4Qrt1{Dsq50n<#Qd|Q>D&J7w*phu_%Q; zD23OVCmfGh@OKl*f*s5tSWu19l_C%8hAsl6=Kux-Z#cC7PArpY2GliJN;G642vCt0 z-!2GkD=?FQ4ZY4iD_7!V0CtlK;Xn`zOq<1Tgod2FS#du`?Z~`$N56RGTy}F~i_?|lYH4cq z%%@+mtHqUUcDL*~jCnR;kiUfhIfYlBh2DW#OhG0;Bocz4*{emg3=1JLDeu9n_@?x7LSx$j={JYIv3Wrv#y7yuRy|CNhIKz@fML(_R5 zfhuW@h+T{Q_MyC_-P;WZ=ia>LOEbq(e)WF(*VOHwhFD!fpa` zD|ZqRPQ*-ba1gQxVv0@+>@77RCl|_!Ye;Kc2QLzzT++v@e#%1=(9+}2+r6B*lrx6# zM!G=apl7eSvXZ?q^U}So!^88tch4MR3-`ax1`8(&|Ld8`iOT5P$q$iXgZHFiEP7yq z&_j`49Y8QdpMWR}pq>EIBPvYtN0Q3pz+3>S8x>aCh@avc>{|B@$SL)jintMS7kEDb zxyuI`u!d}7HeRapB(7}R01m^|2R83~X48JVb4z!3x3TZ5U%g}w|9R%<(vn#J$ELda z=IAS<-NVD(qus3Q@~LTx;|I|D~Zv zY@ibz2h*Qw8?!PS_Ec3=Y#Eu$NDjJvzLbp4o~>IiW$%6}b9X~-dGw_IxO>1oKV=jR z!zS^ysr~caGk=G{pq;SzX})jV!iT3Z6F{@&&6ABtJwTwM0AwI+3Tqc{cqU9sf8)_V zDsXd4mqEbB=>nua`MtdsKcxn?9^0(X(ed5le!Twurxgx*k4wlx~7=4eq zuoFX&{_nw7$`o=U-V`8j2?>W_49HZVu%-w;WEZ;qsFFp?SD@bjoA!iPYVuMY_$z5i z=|hVh_eQ_d)pg0t)b745(eK=I@R5()`S8fdNb>Ew4;(*!VCNkvBO^mk-~YsqTmvxIc*k{fhS<|>IJ<|k9agg_e+XD+0n9- z&WR8Qy|gw z-?-zhx8J@C(+?ne^g~Ft5vI~VKj#9lSC;EEd>611sF7QM^FZCkc+8iez0yg5X7Fn9 z=5w#&B2S{c;S)&1ZSVwyYWUOP<4W-w#27dRl}ufx#^PXkQ1YARup+`E1!J@b##ABv zLW@Je7?5g8<|r2oMrUj?j+^6S`QtaC@? z+>2>eCV<{eT9X4I^;Cq^gDS1cYK4GX?_jg_2h%2B{La}ge|Pv2 zd2c5JbEDgFup^R&vT^Jlyn<@S=@Z7kf`7wAEEVd&2ms;;y z(G)NyxXSO4Z5hV^_!WXmne_TMlenJeKKg8kq+l2(7$*cRXLgSjfDn8&Rha!a`cMD( zI2(!9J^7^g@JRIW==~!j>=H)cYXKdtSd?9lgDyLg0ha`VGrrn0QIc3z9{%|kmOBP8 z?eaHq;rF>yV1-MJO+qpUB`Kj6LvS0svfIFf2ul>+WcR>4KQHKC;T4Z?FP2r*26L-( z@!0I;dR16;91*Wz#1An-e44{`v7-3Ad+<(JPxxn&fSz4Wnz_}Q>Zqthe}fQ1*VL+C z?PxY9d2K)46@B{puUubGl< zYQh1ENZr$`RxA^jiVdU(8^-k(XjH6;!?*yKiFFYbvVr`OP7dA!e z)0}359>u?uhojAfO$9wkFD4uXkm4x1CY+e$aA>r>9;CtWU%pPvfo(-=5u|f6RBm1K zclMi>`jOHbGa5>oT1P5x$fyXm)Q!gfot2kwYmS7cBTOux+(duC>%+o678UCe8QRzN zOfs}W9!4grE(e}hr$2zPAzB0*8omWZIL2eaB0;y6+$Nl`CkXlrp!o(@BGD8dQ$jA9 z`Or_p11B3sKmPAQ94y45kJtS;`o~~H;KnCvf6NSl#^8 zSra3DJ*n9q7{fX@+<6puHQQ0QnG-H${}SEF9*9<5IxxWgb-c54e44=PVLUhbH$9hW z?3!>+4r;NZRs8=CM0fIMPoJ2^J3C)&6m8L`LC@6B`Z3Z%AxqpXZbQ7y3cDglC=sgQ zdu|p6g>9(x*v~HSdd7l5T>_w^!8mDx_o#>WwSY`&0vgY7SOWxl0b-v7&y1kVY7}__ zFD;~?b2hmJQe}qSVY5#P4vWn(i8omQr>7ku*a!jQaM)&2nayGA#S#!Mbsod{+g`Kw z(RReO>^8hY0F%{rfO2?9z)tMgyKx8@btW)c{;e-_SW?%SP3)D9)ERm!nTPrN7xyjf z+Br9~ZE|#Eu)n8!b4P1)QzNiZ*xtCfi(PYz-6)_+PU5Yh13BTqmyW;Xk{Yo}Bg&|MQ*v;| zyU3GS`w)Ccc>j2RDu=tG=oNi~Bs&PUkX%B>xdc&}|L**!=KK3cdiy*3o4TnH8WO_j z1JNDqo5&dsjH1$kd+A`319(}E^mY+8R0PQa01yWyg-&-cyXj>a{GL4PXEHfd_Vg$ zrV&27N8Fn<8sPmcy7>_(fa~in?5B|M9bQ&`I@fL0sKFs4{lP%o2?UJDg9)Jl(*VK7 zje^<;ntrX+-3l6#*iIR+QHr7@h)F2^2DD9$zX7ob`SLED@yHb@w*s&i_nLL?nuZx| z5yxfxdiVyar`^PsghRcSVwhcu(VC#WRKq6Jk6K;MM8WaZ%m9tPaqRyZN zu-E`4Y=9D0A=IS8TIux)y*v+}%7BG*tm^shKzN6O$g&R|e;36?bAvgaY~Ck0fD|@qjYN;z`t_cJ>08M=M%gHS1E2ikxz^qOD+k zs!>Esu|PiY%UGb0&=QG&MT6MYR0h341(JIJ$Pw+JP@Vxi>jd8=2rKM%nY##7Yv5D| z`3R09zn9lO+hb#uoph-z9_c}NO*oUlenCNS+7XgFkJxuwdRlGYbm!>4CvH0STy9HI z`uD}-(U(eU5_GA@$EPj_S~1_3VPn1yF)0nmx!|bAlY6NM=<=&HOB-E=Kmja! zFb&wbai7DDd3^jB?;}qpNaRW6AhD-Bo3D@Yhu-(3LM^)If7(XkxI_D7UQv!#w{s3r z6%4vk;oj%m**vO1kfCZU7OFP!p-({5>O>>3$~X={wL()eX|$Ygk=OZAolYD$Em9eG zD^Mn2|3+cZ`j3de5y3EYhXJGnllGN?TNEmS@XL;n!)M_Z3MBtx7)HOl{Ue7zaRHLi zmdC}LWUTx7X+}|trno;(T(M{}Zk@Lo}@k={6&1h431U)DE`l63iHH;5;4+e;3G(WV3%X5`@ z7sgU7)I=%+PKOGlrz@2q)I^yVQvp%A0R1H>BnD;|w29v%F;y@R#myvVFGTaj=IF2E$VF)xU+a(O6{SU7 zeoOo~hEgEh`7Cl3*t8UDC$J}vc0i+}eFC6RgomO6ElQKg(A3q;5S4_u6hH}zJCRw# z=%pL?ZhWHz(=QP6ucx+LXFaMkqZ027iL)aW?=Y*dt-$VeZH}b|*X+-J^CmnqnVx0p^AOAEN zYFIdSYjPsmib)^Gs0cbw*Tq-gNy6n|??pv%;>@{>pIqEu?OVh5$qOEXGTUdi&=zTy z`99Hg1>poyPs9N#zYfR0~6*`Z*COp+LN}HM4-XrlW?mrv};+QVwRhCHz?hq9lG~>ZTDX z0q-U!1@%c352WU-8&iY+3W}|6eRfdYjN(3=b4005by#vH zgm{6pQ}8c9!&i`(gIqrGiQ;3CRi=TksKT(!WYdOD<#Gp?qjOnBe+Bs&-H2KAKOSe| z#^j=pi$;7sE#e;t(&8(^I0L;bTsT34R>+*`7PO)$PPX_!bwx03ULS@Cplr`@`kb~$ z`i5TL2{zGjg-uju5+xNaAh$qdW~qY0Glu;InI$4^DQ^o;apjn|A_{CxMaMIro4*b& z9}m*TtiDhVKAq_Lb{vD~56*sreU7c74}~EGR+3#JjyAy~44h6PLruwSPzD)+#)G(q zau{Tit7jD;Z#w-FTWV>Y-;SRF;iunEyblW7C;CysbPleh6j#xFPS!Ua43zHw#Nw&M zbx1xNLaoQHx@HZ%Cv7T|c!+N*udoEJc}g8oRSdgqfs>B)5(fWBOe3Pw@~WF^aFbE(PfC9v8oT z9um-Iu?X|@3E-RnoK2+IG}JzMKuFcWtD&F=haVwL=0`9Zw4a_Ix5yWDf<9A8eh`6XukmBjE#{2Y(>*@X!5ar3N@p1#a%}$w|II=8YRk3@nNx+Dn#qPaIAPw zW#0-_r$m0&D{ASiQf$$)t+D6H)prjA%3PP@=+ENhvj;%j8 zoMpC7Y5%UczM$%4pNRIc+rQ@Qt}Q=NIr`xAjS5lc*NIfVFPi^(;_5tDe&^w-ZJem{ z3j_ocg*(~Pz~R`1l1O1nGFs)t4r|!Z0fKB!Y*Aod_FBC4h(&k!#}gIKfK0n9EbFFQm-ChwHQ zg#BCecVNqO+OB7JeU9xIzM-ipJvCeNAANnOHNl&X@|AZ9z(QIQKR$ z>4o-00g>5}6G-7QNbK^cccB=Rv{|`^B!*0O>V)IYq@J3JVOzEH(BO`n%|wpLJ}cG| z17@hcx}>tQcj-!r9g|yYXlKd4da4kPlp}?&9J8dNr$ zLfKH8r%+R}_fcC*3p9>w@<|-;E>hz>tI0t)TsRzY$ipci5ik98mhWC%rIZtu;k8)ndUC-j! zz}F%8f}8w6kTX--Py{cd)VKrNK{JaaCzX9gJah@F$E7C6>s`YOcN}(nccTspMo4Gr zRJc>MhKwASMG4*b+V=x{7G`o^uT{e>ihcp94b; zX$QE?ag>UDpCQn^{LK|k#nB~n>=u6BAyer zHhLbty{<&ip^;4@ zmDnMYE--`NM5@uM*kVKcyn;jvp<+nuYfua)pLT{woOu;@_xq1zZa6L`|Jz@>WwIMn}t(160 z29h0+UjV3O69&njOtP?u^bJXTgePE1l9ffKj7H9KNCD=!C{MuWrLXA`y=T89em~mK zU(#}B*Opj{qqgoeG8}J`O>?$1&B9bC+Xi@YBiEmkel*g|58wNFZbJvDdoyD2xXC)? z{1c==3ZZ-{SwVJ}UZv3^K1en)+ObKLJQ9(F%=Ip3IVdm?yGMt6!1^WXa2THdMu|{L zd5?4tbP{Fxp}f|A8xF%%FtnHHsWW(yl=sN7u5g`zhlZ_Vm{KjO z1=9A*QQ`!FdpM3%DNd}o43uAo=&Fqj!5TDSqMawFY!d-8Omrv0!{K4cBqKWHt=fA$ zfdH+EC0{>y{1BEE{7vljb7IJ6r}!d@s@1V%&h^6`GUEEl7ltDJZl}XaeUq?gJcEdo znMNmhI~?0WCAA4gy$Nor!uM^l7>$;E3mWtV(U~+mi+muX*=TkU-;YCDQm*VT=%&dW zKYi)(2?2u?2E?naKqdRru|#IIC$D&Cat5_= z_p5@r-irK$ngCk0kC;idu_RUju`~cW1Tqf;K5U%%Mb4U>RfAjY;dRnvdQr3oc1{?C zX`Nj?j=t&56>tCg*X%lPQC~qiGs7H>KDyj5kowjNs7!^M-T^b8$2EmR=*vYV`99bZ zL7newCq8<3dgjp6*IYw3+VVT9QVge(v4|lU$U-|zt)b~;r|>!VU0i$2%JbX@an&Qgr}QCN z`&L4aS&(M|AC)g)xwsyg!0jnCLUBQNsYzyO^zNco>WOJe&?HGsGUp#VbfRsDx@0Ek z%9^NcX7m?7PoBBMIJbFCpG;C-A5(?!S-jBJ+alwk+%zZRXW-oe@DM>>U=WRn z6dI7VHt;l=$|#XhQMV)N=KAfbek^z9cnYf|x=Vw?|(oYe-048lSwfy4+vr&9Ir%UC4H~HKEl&N^n!bzVwg2 zdGMjUmLk`;**Eqb>}c1ro*h$tm65!x46nZ3w57gjh?w|}r+6#8L-tSVZ$8xHFW(MX z#`J$7qBV}Bxk0i5%LBm{0$##^0Usm+^FTA`kRy!oWJ7OTP{hmWr6m+bSm%Q^wJQDX z6t7;KeeWi=@L*eGUQR|<)iba{&c5;VYv{^jQN#CVtit?Kq?(f>uR*x2(x2$c!`Q*26VSOE|dvG2Q z_hQ-xxI|--VXr4UBTXZsJ&6|FW?I-x2CTmU{trVu0xE{XmdFu`_km#X!;PU7Lsn+G zizpolHiRz-dpMEoVF}6y)E&C*z#EXDGE{WQwG$Z6&PkexrgXnQ-R1Y6{eyVJTa-F^ ziA8FU9-f#ue6Y4WuG!|N*@ONHKmPZtzE4Q4HY<89r>?*LUXyEW!_DP)(BzAnvTuqs zg2RzIZZZ*p9b{3oJhTG!p;AlkCr-arZ8xdmI!Gdr8jowcDSwGo3GpyeDB>p<=l*o# zqwT|;H?zqd6Ak5^Q)m`SV)vQQuE@~}@+ zA5M2*Z6D5EqgNgtpFDhU%Q)}Gd6)RydAf0qFS#DP{`z~8hniOP&$O9UNpeJ>2Azr3 z8bHJa>;nVj9reqIRPc_OV0A^ua-&f_gMq^-Or!u?(sT+#=l3K9&0LKKXefX3H{4G_ zzxoT^PjAK`c)9aAV}Mh|Uk@KnYdT1yFku!{giVtG^AocDG>MHKLZ@aP@B3MiKpnx+ z(*1npb3?e; z?+Fj=Nj`G+11^VqzrkuNw#@k_@*|bybtwZ$o11?ijr_PsEOFVCaexPD0s*oXbX{`z z8)H%<>#z@K*p<94ewZy}g(@TX%KW(C(HiNY@{3>tDZjXzP6H1J_^w3ER$& zl?I{*L~5#0LfF4FXR0+tqvwmK)`-Z8YcNU;PHb4q_~v^gSftz~1wSkiN)Rp{%(0{n zlu4jPF2|1YN~+L1_oPDqQ!w#U%tKz*2VUsfuBsKcZe4Rs4T!a3$98H9{b>R)BGX@w zU~x}lMX&k(*eTV7`k0P(^o1r8Nti;%#ZJtG2c&Y{nJ$Z&>GY^ILPi3MEwv&*JVK?+ zW?}7Yii9GwC16Q~%_l=J1Cmhi-G@KN;8Lq3M9%-S7vp+{dMNGRTzBN~#N?r)n@8og zqO)S{O7l=BW&SJr%%8aa`Ue~bdgSJ!+@^Y8m57OG5wV9zCnwOE%X64od<`wW2JgEA z@KM}h3lxA$=K=}0cu$6#!f+c6_kiee-k&mYiIN;&`rj-Z*A;Ruiln_#o}a+FLK8DE-U z4tn46HBKMth>q|r{_TI-{QLwf7!M4e#=C_Km>!QJ$e1HM zCV|6k=tIQ8;rtK(e{>kN+0vlstSH}=I*gL6$PGp%KY$|-WX~6pkM^Qh{W9a~j=kU9 zKl_)PKE3Uj@#d?t>a!B25(aM{q~4;tw~aFgKE#XfebR8{f($+|2i>0PUa7a}SHy07 zkSyWQb9ReJSZ=}|6i5cQ(k~5A9@NhcS5J+M9c~QJc|&_`EA^Mn8K)!eu>jpHY0`2QZsF0lm_a&`FT;mSkSS zh=XfNegIAzxG_8df`|8ciY3X^n^jWs!{{gYp8Cs|Sgj@1?+@1o3J#HW!N>_6O++&Q z{G=rEXdlAWOjyFfgi>$~0y(QXk=pfk8yu|lI+4=1=Njc&xfSV;uKC<;Gwk-yoNlUV zWwj9F-~ay0_Rl;kWg-RD7XIc!GS~y?V?fPF;iUqQzl0Tls)kPvG#Y@m2!@bzeoi-1 zDGKpdbR$(p=wW<_?Ca5wE8R%7iE=kmK4{gvJnRpyE8g9=ZMWFR>Z*zx>WZUZkDJ5t z7scE79Q-7)S($0hltheFcDfN%KxQAGpTlD$=bK;-@l8qndVeaSDeE>Rjcp|<$PKJR z*kOjXcQn?Q^yfEyYU|!>wo8pk-$-ZCqBAdf%9PHe|8bvTaZtiMpgF0?l1PmvE`LWH z2k;?VxQ*wz&!jo621MmL(&ayKMM|+fl3xlPpgx~StK*#unuRb+{vDWf(<5aUxRO_l z05^uI&mzh~-IyZ@762-^OG5O_45csJEhoU5f_12n&sbCuv6F8t&b)JijlVFAZl$*3 zESJ0B>KC|3-~AFRsXx)!kdd0DIn4W&g2M&p|95yOM1@U>9zCgv2>u{$uZAJ zNlHYH$rT~%op%+HSwPo=k99mebV{Sq@Gva z|7^n5yA$i==B3|+ne4ATQdC~YZKN-vc#~{pIP=gbNYcvsmdqsSn`5vrkx1WCW+=za~e2i zF8@jVDbFhUh5IE8N0Q%*G$Gt3bBe}H*$gDhKu zhN24%Gy4k$wiNsb?U~PZ|9G(Bxvfv_n%>$!JJ!0F(vnSO#ZB%qD%|?Ux2j%BOJAxz z(mB_(ZK8D~lAbQ9X_bvD8n4h5>2#$eYS2NH>_9ELL6RuLK|`PkC@`iG5DB13KwE-B zXxhYh^Jb)Jyn4U|(HGJSbpt*s+IBpt7WU-Oz|ACK*m7DO;5I7WOb3_+R$N`bJraGN zy|*~~u`B%O>Oyb+@=CvbTH z9T3bKt%2MLY(s)VYdJL@MZ+j8MuxZ!3`KxA>h(%u1TnD^YNZHw*ze|NI%Q8C^14zl zMMUNmA`ptXYI&MOT6@W>@QEz?-SXT}%i;;sxXFIi;^SFGJ!6Zzs&k5}ZuoS6`{vqr zqwV4YH}Iy4mc{vePkKRV_Nh0GgPS^L61Ey|x_n=Kf!tS-^vW(C_}2?ftSn+EEeZPV zCauzdrvjD=IvWT}m=UZeiuA4R!viz~PO|uxHb}Kn7N9P6uL-S3O*l7V&k$BO{kO%1g*)m5b>QbNJzOG#1IhH{hEzcshO{v>5DZ~rS&43tGi8zb9alW3q_ zu%Dl9ZVwT>&zoJ41ugy-Zd1HDPr{m7OB|3jx6f~^4j$fuh-TS_~i!h3Da^D|8yT#sj_NTL5rkL7J1fa;WWdt5wvPt$Gji8Z*3(lw z6tny>zGxL>5cmNYBg7Rl$SB4!8jNay@DQLycOgPo8v(qdEELlq?a3=z&>H5@=`nyeO=0QP8<$NnNAjz z(wDmi4ov-@PwH+y%oCS=u^eYr6XiI$&HM|n5K|)2CKN<+sR~)K-ht3Zo?~BptpRn& zwRj1mT1A^LhNZ_;avaPTq=Y4V@_ytl*|kN{7jF9QKvKi^`udQ#JkcNhZ*B;`BU0BM zudp9Ayac$UtYt3VM1@;0h(szr(IW;y+Cr;B2!e=G6&!VXBron#m}47UOKmPayqec+ z;f@amD5c0_`J*-Uyp`-1q3D;6ujC_N{RWlvQmS(ELDoJK{l%($q*B*AC%YaQm={{6 zP-k}J>wskgS0J{NN{c`V^ z)xxO&@c!wp=uhv~jI=13x*lF8_n>$!ACV66%#KK_)dC(?)&cre4Tgm@wUWsq$3p`5 z#8n)+fQvCFn?UEI)~R)Td`iWkl{pv^TWerFKK8q_|ChG+j*s-J?#7=oy%+VanNinB zni-AiNP0BtZB=(yE3L||z23fBdtn{hn8iI1icNJWfk5II|G<#M1;-EqBtQsYz=V*z zN#NxNA;}L?NO?o>&i=mV-shR78A+b2Q@-bW{_PR*sc7QEZ;{Fp zzmv*n(I;N_h!>T_%Tmi?Dx<}=?LjGlk8BmF8oCWthL8x#CUpun$p(qQ52MzTT!RA@ ziT3ef*_EPf@VUk^#ycS4N5LpqfZA++r# zvxJnQD3)Y5LhHyprkvxlJE7skB08j8JKA|t3I(SclYrXQ@W835Z(vsz4w9Yv=9BX8 z@1LLI(n$F!8BpEB%2I2f7MDm5yn?z;14V~OOG81!{DDa#QPP#~(D{s&VwoWw1J3en z6;3?0OjS4!l(YId7CE+m+KPmB-^7)C<8N>LgLF4mNadZa6N(C{eAUf}P%+YgbS$e)qgOq`FiHG%FNR8c@8a?{WvistnYzTwZ;|?5 z-rjzhr>YkI>u4fDcV1{k*B#nrmk?B%dBTd`K>QcVSJA_##)kyKsTG~+Riw69oXk`q zPxEMERs4~h_yp(eCN1WpkI|n^V8HL20VnadecViXmoIC2T%tH=+<-t8YPz z9?CgF!Jx>6HUNMpO5LT(TWXSj125lwIsOW`kP8ZmVXU!g97L4};K&|jUeCHKtMuTJ z!Nf=Ie|qzgT}h?4j3oZ-1NwU|X62JeEdPe(lVsRJ-+HFBh#^2Jqtu7Rf$ar8hY4Pt z@fz_EqJt_Tm#i-J9JaD(21)B&b*=pIBr1`dGr*!kJQmrhw3*V&T#0B1W0AErQ7J7U z`LrL;8k#-|R=SI-V|lg;!CV$SqUwGQpHjmL)DA5bwnW58lBhcNN}kMB;%}am_4$)m zgOD|!aPk?H$7%$nK76|RJfR_>Q1f~i#(nE&q}^TTpmrEU+)EvA`` zdD2?qjiJQHe)WBa&+W=-Js|cCB))T>v^26Sp~db@jFqp-NC}-pg%%MIQaY=eh#>bm}51&v}4VsnY(2j*Ng^e}TD8V2c1OTeU3_31cM@Fx~uOdJ3ynj3=HD z|H7I0=AGieH`N@LIL|KJ|0zs-BbCJB**Eb|vGHyJOpmm$h>K#ob>e;ayh6s*ro|n| z@b>VkTe>(&PXSj+d~bW=<<~v)mM!shpY8}PiLdWXy!glN-~0WA1thQ7wh%0r*WJS8 zDW%d1)E43*Q^_28Ta2j?j~ap<;KRsQd0TS8%3Jau`S(4UiREVLDd}xeA0^ddPrttH zY;>WoJ(-qbrMEXeE53qnl>y1BCc}Yeru0UrK5i;-W1Bm=X=f-1c&fpAZp~MHtNH+N z4_Vy>mEXQCaZG&cmrAC3qjyCU-+t(~51mgYq>9*q1zAe!b>oSjyvKA|%STaDKT1WJ zkcui1I+S367ukG32^bv%|461JDIB9INh-nhFk*1tCM`#*=w&gQ_{{y{;Xg^s6Nzu1 zPrOS!pOGVCUf*{mCw9q8KW|5$u-!inGE@BeCIHxAwgPgIexATM89$F)5F&Q|Z;1nm zFFq(vehG!St-mII=4J8ihZFA;PpO$86_xTb+^;vm9fPQX;L`#o1vTYDRw&`+b(>f) z73Y?Evx{@nwLP!ReFLRi`e@KQQ7ypKzF9sh95J)a? zsbFboAAk!((o7LMh7@3{u1DvwtO8J!38y51Re+B2oKAG5sWb7?gHO!diagJW#4X|n zs0MT}(uHns!-@a(LBr`KUIxlC&%c9jVWchyp(A99{l{ez*=3@{In~opHKQ6p1e?A= zt7XTB5@gFu*^B}|RnCfqyg*3J2V`Y2P&11>#v@A|^1JW)%SbFehar7d>U-E)es7oV zgWqXL&tPy^=_re`P~Z0ND;B@6tQh(WW*WC;JCh+#VEA+w&tr~a zE78eg&VRm7L~D#kIzPNmT#ICMPTlbVVNE$2thAVQgm}XJ&Lhd}Taf#LL2Bpv?!2d&SgH z=)(sJe^K1`sbu&IfMzAC1;A9Bi<>=^INKcyqg5grMn*!;Xjp*9d^>kV#l$(brp(}2 zlpPzDwBC4F4cypZOZ$Z*%5p`y(}B>eC)=0hZ|HO7akn^4I;<6*XBj0mRUXGxTLX{Swc~!0An4KB!4f{)NR-y~RQzq!skF1=j zF7@T)=+w`NZn5d1psxhcpTW-dfqwDuuJq*_gQu5<+TFQnJlTDHFOvx)_{i#o^Wvi7 zIKI9(6^}Gkloxxg#j0F%BaSXnTP)$c$0=D0fi5*#P3H?-cG>8)7$Eva{dqUCmxVJ$ zC~?&lZ-Q>yTdYY)EH%7PG@*&_I?W>3j8@x$<{()a-fIrgXxAIpU80?Tj6L_qC?k9h z;PTIVL??ZU6QO$TLqww&Jew#$#yl3_T5``q^3#0&+}SgyZrR#cTU}XNn4g^<8yQyc zesqRATAQgqp3hf+3*sW8ZLQ8#Q>fnmi*m(Fnxzh=C;s)9B4fP%nWul@ef`hmjq4y{ zUNH*`VzXk84|lf(n@dZavc(Niqqfdr!6rD3HYYt>ta*XMA{p#RNdOjk-iqQ!KvrBR zU@}Ra&-7#ucOcVCGoVh}j`5bfKc91`T~x=y zUdua_DI<%;vS3-5KQuEnHlhsn^>jrcMlEPS2^P6RSgxdu;5m@mfgi=NL!?>=HN>mh z3yK(im}lJxlf(J}?WuxfU*g@(!(+>q4QXrVWb5eUt+!1V6qyT}yQ0la-HC54PguY6 z+Lv{$;6P(ah-xi0O_g{|eBr(ankV~=VgMQG-)`J~@0M;>?mp5PZ4;fpI=*Za6aOr_ zx@uedS`#mm2HIVK2?vIXl-$Cw=zl&EZY-AdF4b5LSw*7*#sXd-wAo|s@>wun*tkZg zI*q~^Cp|;1O}FTBd0pE1cclgjcC%<-PYxIM8BH+8?$l^D&L&G|ssDgT{RfZ}rROB) zkE3|VXw`x2z)D|@2kEAUlLXXwJf30CFg--5AVuX5Rd*wKKvi(yzfPThaf%F<*C)c$ zA#RUuf94aElnhuDTr{HcUtRy(y5at2QKTZdxm5tkOOD5v&yF9fYHkeXI^$U4T0_m^ zK)AJIQ+ycb{IR-racy$B&fnX%$EiMxQ#A^T@H5364mA`N>I~Ysb|a=`bWjP9RdDF7 z4(t82SLm9{(&Ia1>>vYHxKjggQ z>5zboQ%vwriJ_sRt+}zj&R0|5#}T1)!o>~=NDjKC93`jKVkK>a=)PwpeO&Ch{&L$e z^7=a`{$TXt(J@pTb`P!07mn2T@KNAA>laIumAf9TC%{LJO-lN+up69v166b2|ooC0o8gidE zC)X47M2BF2kjI3-SIliee>sQ?otm!2{=mMrlM#)|2@$5V$%>qdNrG!k$LuiZTp$b- zoY1vSr`M?+bXWR78wLtClVn>L_8YBq?;a>vB^xBp1m`^e@8V<{9S)onSpcD$G#xKxA=XH`t32&3wKRMSHH-a>f?bxw(?;AmZ?^rx4%snV&e zE9Zf5UR33wpyecCTctiCNOjfcJ`Ns%mY>FHM1&DV3Ha?cNpG7V8e%xTh+I%KNS3w$ zzaT6THJPw&3O1Y9Hp`NefMxmpwT$hbCGPg{M9?jQY5t@z`WehDS}Q-DxTAgk)}70n z<#;)}2ZsB@!zac+HmX=HF4xJslqN;IH_;?xDZkZz?c{B*(=Et{Mh6ZLh7$iJ-ua&4 zX=z!ydg_+0#Vb5~{9fJbnYwoilcGzp^!2tk)Htn1GUW)WIzXW+AYCCGs!3<`u!sGu z12P9s4cs?qmSEU`Sx2wBi&pO5^k!If@m-TREV5%=(552eY`>Y5kzJF}aJv!ZOAf&< zJ8%Ik2zl@MJ&?c_kH=*4OnN3K#z%$+`g^*<9WY-T{Y(ns6M9WgCCVB{;eqi>-_8J134l5s$m{9_Ojo`fGCwCpX;1zrOrXu+R5L z^hhMBbZ4V^`Z^G31EEwAhiV1x=9pNf*k`7do=^?CwHhoQ^;`#`P2eM;?~)rbK*XXgIHkYo8OSYgS#xbJ!E!%r2z%{JE^Ur3nUXCp_e zuD>TZdL-N{7w>Gh?<`#_tx&wf)A6{|;BlV5Qj_Pk5Rd$js5e7{)6Y)$hB|!@1$%2r z3|<_)?YJ^CF*YwQN%x(einirZSKL~-22rpGJ)%uXl=_0Zh$mI&sd#fjV z0feo3yw?V*CLmXf7wf}_2G!E0L)44}dgR+ugJ9k3$?AiVu-7QEL|0#<>w5%ht z&Bl^_k$)(lSlTH3eKURwt1*k*Ajmt6%z!eh)!Ji){S^rXTN>+qUSAyyJ)hf|W{qpM zo>r;4@5#!aNSK@ZdmE!eSH)sfv;HhBR`;Ho9WLwjM{_**;(aeX)aWmL9;f!*-D6xQsJm@L$Oay4tBLyqc5>+q1YbtZyln^4QMCzLjo-w%ezn* zoC&&jl^rcRdgSoZ!tC_K*zgb)4^Yc_oDX4aYjHk>bUw)tON0!7H0wuP#)pGl)g?xr z>{=2Z#o4|ues(?5^mcY5@4s!KJJ1`fWWIT41c$@5Ex24|E>wk)TB%x`$I}uYjCFMq;EY)h=-yO^ zWDNHqd2JXW8{2gIdk}u|H;Z%7)N4G=QJw#*=TCS~4~}iO1qzz0n{(+I>F`5M!)H6z zk5pGyRhy2RmnX)Te(ISVm^_Qb{Piz>rZ(CdKNN56&MB4)4>awR4R=&E1S*Vys-oUQ zEAht%x}$5WERlReN9Z-PFeQFivG(?~q3NDUXCn85`aLS-3>dllp|c_2BjCZXq5mU* zR}zJ9P)7%m1$hX%?s10%RGE-e=cb@}BV=gC(&s@cBF&8fGere`IZZ5|L#@vpJYMrz^-tjefpNV%Jq=2`(m!^U@$2zSRN^6d2Ka}z+mp<-!it|=+7n~g;N#Ayx9AUifA$_l0u zfZxs|5DQ=&T7Xf65XWSPje-<*I_DEz*eKLWa-0?81glZ9!ZF-?FrLI+;{Xnz4y{HU zOWt24`@`upnVh{&6y;Gx4D}u(4$fj$Xl!zr905>gYvBhflVX>N#~-4I)WRFsCo?F& zkIJPImBG=fD#>{HM90FjVntid>mt7H57Fvj^yd!+P1_WG_+eE1Qg!YtqMpJf^%VN( zmbA9iB5-0io3vv9g|E$M6X~r-&>P2*JcbJz{g!%!F;sfj`%7de|m2?!q(>-9U2<1Kt zPF?Yj4+YI9=qy0};C-KOufxz2Jq}%oC2>o!kHmZ0n=8uQb~E#_NxGSjZ6O~UQFD=^ z<`zM8B9SCGO_CE&q{)G32?fk>Sg7K2>%4SHJez{%W0UbSMBZ`kSpUhSS?7gNz7~dq(N5L(Ff06r>l(GH32CllKx57!=YaUXG%_h^*A|+nOM~8>{d%2g^ z)L7?dh!L=*sWMQo`!?3@r8vnk*gsBRn{iFAC*G@ZgV>BJH%R;9+VMR1R)06Uxm|H~ zbFa0XSv-CkDl^vI7SkG|i23d@;cMQjKfy%D2^`0ocpnSUbcX}}(n7bTKy}MOHiM8Y z1>T&3$L2&6Y;e-a)LGF6&27=S*Ae-3p$1v9=*|O9VJ)2T8qo1dk_tA3f&y;= zy@@15z}xLNo8Z!+4L9b)3%l2JBuujholejhEjs#0C}oQ=&nGH#2cFK33GJ{k_nMD{ ztJUQKJR~Cw#PJ~w$oQa>U9qdkRTMxkZC4QpH&S6fwKkS3{a=Qdse!*vriiNWCR9rK zgsnXHBcZ=b4FkRvkHuahCspOqR{AuNb0fM?Bit%}M6n-UnI4WInNVGBDN=>*5FG?! z3FPHTZUT6@g#w4WfHoW~=!g+H1ijaR=!4g0@UA;Wn+IWEosHow?1eLhreY&%REjo* zBJ>K=gm3=fvkD#q`n_XblxXiYEeRn=u@3sNd|JerYzF#h!K|~H2_ll?la<3aJ*^WH zJ7F~LH7^NeTUptyx12n&d3+U}-REYeCdWpG2GH3(nFuMXDXR$}zQJH8z*uoD*V zU`dgbRr1RdP$|Sgc4FQCTu`?;j7?m8wereTr0ye3MV1LZz)aqyH~}+hZ$#^e0B@x6Di0E;pM1UC2bB1 z=HRIfodrsE@9|{&4r=3JI~knx1;~_G0Dd{}EMzON>;|nQeHP?ru^yHxp$y5sAB0C< zUCZuSQYn)Crh%veUI*yPfcBy3i*Y6$_cyB`EyR60N;(OY9b-{XYB!yMZDe1{a!3 z8N{=@GOju|8FEg5o3s!Iw+C}gV8aBtGq2gRz!c0sL1sij&HQG~Ksv~3rGBo~K5LfU zO=$sQJJNxh4GoW|9^6YPU8G^teIT%PFwU-SW?~ul3L(fJ{(R!QZ4+&E;=f+r`uqw? zB^tV#6){(keEoah``&}C?z3cgi?#=chRa$k<-R;16|NrWsEjZ+JwjZpRVW@>soUwx*s(KwS-ptYRTZqOt(4ob`gz(#n1p&uO4}k`t z@+pVZ0oBHQ+XIIhc$9(MVH$GaC<9^zB_(!y$wWz3;0>Jb*k^mOy%-$=)K~$5i7AiR z1#q7h&TUY0h!h9b?;ADvucwNa6wgR(WbyhRH4SZs8ak@Q@9%6E9`5R14AvACH&irq z=DIqRB8)G4d!pi$Sod(lnxm^a;-`D`Vr4^hsJ}l{9myH<<#ld);=*tW^Wu!+7*@L4 z8tMyelpLfqF{!K`!RRu$h(Zres1dHL(`u3p4pae9=IsJ9#CpmQQ)t0Wy#5|!{?nb; zf$Z@P0K5#+aW)O5EB2d&j(iZ4m|R8_q-q}l&l&T;aR$x!{4TVGP?U6 zJejPUzkW72Iv#26?wK@~-dXR>~Oz ztOdIrXaU4E==pOcpFi?J+fyU3)3SA)#!;dr|1fsp`7j>N$3WnW5Z>KuoDxkNBI7Tw zL!GdJ2$JCUOu0Xk4!EkgxOlXf@pkpH0AX`e9m`81E$PlkOXkl>?rY}AA5A!eqr;)j zkzEPMlCs9!2Z^lXL&4hGT}j8T=HfhO$aJZmbg5Nn01l)_aWNc7Fi=xkY)5^9cE=+W zLqIJinY#eVqL~eDIjGDKF+?Z_rZt()ZljLjKQga(&+ehHza_^yO#n2(UgPO(do#y7 z@zVtP(6gx4-V-Q;ImSxp$+fP{AVAgY;kM>p0lUtPjg7||v*H9O0B9qaKuI7_&#Oq% zQ6i~CGy;&6w9^11DrS@*BWkz4{q0>Hl)j1*Il|j&j-wM2x~^XTCgh_n91lqEA-u?Z zY-(ry-qO-QZrMnpM83#-aE6CgS(8?n!PNvUeQ`86bLMz=(3?k6_-+3uH0m4^W`ySy zbF{O$0LXVL2Pa3nm!4dS-cNMP1=Nk2JHQ4uuy8vH^ihd{n+#09+v~LJ^m=jA<-k2- zB%2B<{;fJH8d3c}1ZrN8ibW4M~bgRve4>G0N~T-6<@^RZeV_U+9SO?d4RxbX^kAAScG!cqLe9`ub{&3=@-6;A6dZ%G(qp6~9 z8<+qY58SX=#X@$^b+%TU(f6vH|G};io&u?EwwR6RNQZEP5n&AGg*eEGFd;f)a!{iU z{RX%w@g_TUZVA@DybbSB_R3m7X8h*nfG$^Om~jJYAa7~2(ZhN(A43zdzQ=4H`xbD= zWp?6PZAM)nm}!SlIf2GF=#5q%sHz}CmU|^A@8)_iqqSe)qfI57y3l zt46BYh__YrJg5wn+im$8OMVR5L!7Ao+c;4hkQkN1s@TuNu;!VOu0Sc6^nvuy{>*S5 zl!hD?EH=?*0hfVOuvwhAZs5?c@L>=J zi$>alV84PXMIBQLDhn&Uz6R*u5*4M#%xmQ1A~mFQ>#_uZBlU3URqymba-i2eRkAQd zD82dXUmOsvRf+E;CYW4&O8$q-+wGSQ-B}r5Y($a2;h*z}$N&2VVDtiAv10`tvFZ5- zJF86TlJer{${`Dp0>BgX4m35k$2$M%;xseuUown;?&9{DsVm88t49bg!4z#{I2+Yjg@zx}q1+dpui zq3qJLfioz{#HH6J0ekI1emZs6X}E0*DCja9-F0B5r>Dk8hXzoB0q{&q6SYv~j;pQE zURV!wVkRby3F$e457^dc|`bvF3r4?b1=m}9yxzHt2xf7{&Q_OD2{)1!L$ z?&7-sD~sp4TG}UU>s#)*;PS2aj&9G)pE%mm{4Z6H;b0rWch>g|Pm94|ZM?Q>ysDk9 z|BIt159=$MW*XajTK?vAnIEUw8C{~&Ty4?c)dpr1rq9=Kpk`rK^eC3WfwuZmr`~AB zdrB7_^uL1MP8dEYe1nWL18E}yF9-u+YY9hhFi2qOW2i3Cg-dDPb~`1rxy-EH@A18+ zAQL%b3Q^Q1m~l~na4R_*;*NWKOOA=uA_8?DcuV*u9BK-fE z@2jaQDMBy;EzS^SHG48>v{NWsDuCKwcV|HX2?L?F1C|?hPITS6d{zE-o}2o)zT4B- z$nQ*b2&OY7_@2j;?~bl$R(G#x)Zh^R2X;03TM9$MKPVOy;Z&5`j4V<}zELO@Aq03H z?W1^rkQ`Psbt9sy=>q))Fi@$I43Z31lEFiZs2rfaQ>l`Sy+-qrjLdfZ*EKo=J?g z4#k%pEk5ywJ10K8J@f~!`An#}F=u3B`Nt2(KL23zc%QDN>3$X&l+B5M7mEs7272=p zC9<1Wz;50Y-Mp^0S}Kl8-n=(bSL?yReq zJqNH8dFGI8HgyK*(e&By-skw3JtwknP^FeSPx9_Hr6a^f@tVf^0H|$kL3vvZy5sVS zC(+DWjwMy8KIO=CB_k0Bxq+yaq8d5%+DUg-b)Y@gAu4-1{40+-@|jWpIeMia@rRN< zb?r>)1yId(`R<+~p67kXZ`?rb6sgn&@d3pg>ue}1)w4dVbZ^FS;f#7DmbhO<`MUtM-;VL*kfy@ zM_WDj$yYO5`pa$I;v$rMxhE|IFNJSC&>soG5J&xTZ8f!~26JlumwR`O+5rxnb%4`e z?eNa_>JuZZ4Cd5po&S>Oq<}S$0!pH ziFU=N3`JWS{WV2yvlawHlN2)|U!b-@jM+?>EjV4MX*-uHhe9K7nG!{AB#OxAN-u`u zvXWy8lvtb-cu|y9Evw2uk20L=EBF+dg;06tz=^h&qcE`iQ2C)bRsu!Q5^Ch!j1pKM zz>bv_fU=j>dC^L#5ZIR_q#!~Zbi1E-#+XPqnMeutf8+IM2taWCXMe5xqr^CW>TBf& z2ECi~e|>x4h1Y&M-+RvicyeL&?`OUHfZ|y@_j&r+F`IliWHN3O~C*D0UVUQ^*k&EO4P*AXInh&J}rVvZc^~LQY^AFW|{F zZvbX36GX4XRA$uU>`OPx#nMu5srF9cObxnOM-;Y`=*qLV9GciEZ?; z2pIrxug&if5tuu`?8?#sCN2cGrA-3Q3d*&R7MJ(=WO_z=>gvkM>Mqq?x_II2>021q zWo3Ec(Dc;A*eEr_fLqYf4yO-9N@anvK%LhOpnYZ6hmQxQp`zG#c{JlL*);~W5Ja5;` z8WJvVDsp@wOO7-1FR$6IKfI4n^AP?W5bA(1E8HqvRxTbtvQ%GJUWN*G?}S@KFDoRm z?n9mh<;OaRFh~sHr-PvmnK23U{}g~n0Sn5(>}L3p$$GH4xw%{C07fGEo5Rb1VICqJ zrZR}e$N@k87ii*DSac>pJ^Oi$q2M5YTj2x8*6!{J*R}Y|3)~f@=#)M=c>N>g><{s+!q)OcV|%a7 zSoGkrjoYJ2HWT@B!~xeed|nJMTPHA33Eqtjq&` zxT0KE`n&4NN>OxAloe(>-U%BB*=$f6AW=k|7Vm`%JTqnkHB;ooqnCLgQp39^4UxvMJ4kdJY6V@l&w00s-_&qvC*k+o)OV*m=4oISP_l{vo-&^4G2( z%icB@-_+RgqOrTvOOdB;D_MPqwvk`CoV88rMn>8P(rb~&Vw>8oL0)e>!*R9Mt*d)RZQ%MZ9TQ;?u+SvX9^H2azycFgkk3in+PR1E0ll<{lx1TM5 z#reYG=Wlvfk)F8`L$6%Y0wcs=*WVKkfsar?bquO4P#cI{RW$)gBi;U_5R$>do1bgl z!RqSjM(SYc4aU%6fZcQ(acZhJefPCZ+of(!Tm&-c^wN~1q)F%KB8yhB=z&%BB3Bfs zqBii#&WZX+;wPoPk+R0oi^r~2?|E6@M;EfG=&Gf-qNlKUq^7$lSo+8&zne@eGU_2& zXcQFTZspFNunV1EK5FKX#3K=)KXo_#h5w@sRPW@cZ*m*e%eZ!P zo5>~b%eaYF5P-}G7nHLj1HE8YH2|I@*uV>GLtU5^2x=;TK(U9Oiah`!MISK=_Cjy~ z4<(Vao18{O9+LG?ot-vY=S(N^oLr;P?%5)?2wl+TdO#1zJ|a3I{t%0~U)Z#(il+g= z?__*6>&caWt|gwY2eU;^y|67TAdSvV zt!4@$?VS-hv3_A$xT;*485{0yZE+Y~69PIx865i5^8lp3Oh|uJI~Z+HXdps$P-Py9 zQ&6bFCD3Vcn*rH#0cXib#A306g4l9wd1;Z@ABYxmaG;>Spr7wzHfr^kxSy&N{^hIP zRaG1hX><=axwkxl{~_#cM3@%-P_f2iy-ke))aephhd|D80W6QQ9hG4)TTEoOAcv!) z^bsBmJ3SbPOQTd$!(1ST483S(W{Za6L9SrmNx%V1hmrCK}-uyy;<)>&o1a%JJ+?c zh3p_Zyf!=V5U_`wWDl8jMl)(x(GFR)hM;kQs(~G(;n$U!gHMKL3TAfN`DO#;I~I#A z#ZZ$qH#0dt!Y&WFYy4=kFApH!zobJ_@6IP*%M42`j?qp6l%? za)IV}=93nj)R>@mSR8r)EdcE`2v_JawCPy=mDNERHiGR<4-uLPz0(;#G6x+i544w$B4jh1dkU;z0fdB*Ki~c0ef#Y8?uY=muZBG-g zsF*oz1XnHKU>Lb&!+CgOVf(FH?jOJYa~1DBtKJdm!Necrxm@#S%>zqo^EEZ%(l>Ta zh%eOoVu#Pnoqf$O{$k-)^|CDFzFtS?rbljRs;c~b*nh13)HCdOjKUG&xbWxC4J%b8 zz{KzanggoS<}%t)i46`|iTbtyU2=D@y9QV2{ zGBN?1C}85y7=-83=Ces0I{xY>1aRp%aTFh2#%n|*#e^4)gedaCj|^2l#B`E0h5m0G zo_e{g|HC6xFWK+D%7bJ^s9w($qh08NXZW?}C*wnC%B9g!jSDWxEV;N^WOQRryidgJ zi_|#C)u0|hX@#EkfE){Y*{nx(jm?JZ21u$br%=bhsTd@eWN_VwC@$u^MnaK$KD>2y z#Af%J4oBGC-M!GQxthvgtRI=}uFj6OMz1eW=f)8d_AGgXEJ2!K&(dw$$0?xDYSzQ0 z9^2H{o=rT?y@To798y-lJagEE+V_ z3bh`zd4(o&<3y<0GzVoR6GAMsOz}CbYoq+O%UkasA7~C#RQCM2`cL$Tz_pk9ei$FK zQ{P7IpK3TpCM>H9CeAybZEY!%ZBPRgc8|bxfp2$(tZOrMDF#`jWQN2@ID3igZ{*vp z%*C^9+95R{<0}WL6dQ#g@J$Rmrj%fT5jTPjRIpxvReJrkemC_yhItN^837cw*f}uVzIfrKo$ZSAL&tW;`XgiYAJw)*ocn2IWO_Nc z(6l8!h~4>EeaGR+u2Hkx8;8^q7;d)S~x>e5$R>k=v+flDeERO&Q`CLPO(vdZVLFQa}IH$qM9aol2qTIemD#1u^e#nKT-1<`FlGj zUKqQyHrgHT?;bvSNWAm<_q9c^a}}>PZ7iMy!D&w~8=eI&K6{ZIJ~_{bLFfoHM5GEtLIyR3GoC`4h>z7!xj zgMeNLz!Xs1CrBT0BU(08mJ%?oX(Lc&i@?p<oP*3kXb%m^9i)1e} z$r)>F#U6TULQnKB8Rt@4=$9=o49yGC>yTi%(btt)q5+DeRTiwe*(u%9A>sQv23un|UfNj2jm3IsC%4~U=15EJ~xLsDAghv*AO?bO;x_7XSNU}`G zogk9133g1Q(Q72x>J}KBzNM)abrSwEoEEz@``;0KKf6%uVrg8+@(VlLWw#7&y=Hna zHro5NwiIbo92gnt?&#@NhPxMUVPf~5`u1a!y`u(wUv#80wXE<`<6^L}p>1c%vA#9eYw89uBFfms(|J9gPDMoI}v2(n3% zSDKxh9R)#De=jm`EQRhbqXGgCdGbtEq&#`7k7H(3)Oc4;O|g3yH2Aq+caP?ECN4@R z$zNX>I{mH_SJ~ElEx9%KCbwp!@8V*;1t|0TQ~ZMBYa#S6j&_{dYp)h#iwsxJX;Ae8 z*snvvCFQ&_)KgXIHtS7j-XaS&r_7Mz;P+;`X0Q?il2x#v2U2R+NKDYJl4=o6n;y4> zYBm$e$sr+`wxqgfVrXFkL)*t#)L->>(e21^8VNn7A0XJ+X77nN?zv&-=FNAk`>RTQ zV2g_m97?>KiPrn#gNOIpui47l!o$V(*k-obA$UnUwO^^fS zRox$B-}vcT>W-&Lc0iD^mX52qTeUH8$9j}ZUZQ7c_X+8D%&l31NlB8 zx}34MRZnlL9x6+3Jjb;gFek)woA$P1l-U5!=_ZEZZME5KeKuxah1v@{3nD1ILFcTj z3!^@($>HHepVgZm37EjUu~9A$d}LGTab6TzY!A z5dT9b3VyZ-#fxI{`2rnzn+efnf-U<|KvqYZy>3_ObW(7QSRr$~(`|^~$S97!_oP-d zov>>Qdp@HG`crrE(&(UQOD%}o53j?58ii41xV+3MlT@OEnGR8O(AQXqz6Lp9)Xvhw z1|5%f4v%H5E|QoI!5Ro3FZ$|*i=W0t_{deBRLIR3zT((N)*ai;MKTm zQd`$UU8`X8Jr+k;b-yn7RPo}VZMFwwurtzwB!=_9QXZQL1?! zs+f-~nsaZ%10mK#9WV6#*a;bW1qq_EQa8*K_(^z_5b}c{iX@0SD^5&@`O~nj9`Rn*@D}b9Y{QSNmC?B+Dg5EHYx`E)KZ!ow0vb+u`i)LFhWUiR0 z3FdXAMRe2D1gp}@{?;2AYGLaUC*H#w$&XG2x%s>J;8phUrS1zp{l-sZ>RWGx0+>|B zP&kWEXPb^D&6<73ZCA8tW40^ba4X+%e1Dsb-Te~OjzZC?rfbqNNUoqk?-!G`W*N#& zZpc{0J>!YLdr15hlOAhH`~d2|uA-{@le^T~ZT~8cmj|*I#1w!oj0JTGUsWvaZS}t5 zBE6AFf~j`1m1z8}DD$LlrjRDI|GEIjO5CE3poKFwiWH}F1QT>6#KxeV1|&~HZz*Eg z+h?E>P8$QOALOPmG{Guw%KvKsos{9N>=M-5+t@$=1}ezq_m|0Ry+3#HEldIiH7U+E zn|0wV{Ku6yZZC46NXhlLXoA8uR90E-#udOnOs7)9!j#3l3 zq9J1$gn`d6S5gb$7xka806jWPU3;#&%I$!A$+`dP$-6{1Z+t)6s3A;nLC+$ga4%7s zo%Aou;r5_Z1qI(oR%-)*%+m?ya{m2eN|C`}s5jKtffvs2^?7RD1-#oehoP&wh~v_d zQI_|XXT6Vwwxjbi;YxZLIc7ZN5=^7?FoTh5;7xcGnK@gov}FEeEIt3<21z6y&yX7l=ayz3 zSFkV~Nbb18ZhlDBafpgv%Zw@%2c9Yj$Le}QgA+%_`w(1s2tkFaj@h)JLbdm@y|60W zP&ndmsR~#Yhq}g%a$g8U0-SeH{vs>@XWKdE}Kkxfr2kF!EBK&X3Bbk1>AZC z!Eo7RfefQSAJs{CYqV4l0TFBlO0?TIohp|&*n!iAi&i~Rs~mhhV`vbBl8zGO=$lbT zgu<~(;$|o=^ti2v6|l$4r9NJW6R^Mx)dJ$}V!;{}JcFV!^%`k=DE;6If63x9C%fFO z{~v-h(m8tB%u`p@0L}eW7FdX|%y3gN9yP>h{*ga&-kDTta5YQ^1&=wtUD*rYUz&f z{FP%DCmt5pZap>>J~=dbRvh51m|pofdkUUIf2Fy(!?Vlvi;IJy=E$PF#QqfQ*y{Or z?lyGm0$5LlFfJTZjtn+bmzL;(9WV+qcsJ4`R0*M&P52992chDr+x8twn_uGuH9E!; z_Hr8nfX8u7t~5MpIin z)z+uiE0G@TFfP)KdnC$CHwsAXdV&6-7#`xm(AxLGq=TlEWPXY8h$D0dQ%#NBv8XT# zKuED7{B5S{On!fMJwdzfjr5_*+l6&cdfWR0(a@+eH~EOT&M!=&gkPB2!X2Bpw!NV+ z?hjVh+g1jb>*(sFT^K>8ur@)xPAXe}Va&{jrE(g6HwNcrvIy;{Edr}u6 zbhyIUdj040HfT;y(~;DP1nbJ|cr4WTfeu>$F^*9DptYIY2Sn`kD6r9!EyX<`6POmr z1>y^`(1MZ{6+8$agu`>TF4`%1?Veo79@GdmAk6dGwXs%%pBl;~X#K@Y& zWu^ZnT#Jg<*4Ft}F#e1T$NC7n?rrdM#o?mBl)E;+;y{TcybJiqJa&-u=itjRRJ2i5 z!w5`jW{1xF%3tkLxg+f@cQkDso$9g1!$VVldDnLE^xEqj?`W?dUUWZk?ert@9w>@8 zi)CU>w%)CB7moII%z9cn=EYCKJh^-H_RAF`#ieC+ZFfAnHs3X>X<+`)eh0@jCH7Mj zsFr51uLG9FK`UKku@mCb?%ViO~6Yoe*Q+o2vt#uo26`RxqkB+)Zw+iFRNOcv<9rBzn zx_zHV;6;L=DVf!@Ax=1{gJ5K}3ItwnM9L6u_ug5<9BU`zDw>%&{8rimW#cOka3?!G zdzii!wT;z5z_R?jYalJD!0+|D=y;2?cI6r)Yp3dkW}j*9g+3DY`%BAe#oy!ql$5>K zUCIFCylt=aMe;88*aLduU(yl0GA6u;{J2-vF7Gf*C#!+Dd(n-;q(}1CghaVXCeBpB z?l5B?fMgOR5XTse;ufmX5zygcuk~gH7V5xr&}dAg+hSqXjClZIg1p28+FqdkIyvh* zi+rQP6cJa_s4QGlOa0Y~i_~oeyF-K(laNhDRchJWO;-r^YE<{-drl<2uoza3Zl9T2 z>e*U#&9*j%V!g*UzLzFb;uk|l#Nl5ca!h;r!Ekx0C{9d_9|@lSabs8Obk*>nHC@0O zXVm9R|7q;51%^B1OX-aGeJ+Cig76Ho#n|1UH}r^FS^-c+Oj=LHqKNz1>CsL;V`xb= zZiN|&zDNDt(QpUu3^hJNg*`1^eY#WV0Y)8|z21iG{{S7LCO@LOpFCCa_Leho>Sz?Y z*g4x$Tj}d->>Sk+^UE`TnYIBV!UCd81y%%IAHW1fI@T^r_Vb8lA$MS<+<``ML2}}N zDoNfwh{lL8qOm&>>Yizo0>tr{YE6rF?N*{Wb|i;Z)xU#B!3w^>_Mo%3JAQQjJ8AnN zp9sZL0kU7zF%hA_Sg0{=1JeGuSe}vJqp(0qH7Hl7y@7-E; z&$KkOUs}EO8);`OKHaf>=#_*R|F1`-&ay&DoPZkmkDB1v(UvnmYV2$Zj2q;hQA7G6 zhvK9Het@IBmmTeh@Z@s?jc$XENJ$CR+e^lUXu=B#9bl!*1&m6RHIdHcn!sX_x2QL0 zwmv9F3~ax#Gz!=e;}+}Ro2gG=k-!favEkyxfHpw2ehYFUUCbLuS1Co=I)!Ukp211m zWN26hBhmDU{PCws-dPkMU<#%EQty0Abw&L|^iOCv|LJ|8uv@{ra26)~c?L zF=cXBTX(mnO*jo{M=21pZyH--YPK;@SAM4wUk?n1(P4(nPmhd5HLAuw`+Q}E-G<5u zY%Tc-&6-1xv^eFl%mQ)(c-FUA7Sd(~Elv_y!(9Xd0YW?*+XEE2KM>-< zH#I5+em8#{PdGv5Cehoj?$qQ9)h+!KFNk-XytsP&Y}a7V$Y;f`q-~e@ zbldXUby5C_)b}2-yt2AX(!Xh9t!<+Zp<(oYdBChs-?tWGf8dUf2m2Njrj+rjN{0+5 z92+KK!_o|2S=KBgbmPh}e}e*5hc%D{_{oS#1I=YMiOsPzwlbY3y%%izzmHs68}7r~ z1P~o!Gh44b!3~up-@&n-COpi=N6LF6vB5=99Edl53T)cHU=d-_@GR_ihK(d_S_p55 z5tjuTY4@oo;c0dt0F#H#^L_29ffO1-zT@n!39^RKyVQw%j%YyDg8HKe8w-MF?6_t^ z(Z?QW9JymfyaQh=cR&glJdPnoQg<*y@G8jJKGNlv?|DI)9`5cM)opBhXBxMz6#wb? z&e~Ws+(%Y|_&3q3N!uyzE4d%f6z1rc6oKUudBOf zcoi7TL@5)VnR#1Ld278_@we36`OU_)Lnk0U(Ma#$BJx*6kf96WYmG>vKCW0%u+jn@ zj4~l;5bClJhB_7W>nL7>UkqdmVS!C%9oYzY^$7Gw>j1bwOv_P3$lXAMh0gMzqmZHi zB&N%Ri%lslmHxvTTIQ8s%S6c>52jmu zi@_vjMvHBkv0-XZvb@aAf|5p)QI8@@n0Gv#i=ZT~1A>wWQwj#AXR%G>4&(?*Qj&ri zp?fo-7rTR!JbktML7|{ze+q$dJ$<1sUVkY)CJFk=7HdhmGK3e+<)9VIYJnUqDf3ZK zEE)BH0cl+fWmIG9WD7rk*!Wz2tu`}JaI1K=V5=ZNfVzTRn5M-CwFviygFR)W8C0wz z_|UVpVFR2zZghAFGEe`vv8Y5hn$L|f{yVuY*W&Z!??`>T-f*|yvdEm3#ADOL+{0l- zC6{%yOd~?CgTkh=KG5!~1zM5yNYYUO2~N<)kXz^#gIpbvT7&(9PLNDryTgi_18Ead z52RQWzwH0gTZ8OMk=M*LZUsWX$Bq2eI z?V?s(sxJe$2?7}0l}QI|CKY&^$xU_-w{g&0`2L@K=5V-2+T2-xyfD<$7;gUIkKMP< zE-+uFwLX0M^Voau@N$Zp`CYbCtIHpM93pTUW25;2NlF^6m~Mhhk6fmO%!<)Xhvr(_lu+7OOVRo=}-j&gHO~&5kSd zeGYt|n)E)Gz_ z*N=Xmf>U4`E_P+RrXyo;N2%8IB^_Z@Y#e-1JaiWCIa50#H8yy_9{wLG`di=mM(Hv>VnKc{8>UMpS2mC?~ zd<*1FPv8gboA#Uu#~7?ajJj&FiW0iW=k^hBGlE78O{iW0g0U2Dhs$ZNbW{+5utp}U z5eO5(5W@*)#2d&!Y%mzroJ>QW8xaLtQR93=64=;`$Lcatt(7^%_ zxVH#E=z7P7M{&wrM^n?!PT?cZqr0R_53~SxjH9HfZ9K?EEtkpA0wBV4ma0c6sX;Cu z>1tFNr{a(0NXO(DhwKhm-2pZLpEr?XF?`k2hal5 z@K~6PQVkM0i-|D7CKO?tSO^@P4Y($dQ80#(ugnsWXo7$cCF5Rng4=d#5-3$r_JAX= zwLn8$s9~1;iNF-%f=t%D`-1RRXE(tvw)4R*PCp`@Gr#6|`W`KvasEz4fRF;8)}77^ zy;z$!d*)B3ZP|3(Evx7YZuh+f+f{;-{cXkEQ15XY4ThwgnSofx10dp}qCN=>AdnQ` zRCFfBhNuGu2No0VJ~&ql$v8L38TObJ;^C3K$DiY>o_2y~^I24n z%P^Q@!bcHzDKAUbk0W?uwg}P{GB?N{fJZG@%{o{a*cSv~&O13tw+#{|ZrWuRtZ3FU zp_>MpCBPeQZY1Dv$ga@C2Kj`20!ThN6pTdQX*GjlpPn=~J!yrge9101&bOs04llJi z!rvt%>5n%ZYEAgx-TSw1-My{OYZty*9Z*Zav-fs-1kJvyYM#Rmle$a% zvoy=p9UPG2B8S}yO$Iv`LhO4;K@{jsKa)oWwt@9RB8W9k*1L1}frT|HPTa zmD{>D7TVr-d!@l>@7i7pz5kB7#G9mB5pgn{K2_#jb(lYBIJwoa+U#wd>{wnC#R0LP zc{;qjA&nq1Al>-4#Q&Byus{otrEgTsbtO0-n}NWk3^JX>i=t2yF(^{tsf7w#SU>7E z&8Vs~ZGd$YB~t{e)c~nl-WsT4fn?tWK@mBA!@XSvADXYb(o}Fkm&$vkAN6#zi`$ z%tTt6D~oNik>K5r9~)&&HvYx;k3W^rV>%F}!MYB!2x@y4Ghmf}z{gpvu33UMqJy{&J zm6yv$)&~bDJNXyE(n4Wl8dE4317Y*5BnqG zGYNu6(T^O$IVjQ5)rwzRpBmlX8XwuFe{N2U{o)rZ7tS47x$y4GmmdGM?NbjojW4t& z{z|%Ebe!o7bwzs;@4PM2ajr`?PCC{mCpMjN$Fa%7C&iPi%d3W7!!1iKV@<{Kh>GUb z(NpP$(LE%*PqD;8O@2EHZ3qodH@FS84kk%wx(`q^SY@DY!Ltb)961P-v%ul8P-`qJ zise|?s~#hyxUWqkm?H^|x{ z_pG#m?G;7S^(jqW#643M7G)@3>@zccwX2R;(r2#!RfLy1qR$H>dP3 zACiCf^0s?1ynYX^LVNxAblC%!E;U@`JWV>BF)2b_RWHmxHKax-%%BY3YZ z7J%B5vw#8tzzN7T6|}HVLH>ytVCYNE<@yqMD`l*C5$I2;AQ%FQv^L<#OEt`HR39V) zim_w}q#YcZfIDclRXh&@?aZSnpv@#D7VX5vVE;wSj`+n-eQ9aVvRE@bA>MgwX<2Z@ zxauCCdCe{NA8)?5FFG{nTs4m`wKf+u+#S9)T(aPrJ#=#JV&YM0^R411n;Z1;==h{; z4>SPFFx)vl-*&vLy1FVTn)*VW6%Ol0X>D(tVK@X3oEqS+kS1|xap42cgJ{0IjFpVi zkx?vPhEd2&XoEtXeWcl;fOLoJ4t|n8@fg8qyt5aAAG(oSXN+WE*>cpilIwT7);m+{tVZQ z5N_1$i4X!Nh7bV4BE!M!MWL1|w$u-e#FNIJ+kY&~Zl}{Z?4-SnQT8s>9ss2YkfpU8 zp8}l{31=f3Ne&6p=&z;1f#Pn+Zf0K3$P5RT>yqzJlz!-Q6TOzvj=^bQP2Ef3qxU)< zJC%64x;0RBbYW4vd;Q|-+L>;p!M_?mvOTqy_&Dj6xd%I@oK1LKsgEHZ*E=p2_4kzb z)qv)4c6j8FzepGrZMO?hkJTj`eH}Ewb*Z2s~??h*=Spu zKR?}A(r_*Oda*4e9xYto5pMF1_yJ;Bz{wD_IYCjDqYp}a#^zql0+Y@(7SEatkt?|KLWuUO6bf$Q) zXK1$MZ0C@_vaM{UWFR`cd}b}YTvB>8ws}Dm<4GI!HQ0x!FeaQ)P7QU3klyeb4X97R zg);+Rr>>mhEf&2%!3CJ8ngtKE6DmCPdc!8n0Iy*donnQqv97VW($|Az7Z0ZRE6Y*4 z1U3mFDn^~GRgTf21#_~?h;lz5x&%{wQw$2{@hBOvVNuf6yiMxC|9*IlQej-#ZeWTt4mZ+z|E zTh3jzAEyk1_MAuFzhW30VDG&m*03CsNB-Z~B?BsY0VXZ*nq;_dFa!}trXAwc$g2B> zJOXNX5Rlc}Ht@ML8?hH)a|r-Ws#@?GpG#6ilE4b)jj)%JC}`l7jQ!TaiWII49X-7{ zM?Fba?t1i1w-+Sdx_R^y$K;=LeitPjOR@br@jRn?!5MRU&nM6d!hp8Y{led}T==um z>QY&nC};m<{kLpTAZ^GPz>cHBEwqPWBx4--LuYO=q6s~t1F;z-mL*c#vbEDF(JD~k z)`5n>0@`Z?{SLNI+61Ut@)AhMww-LWRb@2xc85?*SRX)5H_#T4R*w-|i_%!9#{3VS z9Fib)54nfW)8(37hzp3;iIk$C3(2wUQMS>Ek4U~#*jf3#e|GLf!EJ-LK4yLR?yAbF zYWt>bd18F&r;hnPlt`_8|NGmbvaq0T^Yt%&rZ)P9tJM>|RSkiPB415y@1d3W;{(y| zwN>>!q{0XTa!PN0rnpEV%bIX3A?z8-HOY(?WQhz6kouwynP9vs+SHD=2-pry+mthI z9=(~2kUV3vMj!zV5eyp{s-U$QB~@Uj5BszlIZi92#*Mk{kbz!dw%9IloXF~E@>zP- z?jniQb*P)OyKRZ_fzk0vO)x1$=hpeyu5<~@%0d%@nZ)meRq1I*5UtcqE$j$6S}NKv zYkgQ;mk~OGczHd9*QPth^zZIFmQ&v#Lc;ll((l`RZ}8~3qvPq?<^n^%fk5ZN}4`-!>QX|CrKx@W%B#?-)xz7p-$*ky5J2_a+!1ofwf6nAYqpR;J^{C zb0BqITg?feAlhmT44qY-wkn>lq1t(Tck+PbC`h0ZE~pIoSxUv>T+tdxj22qQ>6jbN`sCc{9PjHH>yznZaDC7nL26)W&t!CO^b zSyswhT+%_QYzq!G>7>v6dOyQQrGNfCUr4-#K3=DiEJQk}s%B;Nj{+Oh|%M6>1iUs}d;(8e7(-36XaTn%Xk$SVa<|BD(Y)bEW zA|7|?JI{a0f73zuulabStcD-$c3aI$g0S7H2T*( zRlKBlMq(q2*Z-(#XfxE%QB7Rrg@?Pk7lSoL#SIk=yl3EEN5yG$mc2buaZ0RvxM9uF zRSil5DD@XB8#pLA5=^|z>Z9@=9!eBw0^kFAuRO}oA?)Ah9(LqqicUvJbs zndADt>G`)>PE7UWl>zqV=>HdFph!3>&M5Y&$^I69g$?Ah7B4O^ok0(Dv>T^RaY3tq ziVnwFl%UH_2?b~}uCvW%*g)$T3ITg41e|Qeqq+tInd6-p58^@DxlXeX)z*HKFfEc} z5*Ma%IT1lUz%0s0+5|F&psZGKuy0YP0sB6_g@W067exBIzPPyfXfYZ*FD=ZXBP_)} zsnHF=(VVX`rd^ zMEl6fnbI?9a`LSVHQxv*mhqurb+uOBlYGj1TD|>h_tE?U!!6mT;7L-uz(uiF?dd!| z+S?i^HXB9i>8$;WQ|swWm3l@KCpmCA3@8J_=7YsxapML zYVw%>&fHB;1Yb5e%?w~UlDLtY6sWG7{V+D4?1rp(*>uh=m?&jVY8Bi{z1|lg7ID_O zC)C!61Fo&9swm3t_U_eE)f5>5^&MhQV6-4sxqNK~>yu0k{C%P4g$SO~`@f6NBs!(f zux68@=bJkxceVC*8%J9z=9V=J;J&;32O!`4)#W+YdI?wDitQ za8ux`uNw~AZCbBy70&ZH=#jYaq+$;FYe0d`k{x8X^#Xcg(%XO_MwrA##84nDM%Dr^ z2@-*@1I=b}1FT96)5CZ`lC|+l-|n%3RW>nx)_n$ZOix^h1KI)(JSuzbECNG0ao{m? zi^rGnT2lys8&ND)$w{U_6Tuq;{{N(Xd0?DZb?>*$zAutS8m%)L?HXw`8tuzyw=Bt$ zY}t;yNV4O2Pi)6=c5oaLv!#TjX(3Pug%Z*LB@YrOBm@GK1WE!0+CbBmw(r5?K_Ae* zw!A{E$@`sqzi;N7(P(iVf0Tsk-udpi=iYmk-}xOaey4lcN%V|9<*R27HH~h&;n;R> zz*5lAk!YyzN_~IVg#CxNejhD*2c}1c$l5x3%bn+HMh^IntX^hFpHJ4Ud}vvjmOJ;f zC!(V3UE{kx~(AU*Zwp-&Z~d*@nO`esl87U|n$lFebDX zF`LYn1*cWAI>Fimml>Qf_&%XR?H58%!P>v z94%Ugi7YS?Yc1j(l)zAm96H5Okd;&eBrH(N0(TjC!04e+ol{{CU2TGCD~U4mC)|EQ z5>x(%)R$uY_QFex`|s##t8NOF`aQuCv_u;lOr1I8t{rMT9en>Q=O3##?WrH0=DK?H zmb-6>-QE-_T>Y&0ozv$h#*N~RBM0X?lJ(`KA@jIxd*9#!HCDRM9cm9P6nw<|&RdMh znfH*p7(d#?r&arJp zB0Pw%u>qX~cQ0C1$(b_r)l33aGZ~FqiQO8WjCMOh9?gyTI!-FOE>DI^DyrWU_RZ;X zxM|ISWkeZsZwpq8dxmC4lbMx7Z*1LLjvYw5vMPn+q3b4RFVAU98xIYlNe&mb{7Wn^ zE-WPHBh@MhdtLCgqKL}|R-#Su$8@~~v?ZISxx7=ATV(;Lv@GtCjy3$u$Y6VIv z$p0Z7QEfxEl|@ty;QBYdK)&4}zO6_fK!7Xaz>PT3`A)^iu9krs-oUc*o%95){& zvv*8#vUe;yx*8IMb1$RmGkxHKdyRJ~97?yG+c= zQ6sJTKo;u_^IjbmdzvF;G}Ql-}d(Cr%)=r()+_#k#|4>onp8fld__sBRuEHPk7s+*DNAIo0)8 zEY|h-Q1_AB?tRb&Jq8EWL{KMR3!n z0}t9~I)~?Q5yWnszN74>s-oWhvG)i1hITISmF+qgn=4;^FRO>WwKX=N)x++cZ*-KE zlm*)o9l?0%?6x6wsgt2Tx)a!;VT^kwp;j164hP}EZ+)expsFsZ%LVO$64*8 zzm7ekkDf@52Hg&dE21YRIDP13(*7U^ZIllptVmJ0>J9(*`j3Hv_2_QMUI#D{wjh?@qYCt6=uga&v7rKjq* zJ^{=jHsTYu38LLbo{v$oFM^rL1$+;%TBni8u^5(NV32+8CJM+*k0x%A_phA;^ksGz ziYkrZv)gG7~}tYgVHU2g@pY$+GMUrrKyxw%g`S z1Mm~*h|$yl7!qQss6Pi}K(mO*yh(TTWd_g&?R(eJO69Lt>sn(wV$OY|oPza#<&d); zz2Dh4{p_M{-w&mxMb?dXWPB&+SP3?e-G2A>Lyh@VSot(l;Xz@4^13zzuC2t*hx7_# zX9s}ALawhxu*(*ppOJ`ys9-~)HXme2gn_0@$GOD$`3R8G%h(SZ>kz-ho9y*z{Cw;* zMmCFN=0BuW(oaa;#aB`vicapj{=!}>Qp@oHWc2$Ewao83a7rhK^Qj)?>+I-u4FC3G z^!WUNV~9=mbw>MoqN(rvwEe&_!`kB@6OW9Hb9^AV81x_m2clZVWKb?Kf+ebHq{kWD z@I)CS<8fv|c3OHm$HCavY8ASN7z){+UDl}OI8-YU1e^rI$-i9bcbTfjKhQ1hBPsWq zqQ+p>Vwf9l=*42}ASoXd(AgngUu*(x11cp%qZwx!(N+^hTaih$P>dB@i#A^;u%!lU zDII8Z$Agod2DbbC{z1PAH6ooSu5hm}RI4L!(JD>iME_lt?!ib@ff>s1y!V)L>dC;| zAU!Lyt1tJ9w(`{Lvi0mr%S}6OD;u7#+f`Z`@IR;%!3R=>>~-l|^tbkHpS`cWoJBWB z7j{_h9UKf6Rv3!21j3&dBJw5PIo#6CA+T7id0cP_q;2W!TUz6sYY$g*OL~K6RC_yf z{TmWWLaxX%q!%s*D*Ajw+qr3T?EGCfdrrh*M!&Jfj6S~Ht9sX$jvc*wf}7ENUEg5q zsuf0(NzfHi#@l1GpeIGfMoR_mi z04U9%V-%0TI;7uZt>X?*aL2`P=g}Qg150;LoGMSrYgTaNbCaJxC^jzE9H`iq_5qYL z`1n4t28p0VEtt1iRDhnJF2K7@0GOg0K(d+^0eb|X<^WMP+R^vyG^+B!!p+(W8wLo@Ze&6qR9uWZQTwy*SfNTk18&HkYL!LBfv%qCw>?+eu# zF{Y@lj(Cik$RZWbNxjoCiFMu)+#_qx7Q7sd=R2XC$$34_zdLZ7?ofTNszxRHzKTTe znup_&TZURQhsw#gzBNYG$S?0LB0V zc$<+bi(y-Ys}r09oZ%G!ODynfF$OeHlM~^Z{1*=Poduz!59;~AMJW+08By;W1fI@^ z#t!(R)vF&|!wqh3h=FOBf+Td|^u*+*hI=)igu+cGVOaS6q^&g+@Om5u6qCVjB#2=X zWM)$gHY%5gpiuooDO33%abZC~b`nsUtT>ni$pZg#RX|$WcY{Gllfr5qHY0KeR8;C#Up#-!_0UqFRIj znPPGTgb@n%~Z z4Il8g#&0zj153@UfIT@M+J< zsmx8u@sp)gQ_W`{j(bgUleNJJSlw+0kSsXGyK7}G!^+> zPU;F3OltpZpcE0o4lCg*qAL$s;;0Ne$B0)D3loJEkX%wD9yOa-rTaUeaxdoj!(@HF zzX4p8Q+Z5LwayA~KqUss+Bnhj5;81Dj2F$QkoZ@_TBag>w1fkGaKWTOgZfa`KcE?` zyITAke?#x?p2NFtwp_l8Vpl*5B6jsl*DQ}+t-kzxut0psR#esyX&-J0^}6mpng$Ej z1SxVwV8H{6P(C#NP#PgT8;Cr9z{O|n>WBr=y3GX0W-|RR7EOSS$X&wlBlI?S41m$q z+PYC;88s6HnsUX$djhGlY@#6mhSL?Y`Iuz;#(z#BOwJuL1?S1Kf~-!7g(M8#(L}tt z(T`$9)+sL6vKFhfL=5~06;*vIVn$23OV>7( zDp1ft>|~6LAZm=@W~#) z-w7)Gp(+ayuVnswG3h4kyQdB*J)Q64l<8CI-4wk+!@FRi%Uri$CJ6Es3n~Jp}L-E=07s5iXOL36=Q}I-#Q9F!GQH zr;>?MyMc87mZaO&J*q4mU+&v`*B$>}6LFaOyXwjVWhK6jKI$WSll0I>sefqyNMC#E zUq709Xy*Da-)k4Ad;9EDkoDe@LjzpaF!A2}Ly20USYc@l3IBMdB~oBf$Xq5_b>VEH zSWiHm7|Qe{bVfq)Gbo5ec7AQZcoNXtco64}h-2+`$3c*d_#AX$5HUP)l;@6zyN~$u ziQIXzM#Dl>2eP{f6e;xU#E`Ou(RAv0;TbCXI@(%8ByRjCLI!w*UPg)^P;r@B-~;QM z`m3n_JENup)dEApAz{L6I$*@`8tbrF;D`nbE8A^tH$(?21L2^(P<$f8Qdd3iJvYH?Q!U*A+HQbsEJH}leWa7my%+0j*F2|Z< zJ*{=INz>AbduP+O!^wEO@8nWdP3jL&9M=If0Qf>uA()KkqD`0ge(i4 za*CTNWKl+WnSV$%)&*g)&JE?P>aezm-RdPQFRfJV@LZpak5%}Jqk|pdtQajVtShmV z;67gcx?FhsSqJH6U&1O5q+1R*TCQ8}YfV&`J6kIcwgej{1OCE7OG|I&ie8eaLb5?P z!(S${E=Z6yz^qF!DlXw3#x{_8YA=!rVKH`BpwcRsgqfoLVdf=b1N48km~^RCSP1A= zSDHo#*R;&7^9aVN!cCsGJHrFQ$8+vP6dxj@=@+%MV&=7MaHkiLbT;s)4(x(Zg<%pk_hBESId7b%C#v7+MItS1#vhnT0H9i6&3 zy{8}sATJb*h^AUpXi^D%))mBz609gwrb*lTG2dLBS+@S3FaDv@zG%ary*xTM-rcoL zSz3`huA4nM-V%SunbWB`>C)NK!ZA3;gsHP0Le**r?HUkhx)aP zWcTZuRhr@&!ZdrOAN9@EgSnBdv^UzwR@&9Q4c)R8r$_vwyY3#`fz{r7_Ec(@bTPBq zlDc~Rauv7z(h=LPUfq((yx1>Mm&i8ZzN9^ZMsfj^dpHr4)@&=}mCzlQqGASC!Gkvp zpe3Cq<2lrkeKaAClszD$(QKgp&*8N}6Fha*hzV6!S}7x!z41URsX?JycoHU5e8GJ# z%GLwv?U}<}-1TbPP*<0y+8d}S4f_Tvdm{CRdq(JRe_M9mu4^M+<+yPLMPo$;uJP*H z!P4;9j`qT1!(7i1aCq~2xd2jefpzz>rz#u*GDR+l^>NvzuO`5usosQEB#^@@X!waH$a8x)k(iU?9rAc9{pr;qO-9+X*ehzJ+u75U7+AC z^1DatcO1Fx^!C(;&xzmqa6H}^YiszXR6Ms@|NM>ngJxr4x#7B!%9WYjhqYz{($kQS z5Au2cGY!Qu3S9Vu+y+BblHk4~CL>c!2HTIjjUFBV+Yo3b>qw=TK$M?qZi!+7gOJ-L zLvpL5@DL-@)$C_wGH5&RLv^=WTLpnYTTowx*Ow>bwK$7r!SLfn!N-L7)4SrGd(JgC z-#HpzxC2;;(lcWR?%0-ykL;av6sCSGwurWOdb_)J_EnTGici38d0%zgwvm=DNsc$i zN2E>`YJIZ-NlS_iwh$g76hs}Mo)akFm63HN5>2Nf#FxGj)n|>0uG9OQDOAY5 zBi;>4;QHoxLu|+F)5%#*6TBQhFm+_SrS0OGMK~MBZ!bMwTxy6{*F=ZKr-r(_2Eh?r za$h? z{;B@HvF<+<2hk?}u9mKj;lb|t>zNz*si04Mhob=RRl#6YOI5@&KbROX8oJwtk!)rrtm#C?t--u&&qPNCp5zdo z+0=E??Zn`B!$_?4sSPA@Xio{XHvHfkM9;RC;60m(Xt8aSHOEr%J%srq-moLdL+!0_ zw;>@=N|}rfI;9SD-o+d5LJv&?lI>d03=);osy41xgH+Ip1i1KWYtUYSx?g%+4y~&h z2cl{HFFBnw-Dc{0pDiQU1$3VIK~Q^S%H>~sR@!!EuRI>LPb&g8+_$T z1yhiuFq@q2=_-eI7-{XGt282(5ADE`sf5Cc?h{-)92OJT4l~z|9Jr;0EP}6t|FeOwnhYByq0dW$TMj1J9&^J-88kSs6 zN%V-bB1BCb@eG`SaGVCWK_Gzgk_j3sn@yLlbuhVfJ=$O(d?Y)sq1^hnc1~-EpQ3f3sfm-&TuRyO#8C$1z((shmWuGmNwp{H#uB)3ouN=%%ctxdm zMa90tiu!neq;Yg@)ue&EZv)(+8S!}1Iyg{MT5LC&sA!VZBq`Y4Mw^|w4udm;)lLG~ zgWR$W2`Zc8q)SA~N)mx;L%xvIg_TWax6`3L8=`sKb|Zq#Z+#*PLXGE}$VFe|GE*_8 z`dySs+wikMmYe5`*hHAZiKW3rbxJOj1_8FW!2(GUq8^XY=$Y}%OiyiNr3>JoL0MjX zZ3IsS_2VIiNFxLQW*1h|$#UzQMug?gRlZ}MKx>EXmtD`fv8E`8UVAz<)-*W0%h?zb ze{$x~$5#fQzvabPLme;RG(4*6%TKfP;?wa#JJ53z^R;M_7)|EEK61dY(OAMy}R+p zXi`MwIGg=7Vl23fBSORnNHorx$HU^-JYmB))v`_$dJXdkAQi{R51(1-ytM1s#8oDU zmZt(UO;POPz1=ocP-2K=_H?FYX; zfjS{BEwJ6d41p3r-! zrCOuJRqHF5F_Ezu?=W%hq>Tz zxs=sYt6|a%FZeRwBh(A`J%c_&GP&X;GZ6Oy#t7X2btbYG#4|)C=_`BL2IO0(Kz=?Vywd5B5+a8{!r_s3Kryg7c#zxr9Z zEW1ZgW1V)Z_K2AVLETt*tMJ{Y-7X-?IgNBH@zS!sbaF^4u zpzv8%WR{7(w&BDOr;fzC1~3ezQ}TX5*3aT1qn1morFU~vsM=2esc?+LqqrkV6gMz- zbd)T}!0B%%EwCnv7XWlnb*Y6CW(Fe>2b$1o;3Uo;u4yJwt&NZcmyLA^Xg;gYip!>zM#x44g0?sW zrw-C!y_rdySlJcJ7_%~r8~|LFLaF_fldvf=a*M^va3f-w;XD(*B0KP zVf~fA!?JBKK>zqkFM&uYk3;9E3kDA3@x!JfmBQ{E8{Ij8Hwi#PAwr>*X#oPI>(@^7 zY8VQHHATa&Z7h&bfN&1k5$NveWH*t9Pi6K_J}jqN>Ba70t^O`cPB43@8jqno6-O4z zbKzofaKJY-H8SindR@oPyFaQ*@3#XdJSSs&%dh_LHK@-M%ROn_s!p8amB};)RNe!T zhJ?GGtuUL627`7p)#u(!s22b$E)No9RpABch0D2=*8Stfqz4)l5&+pp58H^YYA-=B zSDYME?&)C>9eK~0L#bcJ#m4sK`Yz*Nt1ExLXiw+aq1D4oaenye$!Cu>S7|y^+qC-$ z6)|VPqXtb#3jfBigv6piO4EZxy<)MRr$*i!QV32pG@~GtAomMRrZlwBNyxbj#7jdd zVFr^`f$m)U6hJ9yqaFA~2Mj?(BOHWM-12weekuoCF=-?K03sJCc87_T1}!qQ*w#Rc zYqe0rt55n&TPI55g)lY2*X4Gk67OGKx7HAF`M#aA}M9nju zRmj4E|BU|Irr~Jfg2@ghdzjwHo?_$B=g@>sIgp;&YDAq6g(_f8P`REB)E1oDoFjA+ zG}KPfE{ru>S=rte1}9NOvxRYL$({o`0zx#4#kPW!e2I+^HkE?V+l>GkY9uSsiae)a zkCh}8eg?8P03X41E)WdPp{?5bu*AS!OsHk;%M^^&c zS*a-*Zp*`q#_^FoY-3!)F0o1lJIzdux0V#5kvf5$w107Go79i|Ins~k1qT?X9Ov-} zxn#48d}*x-g3ZAW8G^=cI}#AIT}~yNOkj{Ek*z>bViubN+jWi8z?r$G82})r?@%~< z0JsmFE2yU_ancsn3Bs+ib$;lM`Qy}$3!Y>5d0qYu!gr(XR@ zB%udcjqN^sWJ3)YYah_X4snUn0o^UWmurD#V!Wr?X)%%#X#bo(sH2&K>Y#(_vMa9r zC}+ZXRdnao37!fkK{|nCaa;Hf_&hc*V20F`fP=EebtlkawjxydR%aue7NXwi^UP;c z*nAWO%)Spc`8ae6dP_5r`5`U=KuXtB_FVz5nN=|DR(3D!n%l8`+t|oJ9~l;n_2J6W zV3FVB0%03oX{K*}Ro~JGJu3CNRvpV5gA;30Up4ff0r;zZUvU4KP1S69TDp0ExIzue z&89&0#x9u;4>#70ZK7mDh4!@}Iy9EtizmBDcui;D!h#1z2KFuNG*pAphH*Pr^BmH7 zcs&v!4T{2G(FiZ|+D223FJ~Z%jb=sP%rjh^s?}Q8S`{PC~s=KB*V#f4kRy(~caeQXaX1+01qr zD<6M`(t?yoCcy&KC8OyI!F*v*LPL>BLpGT-l?oYAw+Q4Og;Ig_1Y0&z%eoe*fP!K) zXrL({cg@4$r?RfsU7fH2{aVtI5)=%Fv3b&Qjs3^*HqwI|q#zBCsT%puLzfm;PsulJ zoQ%u_&NTgme2DTRA-surnMsvmGq`8ec$rO+Y^SWmze)kK(>!2C;Um)$kh>s(F=;?N z1X66WjmOQlHi{E+D>kc5L7jkvG8p_8YzBiBJx4eCL0k!IMhO-JWfc*{$prSYzf;5N zCIp1WK}c1Lo`vK>XJK{e{-%79{z6bgQ!5 zr1o^KY^YPsr+%QOWpUeJIxbb(pih)7jfi{HG}(V)J8Z&~*!b+&2$Ez5N!=6x9SIUb zs_jAzI;pg1M#{`70{s9Ua?5FEd?O&vlV<2_NGVlZ7!;xIq|qX>BiBBhcT_NoPDIt$ z3>Tax3;N4#{0T7O*Bvf6EM$M+Tw)2_f5=?|ZCvTpcA|x(A`k+(Hq;^7%JajSdK^x{ zlVk90bu-h(p3+>{EfuUDwGo?~SfI6)Gk~4QJw1y!Y(#FE4*!{!r}~RhhjW=mz_G3kMk_M$#aI zkG*!uG?(nC*4&_ABS#lZ&o|XX>KVF#r%rzk@l1>J&kpo=STZ4!0p!XR1$73pV0XzZ zV}?Q`7y2e3&t`Ne#?v5D;|4AzQqf)+E{1u@>p{yXYNEu?#vsk&GC;&{c^Wz+qnO6# zGT7EkgNx0G6yVlADLJdn^f#eTyHLzQc4iDpM z$SN+``eDgywJJX+i*>2z@H=r_w5|V39G8nygYLMT++oQwR`CF_vW5PI^-s%GX?U%X z3giei^sN+Hl1=4-B5Jp75-6vRU>LP&L3e86OwxK3`>I<|#bgAYBu|TNJra&uYmc5e z{GkT-kT103dw2Ui4Z%)hXG5gs))cw`;bUK|ur&IjuEMd3q_cLnb0XZer*!W(Rfxx@ z*bN>RMv_Trab>XNTI$i`_IOcsbd!2?UG0_ryBP&5YSVwDxvGq;>cZGpu#iO7IxdWj zm#3=M1S=2Lm>UZl-O1hockO~}TQyd-$JvXTLXGHU3QIEyRmiU4%~2nw25SDUdIi8J zGOvK;6Ue7Dle3kTUBe$MM&NT4e^YmA{Hn+OX^zRRHTLZL)*?Fq))0 z(_}UuEzknouc6UuHj~W7ltn?Pq6Pe8@R!m*t3gfN(D_+G8TpcpO?URJiFyo2I2goMVG4pWHJ?1E!vtCGvBRaMe`j9uon)FT?ZjM1U8%Ya_# zrlRLmMf+juL&^zN)qe5z=<&G&$E7*3w=>$`8%@0irll;s<2iZqfop|}+(~OiQ3=Xf z$?-*f**V9*saL9Fl@?q|pIIB6x?xC{Zv|u-a9HvXMe*I7+es zoo4nRArr3RJx2AjIE)PUam~{p2?S$nPyj&?b$V(6ShqI9bPvQ>oH9T&v~ZtqrhmER z>|k6?D1Shxy!i|A0jR*-bets}U**IgA z4dj!^Zv$UuXY>;~Ru4pyGNVN+bGx@Z99eB(@Vor!3qH*?mC0(SxhK};n#wu1035x! z8Oc_k(nw%m=De*<`LN`^^ir0YJa>1nB$3YC%|vf3Pj#;`ke9D3(iA9A znPG8~&tv&b!UNBgml;?QCB-7~W|`F}ni;)5S!{|Si~uh}XFi_C&%uMV(HPJ_Q#fpk zgE%6jNua_>um>>|S{f0O$QRF|Y9Af^h;A48Jm(EkKBXR=U-h2OFk!3$t;?>H6Z?xi z+WL3oxk88s$pDDeSCBN&YN?w9ptvbx4Ekm22TRq|pg%O9G-&j3K)d6m<3%gH!m^ph z;QoLrY-JGQf!g2mQh!n*6!bE-p>=-?9&#Zv_w`03393Ww{x(iC#E?a6GWKh92q^?Y z@kuTE)O@&ehbq6j7uzfy4JmO=CcZ_JU!tiw%_l@GtQK%t{MVJLqC#8REbqq}n5|$0 z>91^r=wKv>WF*KaNTKEBNxM_H;T#Cp4nU~wVHTY*2KQ%)U3hj?7p z+lHzFspT7Gx6k=g`y^vl8#wVYqiI2L*-o4}+1oTHC;$)& z#v8FuL@5|VEb8=?SXGfp(J;wlKs8`%VBa~>7tTpZchO0tk&0wd_92Di7A2QOI*o9Y zOK`Z*fK&8!Q!`Imq zpk4UKo!aE%k~`MS1lm)@jhvotMmL*Lpw(_NAqAjv9kQ>?wt`!@k+K**vgRR7z4|4q>qVtT&$;L^ z+`o?MFatL8HvY_Pcq2`^#3&de-aJag?F~a0)1iPcBK(gl#B>E#N^Wo^aJI884VeEh zHHh$vnHt3Tw}zKe)tC+%oNZ`qX*5Ff+CaNxlk89qouOmj?APg3gDY#K7)1wYb4&p9 zrZiI)D@V!RxQ&>y);rtEiLDT1tv%q}&Df9`EBll)T96;hacoep@K0Al=xz)yzp1CJ zI78jkoLiOvt(M6c=4IIQq!W=Zd(xOqtP+DTW)8LYDK?0#fgYLw;B%PM*E|E#nwi1) z3<^RKFT<98A6w+_?cvdaYJUxS|M{ycRb~)sufdT_VGh#fA^h~En-hD=FjPpd{71aL zp?zV+y6lKH4UEn%^h`_++O3Ehs=bTwYX+63}0>AC1^ zRyK!jqoVJ2>l+>7^1dsBQ}bg@hsws!9lPA#+!$RF4-8K4I@8-OM(0xBkGIBS0rz#G zgA47G9_MV|8Rl=i`77xZmS+?Eu#(V)FBFi_NLHb*C7wXM@+j*?)e7JZlE!0DP#_8g z^#!m}Y9i&OUex)SfT=|x5I#8qD+GZH_N_jI^Z;G$NOTe(6oW)lj)vAm#29sh3-g2E zD1ZLy@%lu^q3z2L9KYd#{ga2Jcl5W%DV*OP7gx{Rl;}Hs=45^B@Xi~qUpUfIckH~n zFKU2+3tcFc0 z79Nkr`LyS8*bVR`F6$ktYKVk$IqU})@G*={L;RLuVt+Daeg7b0}AWH{212})$?P$EBE)*ny3?@~L4m{juiJC5V+L34RN4_EnaDosgPfy&oDPDe`~;Vk_)p zyQwjDthu7x?=(WU;M0jl6SZu|cf$~*h#uJQsRylvA_Pt{^c+h(Y;HEwh1?EPr>U{7 zCIm2JQGw5^F2R*|2~`_c?`aFG%B*ZMW{_6%a)qC08o^SP_h}JuT5M^>%XxUh`;+N~ z%jnL72hRls0!ezY!%95=;Lk9afZRu&gORbwBi@5eqbmVGV8u?0wk|n%e8}ylK##l9 zO>v$Qjdejm^3?)pDndOPJ-E7YxV<|0)@kL-q-WA|Ur+s6Ypg5UD2o3=El{iar?7A6 zfBGY=qgH9Ki+{`N#=Q4UHDJf zG?tK28VOZWv9-O}UL2{>bS)io5LJESb;Y`KuPU7^YR7!_<8;1F2A~G0zhTRn!IM>^ z2lR(pjL?BD4l|4ZE$4;N{_a8bETe#S6wC1dxATul3vXNi9ptc3K(sTB3*hsi1srS? z)@%T(Xuv&3i?kCDUM6D2yHR%OhnlJ90dF<1`FI#ex?kl(vl|Pn``a*3O3+mx;YEMq zoNfX<-UXMCZcK`b0ufJlCq?mVQ0!6=PPFsKFZV{3Z&__25!((-Cy4D9) zaziojh={#|z7(AjSd50~OSQG>V=}tvm3CphzWQ2gEZJf>wuRe1M{uzrfpa*b7c=t1CXvqjh$m6VqlOchm5g`S<2ck&;OE~8g zv4gW30UAQeF;%W9^#D)N^n28oePro=$pM z)WTCH3HW~qtmsNlwTn%feeIc4Uu&$VW~8G51*I#WAn)wazMWY5uAjk+$KtC8D5!$N z!fHnUdwY7_$`7$_6Yj1K;dt_fXnC2UxX=thusF;BjXCiB4jC{vm@ASA7N!j-8k=+q zB`8EXXTY^Zl_wsNwcB;O&1QFp8-^EejvA@1tSBwPB>;*av&-!AhdgdCEsN-~pssY8 z>DI(8GZd@ge}n0kfF5V+YUz6Wj@Z5W{pR6?lnF1CynJ@$`H>s+uivJ3=i9g+{82RJB1U<4q zHeJF^$y3pqigF)dlXgT{fI76w43q~#D|-7;_y=jy+mF&W(=rRyxg9o_;)GLTUqXF@ z&pz$-TCE8Gba`1GoajC^<0dO){CdOQt5+Y$@X@wZOF@<(hD!pQ>rLB zg;UAnEwzTjb{OC5s;Rzq~I zy7Xm`;i`U34B}s$y%-&-KC3%f>2k>Jow1A=D{9>}XwAAmnT1$sYQ6EW1vK_tf&~=mimok6Q9}E;BYv&CWgx!AJSD9le z@{8-5Wvm`Y`S-RaYV{zBk8M@rg#7-VJj1T?PU2CDp(#CZESyNrh~yCk{&~+Htw#?< zSyd1c4kIf332>q{LCu7@SxkU3YXA3K=KW$3-qfy z2`Zs=;Q>_QTlxGU7H3vI&z9%}UurAS#ne@nIxO&CZIpo3S`neeghWpk)@L`m3{K<+ zV9&X^+geoQa+%FVtwq4fHi9H5Tvbtq4&DJ*p{o#nhSTh<_8~2;ca`XRq3C<&tx6c- zFXdh+@;@=h=|7`WvAWg&q?6P`&eM~&@JRXysV>yTsP9PT7{QDBTz~fQ0jbRs>6LC1 zZcLsW>};zJ7dtFw4||Z<7I$gW>8!|F7yrlVF87bv) zzvlPrMP{TMhl$LLC#V>XSRLBR-<7<5esZ)U(O3~Q7fhh0NfJ>!%U^N>UUJ+gh#WiJ zhEuq1Z7AGv8c%s)$`nlbtwokXlMywWOF}_`uVA{Ws-y%h;P)= zDbpPj!VK)KpGPM<)(%V4%S|QDj-x?=lG=m}4HXf(W8owVg_B?q zZ*(Zj%L@zb_VTWBJofN(a4>7C5x}S@EGsN4DYh5b3#x0hL#gvA*}G2}>+G}13(c~1 zQAwm7%s*+_ej>56eDxw7(Fe%IT(~DtHq+Rznva<_rICADj)eN#Lz$!c!sv;WeY&H{ zt58wn4I8jX7#Ba5v=4N&M9b`eQ(LHC9(fQ*R+1yHpg0gtk&E!RAgDRuuu5j=Bx0UohRAqke+i+cai7<1q zWgC79J>DbwS*)}ks~KeWC=p_xw6&=K3fFxLp9O9)t}rMMkz8(R8sy0qlMR7@+Z`AW zjE{{D4fdn0dK-rTlEyN0FTgM&68 zj0#UZ6AcAq8EQp&lP(07kjbKas^B1tS^>yQfq$Yh1b8^ZliO*tcmej7mt0oPn@GG8 z7>b^a6rH-Zv5>YPj3TF%93)bIvdgKKkV3zR)D;%^TzI1Jxh5a=D)*@e(*WjE>Xpqr zyl_#tRt?Q-+>)?DQ7KAxd|?rJxoY5^H#h$TL@PeCWW8>9=hFL@oj-Z|-zQq?JNaRi zp887D#PD@a*Uo)))m2sEJQ`|9JzTyw2SRWVcELo>OGI zatc-|`7$oE*W>|Fj-0kr$@6o&!$aYWk=fLc_WLTz-6if4)EtnFS)6_^678DP&!oXR zHR-Q6Af9;J7A_;51T`CT2+@G%=(f@QuBPznUee3w)R4fJ#Lku`^_tU6%sL7X+!vkh zB2p=xV#+K}>uyaBw5EQf`pc{_jzWSmp{ds+&%(Vg5DipeNDV50&_R-EKbo2%2m%gp z3nJ)NBcTle>j9T1FFQaKR7^K%CMH%SnQ$wTf4J3AKy4xfA2Tyfe-MzP4O%r|n-Nw~ zSj!W2YVJf0DHxegP0s~+hNhxIrewVHws_081JgZm>3^O*^z6u~y}Nt6cPzc*ZHMa` zYO8C?f7TO^c0VrOcJnxSp-N&wm=v}7U4kJ zDBWa{`ZlEp!_cEfEr`rgQ-CduMlKpy%N`F;b|N~{)WBs{7iI{PbhM%Nn#Cu1c!c4u zElIJMnH&GIHCe(4zQXJa0G)-WlD6?4m~zDqqnSujNaKJU2Gutn9#r%Z^P&P^vnKd?Uk>LdapkCYexJi4gs@4hO6iNW^JB;2E$5k>RKMyHIrvT=7~m zRWx7*hYuU{Vog9BqlR#J6W!F3WeMeHpAI}680#3GyZU=f$jWKL633?-t4hPY_3?F- z_CMa%w^V-B%X0m9Hg$AwKa`RB3!}lNL`PFFpB@iZOthk^1(wa5-&O8c2%@nI9(NSW(hVgo z8vw!wxi)U}G)xf}bGw=N_FK?vg*dpp=#PRzZ@nP!gfXdPGQC-{=%9QCNr2zXZGg@n z+N*Y>+;OsC>SX46e$DDu?!9yQ>UZ_Gvl^6|9U0Ls=r3FRhc9rNF0ePe$`;x!I+8Zs zLet!D1~`fIeBrvam_)u}5L-Y3S_g|93=1`0NPr?wFzg3k0S1$}wmO(9kO2+P9-L`j zk@W>xzYAn1+R=j}pX@#Un_C!0=CYq5UXW43yUBVYWbF`$wAE_WG!F#j8FF@r{VVMe z%rDp%I24q>%Q_UCH9wE2 zf&HXQfhZvJ)!A#({~jy1AGslrC3c(Nw5<~y)vLddzLKsprNVpNfkF9wOG9P{Y=M?; zLk?SYrU>6~AKQ@qqBrT9nI1#e!K%tak3+Om=?VF%12BqV1p>m1N>}s3(bPGi(3|GGO*CfptHTEsesRgO9c8eW?Z`I zOuv6n%u;%!oJU$Spgf ztP=;?wJ=fK`buE3yF-L1T)vO^>U%@+?xv|DcVEv<_LqaH=#>|$VydzJLAUExS5dIO z+BX=ERTMkU&U2&vi#5%nT?4KVLqFv}2Z(~b8(2+5^$^i3u!s)Z1fu4M(wJ~n08WQg zu0*a3p@Lw&OX-Kt?RF2if#B{;P-AAO1T_ZB=tRyM^XtXhwMxJHCapE~aWeecq;H&E zNuKUpE}y?kceOg*isr7o61@84v(J;GQj{_F9^KyBxIcZtItn}iE`jGFOajcQlfTC# zkPvnzXX_DqD=YPacoJRijYw?*1cfI?p=S*ptIZ1fj=>6$_?rkU3&bD-*T#6UDD@j{ z!plOXg&y8mNqhS(Ach4^W;Ig>* z+=969Zr#HD0bh~7usqcz{_R-S!XJKKjP_p^&!pGx3%3-bhss&D_B%N~Oa2|!ZUaca zi`1M#H+8jT@TaVRYk)r!n$0{YqE4X=R@-u`tc7W~hE{-uJ?731gKOwueg$|)ua!YDioR9J*qn1VPOUK`ZhSY#Wu^|gq^or8u9 za9_ySbzt8!PB~9z4q^sGKA<=13@G)p!5G}~G|A-J8Nl{Q+_11ZEV6ymFTopCiko%J zJT^Kqgp4M+C=?e#jion2X!ET5X9I*#_7$W)MhsiTde^X6Nt-;76X;yHy>#Y`Zoe#E zab;d>86VRh(07?`8{c-*aB}{LG^^~K*q+`ubD`0B@VwePo`uzo)DVf(b)Rs1^1{OG z#Mo$ZFwxoqjddUirZtGMaYPDsKtv@lLAqQbcn@J`IAAU~V6j;&3ZPvSQgKrVz_aA# zk#%VDK0lH=yXI%mU1gw;476xd$V<03oOnh8vXNf1j8~p`aXx+L;ZKmqr`>wPxTg76 zqfGOaS4s1CUn&Z;?Km`37vH_Bz~(F7bw@tYj$7^9;s=`N%Kz&N>l}&GhsJMalAgOE zucTv*%`H2tklfJxzn`cVzZI|Q^6V8bGRD}bouLT?JOq{ zDGRc+W5E2wdc#P;g0R+B22v1_)u)l>Z*dTGzYx0LO~BFiwlJPwW|8S%U+#b7)me9I z^bj+hy(N8^s{fAl&R@`JH<0oA=CW7+N~ho-9^Sr?)@iGwxG2YZ;#utL5zJVx&xV z&^U_>%;_}^gn27alU`JxQELp!y;YVYZ-Q!LG|oXB1@KeWGN%A$sCKvK2K0?;LmR5!Ob|0TXJpZd5eVUA4s&1~?K5~71dD#~zl+U3^15jlHj(@xG`$;QV za>a!vK#|fFl$uz9Ah8%wI|#V~JAmc~bVt}wXrPZ!x2r)!y;MQ$!I+TO9flCK)9Gw? z!bNC-nSr*mh=kM;s1Jcb2I|XtC3#T4c0D0dH0a}q>c9A%z}!GW`h^F>V@q?Amn946j-4HX7hhQWHuo#e3nbfQdb+|eX2mPtNyc9(~}rzkI=Iab|g|k zjE{pJW?V`(04J$P3Ah{!?<-F(6jAXZy}i{jOVB!>I)QZsIIj{bgz1liU7W5iB!Y;; zqXy&%*)ez>`<)yX^GUP{iAVIjs?px%RHO7K^dw&%`_FsD-QNJaM8F>{FR5(2ORVcE z|MSelD_+3e^TOzDsb8RI7W5}Dyj6v(Y-3-oL+Yd!R{bpWGDhATJtSxMrF#$KTO>a9qk82N)QhQb`d~VW|C%TKi08C zq00Q&XKQ>K=T5e$vOUKLJ^$`2xC%6d|Aud&SG7P_pXbyxS+?gRw>ao($S8lufNFfQ z?UFx@?TQP3l0-pValmIVQj1-ZGzc~&tHfzJfeywEfy>ZBm!bMPGa^vdR@1lwB2aeE z1(Wa*wmMABj`EJ4nVT|z+cPd8vK|FnJB-virs(WJ(HyNbfy!F3<=Qv$r^&F{c|m?k zC$lesDkTGl8iBe(0ZgPoLgK)J{-e~n0#G1a11Ng|RsrGa z6S(;mI8$^BKz<0OY5;mx5?5zJf}Gm+<&?#t0EUXmstVAALW98Tk_dPpG8zM<_%B!A z_}Re6#g?=Cqy22q-23@}RoGz^faGMHh`>80!Gl_Ne{X0T7_z5YRNNGysi+az?^HOK{kMXDd*I!$p4ZBx- z=uhccdia>Tu&S=cH;i}v(dl;#4wc}Z{j3_=0F690#f}d|ljsUB_@r^286jd;wQVB8 zV_wLl)nC#3la6UP9FC9!FR;f$aUAf4sWA-(yokhc9c9Yovh?g_g5IUXZ+%PpOTv1- zz4i@N$2ib4?9Dv@%<3;w()~`t~Nw1te1Ol`9s=rac`hh>YGT1%p zFLZo?1P;P7$3X6P|1G}TjcT73VNY^bQ@PjWv|3Db+%x*EtNWpofu2T`q=L(m-G&!+ zKP|=RLt7J}C`CQi!ryFE{*ZoaSPg2?txKY^kh*>kWZUYO{-WUK9X$H`N^q1#OvOG5 zl`hwk)HseMQrw{dQKNIon}*w43Eos1 zbQo;}bihsgy~4sd=qhx0c!`u&Y# zjR?|!=>w@`!a6oL`5XKV;Sk3Slu$Kk8seC760#(sG4iTPsU;fpQc-S8TQM^%x{!+g zd0I%XS-h-SCoix&FuL%L#d}OIsDetvAJqukM^v$W*<6^|rmMLdJa%$VMsfrf_=@~G zBuDVu7(D~gP=$}QgR;mbqX|u{VdBx{shEw5`64|Gs0`CI1WW;IG^C`YBvt~HPhG7a zS`HblqalfG6(N<+z6WLF>Q}!}aBf!15R9aCRzx ze@O&lcum0Xw}@6y>;E}3r>Hw2ng^rw!|igaJ#8rn!+5}a1t?Xo33E@IbAf4eYIL=# z{C%&yURW+pBf1Q)$!GX8b=i*~m@M_Y{wRXQ^elqHuOX0LEV1`7x0-={iQ{EJ_}DY8 zCEyiO*BnFTG4-s6t&cKtw66#Fp87em`f=J-m)+n-N?lO!)GLaQJg1JVF+i^aRtFI2 zB5MS>{y@Yk91ad)Z;Me616+aB?}Sy%I(!bVuU3Z>*2w#~XgXC_iRWI}VaX#QPTdEz zuu9!`^BgQUo#wBw&xm@K1 zSu-9~gJQrjfmT>ZE6m{Qr(*(a7~^ZAzEAv-waU~$NJ18ZDU%>H!1D=%mZO;Uu0))H zsRzcISmiL3gG@qAJrY_I~Ajo5`^%(ou~LIagg>1ttx~;P0E`7* zbcrTvJ$9Zrbd{f{9NRjN#L{n-E?rCKOg^LX5+&J0{~LNJ+8-g`!oOgUXgF&239m83J3>Y^DM; zbA>tQDuL2z&0Ab51w{nsMzyuce#lz7^wif=Z@j{*%uD^sW2%Z!srl=#vs=V_UoxsQ ztNC|RnlXSYvq?CRTnvNGK$(Dj0L#pD3AZ1ZpF{zHWf8e#S!8(^7!7ca5p-EX+yFO6 zZB0qBC;*?-RNGWuRvamb(0%CjxLqu25)cFVq9)7|UK1vXFowVa>Bx@T%7*9b_!8uw zgX!q-FdARa4ccc?-xh75~+(oK~0L_14lp-W53*e*owU@uH>iq$%&mnXQ|2Jtt zP{(Hl8V#z?(@b`Y$zrE-ZG*vd5%z+J67&<;FTmyj96}f}U4rhQ67;ocrnNHw`3M)n zD4790+H@L33D%oo-GcP&FQGIOEYD6SO2uHfG*HPL%Q4Z@%t?(@<89M&biIp@8pH=y zdw-br*#FlW&tAKN{`!X3nVPoB@Fc!T9E484Y zps@g6Sf~nCDyrl1+92x5*VU%$Z87N|SAX`^EZ3S;z=bYS^kkBaM&zpr3&s0Z zQ52&^KguE)FKsrA5N;qIG{Ah56pJFAr=O#NxX3M_yIJSwC^v&bI}`~pyoaX<-e7e# z4}<5X5cDF$Q(aI+g#gUMRnrH*)p7>jpS|tx{#X^=`A0-!CSM?au{@$C34U|$;7~DK z`hT07`!&lDR9=D7sNUDFp&Cf;3t{1(Ceb z^Zp3U+TR2BVifk_EW;@J57}r4vx6sB#44vIEGfJjwWzcB19lF zK(vu--D3R*?)m>%z74Xn2))85t|TJWE`{B( zR-#ZX01gl$VK~E32sLU_U&jL2MpmwraR#*jb`Cy@Q>ui;uRIxezkQ}_cs5lpJ$`1z zU-`+RmcB@5Y}eFL$L!AXR~Qgn*JCf}J?9Ek)JF;i!%Y=!-nSotZ`W3>o)3-`DHYm; z{$x*MO(;<4F`||jId|Bduq^--K}-TXtcaqddl;0Jm9>?%6(RdtT!R37F7K>ZrTMk0 z|C-~zvK|e13Nnb0U#EUs^q_M`_k7%Mo}CxJM#1>wW7}>%@=g!XAo>7&gxUwj`vw~O z$wR%FJ<&5Wm+sIbL1dy&vk5iAK(aSjf(E_B(**~OH)enzrNX*QoT!VM_JXJjWV$u> znnLtO^!RE#YFV_lkPh9APub-JP~1Q-a}wRtPX->e&vXvYB9GZ}(~dh!8`|a*-E(!7 z`1aHTx!WC@-Q$8GY*D$1eIHiBacPL2*iy# zc&h0#t;dmPR7Ij4O3GGAm;XIpU!Pc50d%gpX<%$_SKrt~@{aqGMYe4pYL8EM_luJ~ zpIZH@Y`amT#|szwDs}XD+gsiCvf%Dev0}y{1nUB0(l-=CSbN0}CLP-*Mh4sCp`cx| z5(gH=rEc3u=H0TT=XVj>m&eN(g6sI0)9^HNH!gV&g(a|>0 z-CEyssAXi~cxiFPkwZJ`;tLCYo2TUbyE!81){&OPgxh4b#0Gm>>U*y~W{62W_ctHi zwRjS}8v5H?`iUUs-Oa~#_BDBRSfxj9Vd$i~urwzPu)h-PRrsj!i_knf>VHoNf0uOa z-?wMy#CRfF=5?Cv1<*g*vtd++m_!?_e~aJ~Ej|Lzh&J4#UNj{$;YG*&PmH3dlQ{?; zeo{lfQb>+l!BUaPD$s+dlCfcXZK&GJokRp3seL~v54JSZVzNCDa5w@d0w<0iJ92pG zz~bKBYD>?-espT?AZQ?(z*SK7tfR+OwI#GALi<@~ZCs*M@ZoU{#hc7!WkP6K!uxTA+cZG+2T zaiQ8SK-QlL7sWbXLbn6WLx?OVB5oVZ0uwZZw`4|`nVy>5Ha?mhAo>XE;!s`aLxB(6 zp{!xyT8!lZ|F!g)OV)7 zziYzw`h_1<*X+zb)ScU`w#knEdF!F8uv)OIpR8N?(6TZuckXFVL`B!T#&?;-)UQQ% zs3D$no?Dxm+sC?%3zyUmWu(G0;4Mq6H zW$=8Wb%xsb$H^&1)SP^bjlm;BfhsG?6cOOvWMHyQHwJw;P52csnquVozlI$u!4CBZ zDDFf*UUa>w4*4P|GV$;>CKSLzJUD&rCK9Ha8ak#ZL*woh_DSQl<$Hkt%QEauXP5tI zyuYEkw5&_Ab_83yvn7x8x_z!Y(X9_dwreLVW4tOj)MRVuwsHM3t5xgP+x`?+meHVB)IrM(@r=X5nxV+gupwU zDd*I15IIvIIASxSfJB{0*mNGe(>YUQ2AcuOHRBslV2_E`{TA#9^*repc-K?J8mYM) z;w1hs;3+!rgH{4cW+QtI6WEwd_621?3FYpyE6)twv~RStt+#V%&un4K?ln7OooGwe ziF>ZX=*8ZMM{D-XE`b9r-rC(O*5#aowua{Rns;z#<*Y)R1HiOc_-tRSwXndTU2M2c z)C3L$537k((+Gc-tPR2CP+TWi*dNtaD7dlN`~cs|%Mn|&2Bbq=Q$--OFf;+I|CZ=& z@VabUoPrbyz=>>V7i0T zC%zqAO+Y$Ds;fhcsI!1wxa>jHZd#%g+2E*?u}h40@R;OxWwmW+D67q9*6wH@T=ZXk zNwG>jdVad?9c60{`=QP{@f6%9mc>+hp&m9NDf}#H?d$1iY$%4=s$R&QD5j(gCSr?_ z5lk7tT!4lopsZE2AP#sMz((^jOLbE!O5^TRA3(%-wBdkr`07<8TzQ0Lh>`zYqOaVl6nj)l|J6V>}KxrBtt8 zlylQFRPyF3!z$Tvh#!4!s(0dx=MUd_-GP%G{aqtp5%asJ9rZ1H_g(#*(l7OVKuD2P%EwV4#Yn6!^3@qAZ!JqQY@PAD+8;K?w; zzCyqN8J|-o@bKEv?A;+ih0JElGOR0*D~O`9%%YN6!V1DE$r+Cg6RZc=ETYXJV9z$2 zgj+_F0@zT;$55#RGCJIqbWUMj`xi3yXS@- zo&L3_HQFFbhtq;jLhyZJRnpP{-=V;nKCf{osRZ4G)D2c?5r>vU4hI4}!m{N5{22GgJUD&`xOr?n7)mmdG-C#$1OnX`!*HW*9< z1En}oeS(T`;tq)y4oQ`oBII_Ho&sV^+sY1-lGGzQn}gN)_HwSZf8X-e+qvPJrYPOh zo$tb}I;*{dPfHKsRLqDs@~hG^5s!vL=xa9tguD9BE<(5y^%kgO+(tLD?WkzC3213# z5Zoq%n~Kjeeu`Ff=AhWVxa5*NYN3u6C(zAdq~1f7VO{3(*S`ZGm%_0%EX(Sbt` zc#7I1b!!|W+hpsB`h9!K`zmZp)`bUl{>nMuz3l{)g(5;PRwd4znC_0vr)w0s^V*O& zQ8Lt0URxdXmRAP4W*3G(Fwow$?>e3?F%B`^aS7LppX8hCIJke$aDQ8@q|j<54buO+ zSJNW&vO+}Iiiohs;uJhY|{YHqhLXN#%?z*J6PG5-)%tb2ixdX z3bOPGOv{zLc^T|p$h1pT{`3z*R+TcPM!ZoUr` zY!)ZF!RK4_y3>-jwF<)Zhxc8#bAD!e+XOLfB;s`I)PP|C(6Azo4?#(&foWZ#s&#st zrIuRLkd*%)N~mEo!=#Ib_k5b?faX#+N{5NH>G;Uex1ab!e^Gp0&D>qyS8ipR`Ag^i z{-g7SCgh9mCH+jj3do5rgEu<0|HiYEd6l(zsFjq}U&@vBgZ+ul>DFGB4P)lzZxrfx zofN;5v~T3LVLFjRYCyB>@ZI7i#}V4PkVKCh_6)Z8D2yYG9Is z9PpJrM-X%16;jO=^-HjQge5+a-)zbG3L@5leYkc80Mv<*4gooMCu^;roN4GNjBY#) zUSvDWAk4;$aOCtgODbzF_^KOx4TbvXdvfh4{S;)bBG|`EH4&z#raK^Oz}xEaR#!6k z4TDQiG$~Eqvo)JZwNk_Kx3j7Qmd_U#=Y3*FWBtp^SKqEI-YPz%s~foWx~`VOwT4o| z|KsgD;3KQ5xX*oW`b?6^OnOfyne;m8$tIJs>2-UyWqV(?u)FlKltoxnR8$a9R6r~U z(w3$I$|}-PG_{pcgOLjN!-FNS~=bn4+DgRTxTvL;d z{oGJ5`3{#&$#;lOWbKq0uTz6y5Ec_o(SrzxLRiyzGnP8YamQyq7zI?rAw;4cr>B!) zK!&oJ)z8Of!mhb``S^_3cjB&2mKjmoIr`j!qxyeg$U;PGM`cJEnSJuw9=yfsgJFie z=bTGMS7xTCN7MN_D_WuRU1}JKWXK;};5cQZt%(^=^d5{^S8vh$3U!8GHKK}cxxre_x^DfKU_nhBm=>Q96y#)%A z22uydvQvH~?bh<6Tq2cs51!Fwh|{)qDdI}CBbV(4(TdH`VUgrvyEwqtt~U1xD~$G3JEE7vwnCsVqH{f6ehp5uBss46(0(C zM|>y(-i-)(;dB-_4-9dDfkREqX+{zi&Ro7u#IW=Z<;m#|1Z;!ZU7*khhrGk98)=o8 zqaT0A++ECa=0@)W>r=!j6NW~EEKJDh*PdL?IZAZPvYo-SiFiG2LU#;mDVGf_2~T9u z;6rxXPsHcAWFMk(Gs-LLqO4R)e*V<;T+B}tu?G@uB~z+3@`@KUD>9QtS8EUk+2)Y&cKW4*)e3J=t$=x!qk?K8 z;~|f)TEM1@SPztLs8fF!%v1!Z2Wl|@|Hvotk0Ro>B;3)8av*@U&O%+-wx(YLI+Bo5 zY_5^eMmcSI7$sKjRnTC7UiHTyFtDYnG7I1fwxCzL8dg}N0te_pFsZ5_u}+nc3tS6O zOxn5BCVVLn88dy@_531-gdDUA1EVYeAnat`_BTYnh=4r?SKxPrgjbmRyI{mTSXKvU zfCF*ZS;1#Cvme&*jN8G;u<9gWC|I7jS)L@I23tacI|0Tg|Lm8|3f@)XoW?jrHX^6l<~&{(kOJ5P zYaDAPS5GWmI6gW&(AO<%z_6+G7<&y21e zD%LT>_Fk5r992>8C@pPj?6ErfYL{1xXMMP6RuJ;GwS5t&VOQ?!sfnAdO7XG*JS=jD zjbQ2g!soZwRF?yb$zikvul2yoaG**8LXP2qz&_ayXbc%CfCyT4tqWj5%;o>U;XeIc zc=c_nWhHlkB~zgX&D{a(**M%CMh7GF=^uwehcJO)H@HI_zZX8-XLg_m2UuZkU1>j2 z4{WeucZi<>wlu>ep!ao6Ov{)GB^aLEy;w_&j|hM@j4+bNq64XOEqVQ57}MjUZE|;B z)46p;eR;H{Eee*%Y!YVO6Kw zubKdSVt1OP6W19}&aG@SRB+U@V>-dDAirT%D8QPHKk#FqFpU{XH+nPkj?`^_AGb5U zr@@&Ky)(A1nd~dMPl|Dx5ZR2HyC)i+W(<$gBNP#wm#l~c`^7!-q`PGw_*k@oYTfF} zi6h43SP8thlkL|(66_MR2GOxmI7}-<(v#?X+Vb$NaKi5eohE5=^{SOCU}hha^{;fi zM7BQW18K54QTlEfp*pIsJcw;}QnD@*tVV;N)FNRF&)t(<3NQM;waeSO7uB~lb~Tr$ zY+t(a%+!>q;;yZ-e$bPZoL}A1?Q0s0Ph8Wt{KHd?XRv2IJyW{Ydsd_`%YzLyQxVR2 z6I)i+mqk0KcvJX&wSIqnPDytU``R_j(T}k)jBs_nbp)z!e5?#)@0yr1dQ=MA%)KJt+@Z}iXB4co~f$|w+kX2+)+y@li z@aq=T_6fZnp)((U99ZxylgZR-f(Mr?acc^1o;v{;b_wxL>7_i2wFnqAjNFMn%O3i{lJP~Y;4>rcun2#nrcNz;0eJc1qsamn=V;^ zAt!pyE|Gwxa}z`v3osrbz^CRIAxp2J<8-G@I&_;li9S(cWA4!fX&4NXh4?zb7^Q&8 z7-hrLKtJm0X#wVWF2H!^C*d7K;nR<58v4hGc@MH-=YtKk`$2b^I z3^8?#k4f52h@RasR(>M!MP(YDW@<$*`HIDlODTac*$QS2*a52${7{0?~EHlqWB4HwMd$8i!c{5tI43Zi(A+XFP$ zC@(wkGSEa62W;MeXE|OEeC~%dR}PDlfjl~X24$)$>A4JTnt8 zm^oM$2ONU-ade<=ve^!l4K7>nSfv%)){nA!e%YiTAO*+b$9kLn^)1JHTR#}gu-Zi( z03rsC^X=f zi~QEkj)tNvX9yFz0ka0&&8gV;aR|Le^Xr=-FeDhk4aG{O(}eUvu_hk3 z>NKE2Yx%E@{JM?IK(_tZ?`tJY_4g^xYKen_1R&~hm>X?bvUxwi!YEC71_I}PR9P(MfZ>i%WnB-OxI)f#bc2>$wC zi!{XR^-hDD`G#iL&_?UHjbT;IwLdRo63e}eWU-6^(5>i*vQuCCD|9id+GrEOmciW$B;<+H7|S7)GyhG(lJgoTbAbWG_8GS;W+P&XU|mX3N~>LGUNB7t-EBYfW~2tA^3v;l7AS|5XEs014DvIN-o%zAD$GzYhQ z%rpsGBtx3xC`uGmRgss2s0)e1h9V+}dPQYG8MDg4s||X@tLAn!7d9j_B&w7Xb>2e! zT>>U(fvw3RKEHIqK-W8}WqH|^J=d;&Wa$2NtB1$eEbHE;be89~ zS68&>RQHWdoijS$Uz?cFT6bBc)l-?7zjPqkTXts4?)hulS1#{f;!g)v? zL9x=FmbzM}F$gTw!sjfDg&2tX811|<^Hu@Si#&(H^hVx~(vsmYsVoxU;*+Nij&rV1;x4RrP0#YLG;Ly+Wk zxcf;-47qD!QbTz&O63hgH=Jq}1Iz#>HrF8HBOZkx@E)FJGxx`M5sv4KjEsg1fO$dF zt;)}b%Pxq{bX+1wq-X@w*@DSx(WrTAR@KtYt46%zDgMQ$UvcT4gus1Dd=&bvk4#)! zbGDYFCb`rk=~Yi(xUVRmLAG7U%popsFyRM|iZ?$j0Zq{)ppFEM zorpXBOu1(-ELl2O{@OFU*8M1xm3L>eygT~b zMULdm0&i7kan6q9v@@G`^=@cizPxLBduoa<>0%@gWdlC#nma4PTvUe|g^J36zEBrg z+<}-<%-LfFaQMwgYUWv@oUq(;mhhg7c+X7I#dH!c;!>TFQB{e<&5L_w9$ax$fcTl`Xs0JiIV7z4WvwEVMr&hG1T1iQ`3`MDrzy z3Q-;H!n=JHd11j+hJ}^H!NpOr16>G20+f(W8^=uAl=I^_a1X+0bmHe_MN)AVtW-8V=sqtBOUX$#bDd{2Jvtj>Mn5Bo2Y~Ka4`2gEPYHFFK$F&MRa; zwo!Q%+ss0}^ha%*IeR-;e%4gvds32(F}%@c{F61f)k;`1R#|U^<;N($si)MO@HK72;w>2moo40z>g?&7*8*Ed zQFVNLij&d1D5$XL`icx?Nk~pM7ixck!qSjzl1dD$v&k~leC96ZUx>P%vXPOyv5`&o zyi!NvNODeTT6SMeOL1P^;zef;bk=1V6I*=`4c@(aa(Ha*+SVbH-I^d3n%eTNoHMY$ zUlAp_*(pWE#f?Q7^}R*y4SSX~EiQ<+=ViyIoYu0ldqdl*<=rbf(h^|TQlV15B2~&5 zfbulbgW5{PG}eQ~iVL&c!lrUgPQ>5M!8OVTA+Zw5L4+E>VuHFQI9rgVfSNC=>Q?za z%?neE$2cWA{1_4@^@j#IGEjwETYJG@81>oJ5T0)NsLZxcGxHK8#>LiDA!~(!cT!@L zA_WFWfy!$v zD)hJvzh9R{gQN|L)ds6Iiev;MvKm}sCBUdNU!?jSt+45&C)%ut?S(%|)-VPx6ykvZcfz+tjw530 zE^aWug~YuQE~gkinqyao^0@hq>_hN`SzUp5AxO+H!Jpi#d|PUq<5f6ygo5NN{xrkc z&;B&*(RRFS$4F;<7RLe7it!QvLD55$m-$wd!a3HQ@yoWBVA8J^K^C8z4A?w9xKzIh z33(xEfON+%G`(Ho>+$`Gm3tjFOf%mxz`645)Suo}<9GCj4JT8-Y_D&sRCA)%re1y5xpTm2c9^T%8TxJN*K)}-1D`MNUbKZl z;f%2wDBQZ6_8n>*iRoOzYkowox#$`?;hJA|#_+f}nQ^2YCfR&0nae)nLUwUeyI}Ql#K$-=1E*b1l zjommt>&(8w#02T#3*KJC_bV>xQFq@nmQyzVT6|;Otz8R8d&@Rv4Q|_Vd2RW`3S_N! z7Y+aA-ho}BVJz^dud2qE>Rjeoxx_c%N~qE+RK6)Hbsdoz~5!-&e<6tkKW)7&vb>FKWc z^!e#nW{z%xTrT!-kpei;;uBqog?aE40iqTlVEQK3!bA&ro(&#MIfMZU-A!(6bNJ>y zWA5s0f!d+&$)){`_RgC2{;7={fBpMMp8>q_>1)e3FF!l>3zgoE@tJhN1vzI`Vs~@Z zkgK$6^bFAFFCf%)&?wIA-m^QSD>*go(%HmPkG+0ug)*S8b1C)uyFHm{$RstPC~hwb zLUZmEt__DE`JgW#HUmx&yi52@#?-;5ppIE7^UZ>dm zcm3s_y87YJYP)S$o`3$eu7&OTn#)BGd_&o;&m#r+1o3`HLk+I51$MKrGVC!sjj9mS zW;w+8;bv5~#yT^2q)BXpP9ychBvfueC3mu~(m~{*1#udDg?tY?!Jt?T+h@N&`z=1a zKK|D}?uYoaDNIe}4VT)QiZB-Bv4AhLpjIU(!YJnmZoIf@8_&&o5QT}sttWlbc_wL= z<3)azGc8cOC3zP$07?giuXYtPP&i(k<=IkaW3ZXB_Io~#>GGqF>vH}FO^8v!0Y`R93k$a>u@+oPx!(lM9M$ z8H<~O^aK~82M{~}PaZTYxGsU@A(ZX#4snSfS$+y-)>Bg4Zb2z!DXj7q1~?|?sxnvBG!!!Uo{uBB!(ba4FN*TE#pCTA3l?>5DQ-=D>1}oGz~tpy zHeSA>f0J^kwyp-`sHv?LPj#GvB3R)ZYin7tEhrI?!nE zs`mF!jYJYA>7Q?_s^j!EMRD%oKNicQ+U4nc{evqMcv4a(_M z0MRTrk|7)?!4MHLDk!2vdHbUAcK^b~U17FZ(szKx)Pb%AD+e|ymq%lc?M2n={L9^6 zKL7ly-4p(GRT_(Eg>iR*MG*7`elH|0`7Dm7x`biFL&S@CiY+iY8Gyr)EyhLg zc(bO$YB`UV`4`s}=clK-O~8@lLlotX;H0&&zrqGa=d4B8PGS*@5OJbrXQ!oQ&&!ro zN^sMuDC8m~IcZsGS;!3X;yg{ARw4=(@2HcLIbAw7xa8rGqHOp_FotI8fg8pag(hrB z=KKrIEb`0MOZOIP6A#scnm?NY_jl{IkuV|TI;!6RAJ@o zNPzwYCQ0LpL5SjW7r0UEP3MuM8pr^a_YGktsWX}Ns?j)>mEUl};?(1kMc!5wGbhFF zEbrUQ9HNzcJEHN(TZt*b(r*K!l0!7Y+#Di|mqz@9;8u{vWCa>LO4BkLygnP4A0)u~ zbkfKvcoSec1fa^vPl0ud(DEzK%Q-x$&B4fXKn=K_yuKYg39SO$&H5y=vV(=-?3Ihd zvoKsAnnf#J=ePSRb5Rp8)?(qrX*McXU@@?89FkzeQd^|>W~-N8NY`ONzDo|fEKQB9z@jmo*jhka#b3@vw4%t5a zN*SV5?zH88OHrnxCaUf!9@xlNihJ~&RGkCfOp7~uUd62J)Si(r9c6_Q&OvZto2>FL z&y08A#6x5qDk&Hlj0X`~CJVDRTs_zW!PF8UCfuVIB&<_94CQ%C2?Qa_OKEdT!z<5IVx63{8Z+CVmWZ| zFLpVHh8EwrzyQ9IuMQk0hLZ}Y0 z1NkCAsNqm#mMkd3#tY?KO-`rV$)_@3-T)bk@}8RI(IG95C;2klq&f&XJ}?)MlQ5$b z60r{4H&rC>NgJdT2+>9XQ1f6P5FZv6A23F0BMEi_p~>OYx@9U#FML1D&`eXUEwT(J zs=={E5~9Ve;WIOAxj9^PGiZ}M{>kAj#DT&{=Nxt*%~O90G^gC_+8$AGKs+7Q7&*Gh zbjg}|_wIk7tG?tp!((inI@DUw)*CWUEskQ0TsdeB{8J?LbNL=lNr6R@OA#bdujuvL z+gj@6np=WvUK_GTe*ATB(cXoz*=)eU6r%aZSbbda*cck@BDjp9u7b;VVjk!_$(~M* z5r9P54J67|KvDXt{|AhqnJ8y+!e0ZmDGy3c2wEz^2~lm7{)NWRgjwO4lVJteD6LC7 zBbY%-XQ&R$4CS;~T@k zaIAbMIx<>Z#wde<-f0y^8M}D=o{)DlcPA=B9|7U7bwwOcg5oH15D4-G>B1Ei6^knt zFG6Jv##8~?De9s?Q^f_mywvT^2f{3(%4NE+W*+4Xm&nlZf`~91Sw=yVM`0_4mM|Lj zgiL2SV`Ct`yt|{St|Q`H+!U;P5~xf05p$!uN6Q{fN%P9GDUd^#hnSC#%!|u&a)M{( zi{ZdhDV%PXr{~rcwH1k4(Uh4232^}50uP#@3Vy|Jt*$6aPKuEL5zKs*IAzT?19W~H zfH_Py!5B5bJuz;#YdPF8D6ta>ii$WVlt2Z?a!#B6CJBcP2gh+=gs=w|N|QzEkWBrO zVy$!qimC^T7DCw9gjI`h^sco2MHI1^PGhAn@LbAsrzn%V*M{mi%mekx=?ixkIq5!4mObE!}Oa^#YS%VIiqrjn!%oB?pF)pDO5d~$nY&-6I2zx?+KsiA< zW2GB5#Q1ovf`Nu0=3jrHVD9X6feD!yFyA=!`4Gr6GP% zZx#!iI>q)wtq(^A#@S6_q6G7^{s^jAU?BeTU7(7}@a@beWrQ0vGPJO<5SW58Gypy{ znGCDo+~JyYcE+W3fJ+<>w*z-@AFQlKVKd4Ln$3b;b>g=s{2nU`{aMSbpa)y3aVM*Lzoc;mDOv5~@o za4u_@EPB1_9iWOGwz&Cp2T;_TtFq%vCe8zuCm)0o>M?;$?5If%Jrb#(s8k^#I?p4ECx=i4ZV*fU%LUQk0*Y8!e5-07VAixp9X&!@H?P; zN&pWwTO#Iz>kvCqV^h7r+M0g5E5OMBBSoP`#qbG$sF0u^X%0>^To=6b1#I!#s+VR> zeJ$%nfy7g9>g;qHU2z-tiz~u=7^(#`RZ38| z(2L$~UEwSKykxHnHcewM?L4eR@Lh+xC%oEeABgqm#dML2}S zAJaaH!lnRfo8y}(ZgDd2K~nQjak3EryY2RvH87Z_#mFRsl=gX8PoQhV>X{Yq#$kk# zPZ6MDI-WKxUeiuuc$WEQThpfKaWp!Lww7J3!Dy=+9^1AyVN=`q!AxJDJG^GMpOaGC zbk5$vtjw(JnAMJjy*&%wh#S?=vn6)+;&EGedyHXy6N|cv0YsdUoto}#8d=nNRafy-x>!a`+v~^FLpawW8z|DX*Y_Aqw{9> zLorqqOq_EZxM6&(9xxG@0~L5iFpoimfH~K|8k6Rf41ki0BSWaj2Ec2aBCL=Ud-GjB zPE|$qRauoS(m;rX*F4zLAc+5bT)u!0K`YT}c!NvLj=*RdI7L~o1d6AX~Z>QyZvt&lC~rd7!Q#n}$Ai(Kw-2CNnx2S6Y==lFQnJHXjw z32BGNdtbx7KGFNK!UhjQM$=3m10w8ZzOG$tI0R?CIh*OKa9TX9xPsds_{@r8mNCiAQt+Emmg|P zjX;3ju`ogaX!~5{N;YO78Fcymc`2^=7^6TbVQgNr!HCNr7@Xr6Q1}jE_K3B`LAe^$ zh1e5_TU&{x#0|@EdA!S&CkqNE@+no9s~_s7gk)5+lj#GVJhRE{iLky2Z%g;~p1{-M z*se8~WoLI~czbW|9ayx)(_+7E&#gG!UlMoP)BSg|;q*UsF|EbPDIJ+DDGd$vIi|p0 zgJw0&&J9pAOd$?l>2vSO&PY^)1;f3pqnM=`pEK%F!V|g+9Cz${kH{uZ_oGrc9DG(O zd-NA%l-0JV&toZ_PG_N0dbC}+dGQHuAh6172D^LNPl-a;{73!H3LoY4?W_v+@&yb( zSH7>@#a_w-CAWu`PIpzhl45^ys8yn?0I_#*c;WOS(0|e=T|@`(&dE$kGz4c|h&d~O ztivt|&YJUVqD;FY^ki`QT5uTxrlP%|&AZ5n>8FHz4`77h94_O zrE9a#^F(;&ntxMG%)UdP`TOtx)LuJt>V^mOskhM$0Jf|t&CGB`Tpe`hCi^Ju?ApW? zg0I(%9wU96sKJZv2`xh29dxu9zB(utg|7~?-X{fnnTx^C`8qD+Kwo4eR}GdI<$w?l zz+9nOFs5@w!SU_XGk7Iec~3Hn^M3IS^=namoTnGx7^0!!SGuFqWlKJa%V`uR=Ym-T zwSu57IEs8+&APNG2S7p&yDUV<%2#<<+~UTHFbTfJOHYI*ssZ@MSJjx{RkapZRTWYE zkz!iNE9-GyLj*FMO}=#CkZ?R0&Pi7>+xw-2oMG<=z^%DZGx~?ELNmywHckCG<*xYs zi-O>`-4STG<7e7G6{47^5Dq9q{mV31+kyM?s+#+B2;2>kHV#eLJOx^*(2NRbrGFwb z&5UC$(jyF$4-8&5m>@YU0;WxDJiFwz&}H7?0J#brTBrj`U_g98HH?k1T9B5*F5x)c zC2aJ;KN=Jx8qDm>S&E+oe)h1#@vw5cbOy&84u|IjmvEd#eNo>^>%TU7Qhy-DSg;m+%kl5a_Cg5!HJ$yP; zRzu|5IzYHV;mf%G`t~_qM|5=XyD=y^8Usldh8Wkb^SV0$rS%Mpic%kM&lDgLnr*tH>BOTH+9Y==KXZxjp_K+>^VMA%8PdeUsS$Hj$AZsb? znf{B#_*;Eh?$^B11+Ivdk&I@Dl`E5iO?m#2(jrfm*%*}Y|Ig=I^m7pM9rsaRs@#H5 zRpS$qKra1UV^d-_g8#-}-XV-0*sLu+#sl3g(UBmk_ zTE-KW%)3wXr%7G2b7ex6Z=lVY+w5g~hCKG}?;akGjUbD>ml!SsS>mW!wE1l{m8j+A z0H$8pY-Gg+5P9~(Y=C})(_3aP!Uz+k?Bz_MbKlhZl!xP&wxh%_ zKxJQ>ffKanQYGvm6VGjgY;EfWlXwe<=NvY}%p_7uz?gD({I&>qPib-)KGho5(%FRr^7uz* z*jZMLMi53jcDPQg5ixs3bm3h&nVK1y5k8Ap&%uF<1TDnv!K^{sV3!DITMR8Ky%g)MWfI&BWGTNPm&n2VgNe{{aP1T#O z@F|O*xHE9o&GjX3E6?p(`^{DDx9z{xKiMAK`XjGj-ke@m{;3O_046_mbjlj|kFZ!# z4?MlUr2IV1ZN6Li6y|P2$mSCN!fL1n8Gu2sAdJO;Dh&qA26>xC&f7%lKC}`JXR!eO zW-GFub?*X)F4|VZnumBSElI7&LX&{D zoQbpzqs7vT2yE4$K)pgziz1U+zya)20nh+w0XSFGeO--+Y`0|y@pr&Quk)3{`jC?a z&?Otky3CrTp6MODs~vB;9|T^isjTliaK3H1-LW^Zs6DN!;XpzCvQ_)m*5nq{o%@3& zg9FXK42&sX{R{y4$}?QM#;en_y=f`6R(D2aW&veUfBDxn zh4~djOT>a*lNXIA*(>wiS7+66=JO&goit{j66}4Fv)Fv$~l6BBVfKVqz<*4ZuQOS)O0O z2!Ws*OM&ThWBmXEAwnX;DH613%-%Z6(yM;sOQ~ucT(Arz3$U_zl?Y#~(YFw2@D0D^@K(P~@+ z#af2ALagqtF~Kx%hH>@zWc@`f#%!wR!hZBo;6-0iQ_t>8GbS<&vG(%$`JVD( z_|oDHT?^{UGmA~e;xt3iZL4;zFG|TQz34^=u$JcnL&{eUVMCWDC!V%$d|vxNveVF% zkyYL3EfNi)x82v4o{*GLzG7f}vuVh5#p$PZmFnPWydYYFL>JdNXsD{pPfLw6;(EzU z3@EYZv?(cr$52?emL*-1x}Tdkqt1%c#z)m#NQ-xCCqn@**M5JiGP8(__b zWKiySvh5f|cyYad@7YPq&E~TC&HY1l=}9hUQue(32BUCaIKKSA+UnxknnO1(=^JQ% zF3_)BzMpB5>OOy6XR|x2((kKjx6U)CCRddgiv25k7Oij$J3hB>cSngX)wQrw)^hBK z!7ZmTPV^h-X>IU%O(?bo)0)!|hnO0UxYctKz>|PIBo$yjEZ<_-5fuwZlq?-xQIVSy z=IE?5q=p=q&gy0b*Zt%XS7vft97;dcy_J%m8sjq5cUCnv8VcB# zxw1QTb<@VKn#qaXyO*r%s$F}aaWw0rm&4JlJKAe)PSv4ySyP-P&RSzzLP>6$qq)OZ zGf(^hioyNe?WNW8=WkiMWP68yL2j$89ueq+anh?^3jbaWJVcr?_8@Q<5(nW!60`~! z0PLAD8f6l{%RJa#kQZ#s1+q_j;rk7Ct(aSutR;XC7i6pb4QUjPzAu0v>8q-=l=lE4^1 znXsY?hPl%GiWnmSYLS#R{M6XQ5qDxffMAe3qR17{N~dzbkqOCLNeQOB_@VkL_m;MG zL)8V_Gt08F%G9+@C1w4#wncqw;wSd-zu+6k9#$7ooBA|1Rtm;~>5CN@0^q^%=TT3d z0?)M~XPJQg(dJ1@&(BX!Q%|ccD5&+|^=~PEr!T0_AjKyeQ8{M71OQ57W-s~NOMIcE zmcF?rM(5Y&dkQ^X|3Hky(1*-S3fw~Ty!{@p_Qlq;qV)8lH1+J#qPC<4`Qe@J z^mKPZTADmdA5yZgN-c2z-hWq3b-XkT^D_B)9Z;Pdg^0Agl&x3{3#1XC<|xkLl;Ci7 zhkZSGN12oygC%#Pp#CPLzU8%Bu}R@O%4 z0Oj}u+|?3lt7Tm;u5r#AGr1v25}**g>eHNowE*T}HAPoP<)1=vYRSGtug*W>rn|Dr z^0Sr<46px6!{oBKzH)C(e$JAPrEB|^1->EreCvj)3bG3d>uV2RD)~!k{-VgtOwAES zb+lvtMDdQl7u8l2WEKdsI@HqD*E7~K#GL19D(S2lyFueWa zbZq;nlBYc$<%Mww4(!~K@~Vo;#N?&RmX(9cJ+%d3bROrhdL`x2ckaq&9~Aa48v(pH zbzl^SBY^!K1~~S_DkFow44S~E7F1WYSX`E15>(ZkPcs*24-dkV6n+oawcrO3Zvh!# zLXRfP`k9{-j5iXSm!s3djr`4q+}c*VF_H+R$TNgF zHU+%!aXB_E6&X!=X?gmwGMi(0+s?tTp#vtwuiwtrh88+$`hx5#2RW!-LAmrJ$)|T^ zNuEuYKP7_E9L&4=V=?cvr*VIDNv@Yk<}PIZA+!-J!oCnOwdB&JVu8ES#II z6K75qj-Zj`;6di#z2PJH=fgQ`rZaGmKr7bi>o)=ZWfvy0ToT-|VBiQ&jLw0PoU8dU zIXq5hM0c1G^Srgk=R-MqVVCl6YWdd>J=S9!Ye(pCR=IDdJ_nr%hoL-d=o*h?LOBu4 zVUuzp)QJmlhe)6ze*uzlaO`5>G6o461a2D&pW*P)AfGJHoyVGjsAFv<8Q=tviw0fH z2R7xW)(vLw*s?IEAxpUP`CwOz7n({dZ#=uEnE#efBCtU@i&F5t40>M+7PqGer4J~V zaP{`49|2|tCpdCohYK>%4Wp%!0AYyJdW{hh0i!^^2|MI7wO{c$uKi{ZA)PcCekcyQhwys@q8|!9G~@Ri z@jc_JoEy%6UO36>D z?N*D@D_i3x5(G?8^>)kIHI{{@5-i^aXoIQhJrJQDnmhsyv{{WoA)3u&!r7sV!VOR; zFm#hCEH<+-aibi1UV|>+|-t*rZ6s78sCgb}eEdFZbI$c`&Vk=Pf48l_!zMdk?5Utgm3Xn7uX5 zMQ8{k$+}EI6#!JxpXAA!)=z%{8wIlsKA~{}$5#fQRQQ;;VQurEnDA`FjL9p?d^vO8 zl1CqM+PZ7XGXWG(RMBjhKV$AGpom(RTH4@R5?_>8TVe>$-!ck&k(_*{l$q7^m>=QN zMR~b#v1Y!+FzQt<4h`@k6cym*@W$GJy#_MCsyN9qUg|$=d-jq*kQeeU_-W(uo@SyJ z^2G5hI0DE!$LZW(FzZRAAt{{C79I|RSWfsIOuGh;*X^`IL6VyTBD*j#LTdmbp4{M3 z30W-#_oiuv(+#Vji8z;Q7W2-q}E&DNldfMr0lVM(54C@S*?H==<#=@ zrYM$PKtCW-me_lW_&40@+5r>S0DJm!f=qI`(7=5(H~ zd+cztzQeP^T4;nOU`8!nvl*9XUFH|fdJ0=Ze~2Yplt5xl|6Mc0mMT#WaheFP*N$;d-o2+_u|Ri;Rv7$tZ;)o3 zKEP*2IdZ=^X_@Db84;E{w2Onpn?^D|KWY%wZFb-i{IT9-mh>_C?EEp<-7RduKZ%d} zt7pB1rLu9gj_7YQ@sYy7I4{#yK!!x<`F~-tGxrMUMm$fRD8?aESIbK=wx*ARR4NAB z3RYGQ6elKD?Cua|oI`^da*L}s>$a5$2F^XTg&A0B8h%0F>VZ3yKTwPM0W5Z@RPHaq zK@8oD6pp?I$nSc#gSx~Ju%=+fw%aW5d9ZQKjB`arQE{J^K<7&^6>7FmHVb+$U2@9m z`l`zM$-S55q@?ENrl#a5e^|VrxVE-SiYaS}OZ zm(7ZB+}9>oRv~uTV7O9wy3P%8l1;Zl;%s#4O@qn zZMQD8H2F#!D~jssVyi+xr0xJeNJNDpT{UUrPOzFXhV#GZ1u;N#b%5Ycg;RxQ3@36B5EV&W z;s~D7#;OWr5a%YGsLBx=JVK-o(cY{%p2JpM`0O5e&sS9DTe{LZ=_oI2>#nQKDd}0T zZt1B@N_Ll3RC!^CaxLEB??!o}z=cXbmp3X-ju~%GPmWK|%x@?xt5e+lEnQ0*C$mZl zvobSX#?_-k)g|-8p#}+ZT{`L4N9qw{VU)3Ej6PV)(FRx;L_!09kon65&NEG087owx zt&H|%UxhRn)aSx_Xq7hcE=MYSyqEn=a8(l&`= zuPV_4AXq|~#Yfm4g=~t73&J#lB@}^SiOW8$MFs;35r9#$!DK~93P$u28y2-kVP`by53$~4fJrI% zd=8#RNtnnk=YE)NMN|E%QT{kA)mne$*N>_D?gr<2_rEL{e-J=`)b%!UP8vg0-$>Grr1A_}5W03W( zy2_6HlBowpS$=jw>PSj|PepI+jX6c(xpj*r$Pj&Q}V< zy3?Rx85vbJ#DHc7UIr9zmPZ_}ZP;4KO2-kgN;~BcDpVVf;+_a#@#M&i4o_aNxF^)j zh$$T}w1aocH=e8URJJ$I>ny0RsF`2h;m`GtZQEFpTU>tLclx>pnhynTQra&T*NvsP zN(<75?Fm^!X+_?YetYs@!@R}TLEGuuRYwfPBOKMIT?)Ll z^;x;OEBMmD>ci<6LJ|)Fgk&4-%nLm%MSzxLHM@_ht#Lca;w3*cxHIhXzI{J^odY8xX5 zP+Kvm4Pa&%>Z&|4Zw5FvC9H)1m3A{k|Wru9 z^WUW&#^*QmYaB4JP@ldb`IGs2g}7X-3VbiH^9=d*J@V@txp)rj7yXNZUmyHrzFsZ9 zBX$R_4Gfv&3>2Kd>y)*-cAYA}zNuH6d*9;V-0%2gzTO~S z5nm1*3>YtvU*9LczPU&Hdhe3p*I)f)zTT|FimwLtOuce(@ayX)HqZLHG3}H2daF_) zZVOCK9sQL2`hN8=zP@F?Hus*T`rM5ppUl_Wm0|I4V07xn!}99~wNtBxy5#_%U4Z;`bzK?- zx|eO#jy>aFKcNBiDtCxC1Nl?)M&`=_oS`0Gzie}T9p~&o>~u}&12AQNLIW63ek=YR za8G59^~eF7DF;wj9~{7Pod--~pU?n?mH#N#K-@=fjrYm{;B;L-v8BGgL!&_F@*o8+ z`h*5Bs(KXHRN$j$7WG9ApusgY%NCI;l`hf{9D zvaJnGZ8Hb35Cb@A#bcW4HC^$Tu6&9W>i3kPsfRx5Up^$iKmGIV4{Jiea@i;I_3egB zl&hw;et6c#1(N*g;Y~}nHnlcslW#eSOFoKXDkI9{aBLLNp1boec7^yqs$h=9=V= zgK;i6S2okfI!ruQv)GEPFuvPzIF1(1lfV&v+0!3Fzz!Zjl(Y6UJo5Tni>#pnifrL$ z&~KMB)*)AP+FZ4eYhJ!&%vdu!>(?@-K%Llc^_7mUTRJ}6Q`9@LaeYyNw`AM4bvLXV z4^9@#n4e!awN=>`TUZsbyl_q6y7&U^frE(ur%)pe&|&=P_L!aWU$p+R*k)8xJoVYX4ZUw;9UZVI{U_V%l_IE_D<6G`~!D_K+ zcsJo6M2YQayU`vbO2QbEV46x!MZ-9g-y%vGLwg3rRq)N!4~WuG?KkanXy`BfYP9!> zG8UozfGE?6wi4}OqAX+uW+5Cj>l~u&B%&PjopXpNcRNuYsG0X;A`kk_$C&b;$EL+t z3*I2|qA;%aRahS}roz7v72Qu%ypO2Fj&>V-4h3l6Li>oQ>@eDkz%4}dd-+{N75II{ zzlkbeC#u3YWW%_s=Mf5Npy4~dFQQ={wSOk6>mjN~zxCG=HGpmn9cTxL8hg<$K>Hg} z6X?|RGot3DXjc%m;F*^1pkZvS%h0||G!Ju|cQ#QQ-feFn@?S~RaUoGB=-i3*>S{v! zh^YIgMDy`{57x2gO`=`|JN3Ru)VGAFAK&lCH~PO#G=M)3fNlft6AeB7A^I}reHFfQ z)ssY5KTPzMpA%gJ-oEx)qU%7PuVS8G1`U%LiA1W)D4wH zH-hdrf=_P3+THXf(YH<^x*6ZQ8Sj640UGwmcWx*8?&)Y4=l4K^@7;#>4$&=jXc*ru zc>numH2m)Spy{n+Xg3qxhVS2YHQLKWKj?+<>LV-m{hH-gk-a zdz6 zh<*Y7{KbbvkKy-^gGV3#I?)sN5j}Y}(NooEpxM)y>oZ0)eCt`z`q=={FRwzwcYbvd z(R1LZUxSv<&|Nl9M=r@?_Z$Yo$ZX%=_qRdkcb+18_s2y4#CpHyLi-KT`|U*k!dPSjeg5?@ z+6P1*fWJRDfQD~>@DHMYFGs_;{{!Cm&t|k|i9YnAVZElZ(Kexd5A6-2WA!+X0JkGr z(0&Fl!&Rs+un9>)k06Au1I7CM$U0bwFfl7yfQ0oyv=0!WlaGev7~4-s*!QCS9+0|l z`Np8H7zB;R{1KpoUm_8YK3py|{G9_96Z=RcAp<(O5e?r;K^jo%*(A~shn5C~GJTi? z&H$0|ZxWebBLTTDvgeV=QP7}o=lp?0?$spn@GVag+IL9gkXlbC-ciJm?Zy?D0wUJ`u^(cU4^KSg5T4ibZxAP;0SiIGnul);DgPZDD< zkXYbEdxOM6tjVHUw4)>zBXDuaVG>I_(B37n>=qIePmx#-nyjcpyNSd~%xTrvNvy`4 zC)3bCk2Pgzza+7C0oo%Z)^(#{Z0iq@*Z^8=e4WIm^GIwSM(#{HiES9`4y?&3=x;aH zY%hYJ_r;Rfk9i%y7*6+-ICGH1S(y7dzaw!z#(u$jBrf_Ki9^XGE&=^6{XL1x@x9Mt zJwJ!CS>=RdAMB*!;$+de)T=zDKuYtF|{uYUEK1AZi>q&g8g~YcLNPKq} ziCacV+*(iKb~}kXK<7K}CvkT?i6iLmo)HrFUPI!(=Se&O+Wqi85^#f80aj zPw3~*822kzl6dvoB>wUMiNAiC#NXZ}@jAxy#!eFdz%y@xm)_b<;%%(iJExO)cap?E zL8JFTpZ6D%_`plzKj{C%4iX>XxheD&_z)Me7fGRaND(iQqWl0cve&@3_774_-$Y{Y z8^8{mPm1j`q}abiisJzQNS#Sa>=Y?ZH`;$liNB5%*Gf{{*=VnklK3ns$)6=9^$Vn= z|CE%>7f8uQ+*Qu`q~yk;q0hX>Ny*<$N`Z?MFM>Y2cau`MiYGTZd5@G@yjzEU8W6MI_0m6T1mLTtu2p`R$*tI#li z@V~P298yj}^4+ehN!k58DSPnmr{bA?XOXfW<2`T>DW@GF<@6tsa>o0lob^>w&iNxL z=Uqt3K@|;uz5wfTVIL_MVO$sCnTxSLhpr{%lI5g)3g5pJzrSn^DTkMla`^-)pT3@y z&tUAI#hQN3L(1n(Xm62nCI0-yFOu>lJbx9&`W3u$&7}w@`Zg)oVUAzhPs-QvZ{O%A z<(v4QXc#~DGyyh%EQl)@{?Ogc_aqy z5mJucNXpM^NO@Exr}q&%HV%CnfquQ0w}Zy@D)jN><3 zNqM1(l;434FJZoaz*_$CdQ$$3alQ(A{dJU-zyFMse}G1BK0(SmnCH6zQr`O#DgOeW ze$Yb7zd`R0uOnsZOj79!q$;JP8h%Ww@oZ8}E0AMXM<^vos_oCD#>^u%?stH?T0*Mp zaZ=qMk(!uGYLcJSWP}c;e2UbxDpJ$GNNUCrQnRikH3zs`x${ZQ+e@manbiD$ky`LD zsfC303aLdmkXn2TsU=5AExnx7vR{!}eiNw`c)t?;Q~?~J+DEF-OKKf{HsIeI-y^lz zL~2V0sjW4n&cpLfpVk4lg8i zWE-hteWZ@BC3V3nQlZDIi~31jJVfe}D@a|2c})Nne)$<_?~uCUFxoFjU73n@6{)N3 zXm^l0`9o6Ipsig;>N0+ny(N`{zjAaXYCy zLDOBJ^R5p_-F-8udoY&0p#P~qA$9)%8t8l4rKFy|0qrlOp0ODXKhMO^GhZY1EX?7o zzms}4pxw^?8>#1PL3@?dbMgGSe|JpeWh%8)NADf`K&-~khbU9rcjFzIdMUl|1sIk6I-j zSf!6qtdd3*PzbZ>Kh(_c;`uu62S2OCQSzx@rF!K`%2wu6zp@I?UW1rsr7XptU#5O_1NoJk@%x|Q_g?&b3O^h1(+VuBe^QciIrSp@CR@D&{q7@= zvWAkCKB^b^hPdI_3;1akzoufPoYKStbcT2rbMK*EjK5gvMvK9mM)18#{Cgo#)!zdx z-Z}Ow^v!?nSKDYl|2yWv&(G&~#6lE4|0Xqv1LVT*+A#;Wnn7;yI>Hq`!1ta2EmuNs zeV2ytGhW$Dc@(7mOv#XyRX3*Y8u2Tnk>0VB@vOL7x?% zH|QR%sa4<&UJI;4WCQ;^%k;<3pQAmkIH@4C4!joATb<&g8o3s{9(v=o;5Cy!F>kr{ z!Jk)vr{Bh!gAe8RgFl%kZ$bY&U*->{36E{ApUk(+JNi%1>UE6wPx$#Re!d18_VGL< zKZB>3r}^*NPwX}P9nbUwS1M1`V11a^ncrsqWP0H#3WJR4&3pYMIm)7U!yGb7RnNDf@a)~9D7aq(XrRmVKh7bTpe!w zoceve#p3sw_+1CuL9``k7oeSob~)M<+PBc(`}o;_=0K}J`y1Lg+NG2x|9+1COcna` z;@@|m)j>=3`(7ua3iSa3yqNQ-4P2e{1cghhMlis@VZ;;c0 z=h1Lq4je_h7i|OD0G|1&h&i?wKbL_H(pk* z_$L72fVHD1j~x?$b3ltn6G{?!6%Un*`)HXON2P}M@n=6};H>b7l4FO}&x2o=q5nMa zP!F{#t$6o8c;{!x!i|GW>w=7q#oy0{yjy$hWsE_SW0xO$TA0bNnjyP8FwVAP|5Dac z3ClR_rz*5MrJc$luga7Jypx3X5q|&T|84Kwh?@iuLqLd# zh=`C23FJb^hL`}F1PFpcfDjO=T1u%RRixHhZ?%+KORcpFDk7p%OR1&Ssy|EdhJe

sRx1aa&&zpSaoHH|L&YZbE&(7sM$wRse^-@b6kHlRHO`EHm zz*mBQ1U?1)Eba?!u8t5!AE7L^&DBq!X*WfBy%@X_#~Yh!@@Q%EcW~2iJL#Kqz~6?K zG`0_%hCb=&6C*569DPOo47x@7Lb9*(lxEdU?t@{>nlK)oH9s^4s zmGaRK^-YyHn&cjKbjbMpe!Q}}0s;yfYH>ct{=Ogmr z4W8z?dC9i}1F>M}?j2M18zQo~`EN=r_Ta;b>=r9)aHAuj2N? zOJ6Xz;V7>;LL6gW;x+kN`40Y_IO;yo7e_q?endV$#L?~naA0=wkhul^$8ewG_9fq! z^nsJ1KLk@wapnUYx&|0Ofi<`~+(_I~+>gmq`dLZxZ-H*$JX{Uo?O@6%eKK$!csOnX z^mJtX2D}cO1WO)L@5Bc#!HL|p=vW3`4rV;qx}~iGw<2R17&DFLMQ{lJ_rcVi`7Z80 z_;1AjZD`scNV`Z~8OB%OBJhJ?sS9|6lp{!({;qRIfDd;D9L6_!GvBYluEASKy?6H{hpULbO+q{%U$7 zr#~)^Baa|;Zs!AO(~F5mPqPhrF!)B?)6h?PPTGw65@$w$>6^jzt_!>eo`lQ8okCnU z*9GqeFMuEYZJlf4WsFlMTVIcYx8M%Jw~#pM&HNUc`5_?nK86jwU$WBk8s8Y=7dFoe zE%hb3$vkAo0DaFqMcN_Y$8ndF_86Et5Z%ojoRp~;EV>`XNnf}G8Pu`lZE~S$>mXw# zS!z*)SbY{b2f|Mxr(j}kWo`gcx-jW5N2J!u%Hnz9FI zLtVf--1*?C_-_SEzIEiwcsJj|(OxocWxfb@2fvHkf!jp*oj55wV?3}9M?W#kaeD}> z1z!dpM|dBww83MzOq{eKJTi|+zc-H%e-`*7!la#lk9!GS7U5c<4UTkr9&QFa&oTFB ziM5qvI_@dlkHzVrgeQwT-0?Eub9s-?@!o^%yO6vOiG#NtcLi=St^qdYH)&Q5o0jO)x9e^2{Xu|C-Zr+LiV*eR-ea7kA+F&)G`}rynmnwmQ7l{SBV_+08=4 zEBvbK$vbk8U*>ChUt+t{#r(!AQ0(sTo6rASndXxa6Kf|-c6PEqqTM_Kr|X;;+jGLB zKGD>)6LTbmh%mSwKr{jecw=XS&sph&Fb>KVx^s<6QzxlD>U5Q>2CLziARMd8RHd4( zTGZugiMmGJto!I4`q%n5`ZcpN!pc*mTVzn=?8teMlE}nJWu!WCNn}x^EtVPU5ySFS zEGITFHY_$eRvgr$7bqU9cTh(&(>4iSK(Ptm}s7Nrb*pY-|MV}p*JactnR z0mu3u%RQETEOzYlW2YVKdF)(0(+pn*G{l?e7_Ik_fRj-%7^5<9H3T^pf@3D3D{}3dc z{8+-7T3^x-i5>8Eh!YLPKxQe(`#l5TSM8ERpZC#yN!m%yr%xq|w z-Q18+gBu!h6Haw~OGCqugvpPU#1er4&6FirR9&A4<`yPGxrLM*)}|qeKz=SIiOt>| zoLLx?7%5{PS7(9zZY!CUFnQTT7RA=a){?>IVZi}Z%ar=2>ORdi4fVMV*$uJ8xOhEr zeWWtH{D&lh`H8fm!CM&dwr)dsa|?56quj#ggq}Gkp=O~)BA7QMk(M75Ril(8;LL;t zWydu&2uoA3RW+QyB`xX{l@#V>`>hqpKe6@FT`6iXDil%frdY|^+-7M>TfiQHkOfGnp0tD+P+h-Sx;~XvxR&-M+pN6oT#}_|dV|DE5(baNHc*mM^e-j! z#HRWe4Y=8HPRgZ}~*EVhL9vYmuesG^0s;LKMJ8AHc#L4-amEfM#v*1(mHygpd@;3(rpPIipD7bh2 z=8)h%`J2-O_s!oN7JOR%=7``k^Qi^5-V>oFYB)DGG@&k*0Wu_!*D126AGz3#9NZ~# zpdZ=hM)u2h5}AYlgYunD`TC((jPeQ2rhI~PD4*b5$|tx#_8In)6c5jLm(Y8&}7n;F|eCex0^Ake`Cx$Qz&td?S(o?^580I#Q%9T0v z-*V6mha`rjns#$EtwefS;;g*QL3MITJ@cQm;_yz@^RIXc@?+;%&Cf=fE2re2CkN)7 zFV$AUot_Wbr&00P+)G@@e26)bJ=~te%N(umzYz2Uxbv=}uuH zQZ%?_?aiUhyzR>G)9mP$8+Ngnjo>6!~?7nK%Q$dgLdRaXBnNU3*MO$!GT^~ zY~_@-*BB40XmqMT~3%-`ZT#Sm2xN{Gq% zTa*o{hOi-1gr|h48sQNlE<8fi3Xc#|^V!63#zWOXDN9|H{~*7>B&;6F4QmiSC1KNq z&r;Kc&r&ml&r%mlo<*=-B6$kYD0vFeBzX$aEIbn+W(toGvxG;8*}@}4i`Ae(>Lt_y>Ugx@fUVY-7)!)Lm%I>ikyN^{CC1@f z%(E6!c-mZ2c$Qcmi4dN45})r&U21(c#WI(a6j!*UurEi>`L4(-T~ZiUxTG+A1>P~f zysNCw%DdVnh5Z_r6!x!@a*Qi)rArFK*IZH6CLFYoKtXXUMSNn!tnOA7n7q`bhD zcb!WL!y1**TaAJsY@a_-NnMVp

wX z|KhLNY1VW3a>QhFJ?k24oyhU`0u{#>;k&WJ=gi?h?!@&*7At^<3e)8z*?3PuGKm__)oJ(Wq9G^>TRy6MNXoC^v`#d_(i6^LfJA1wG5c{5g_2@LG zj{R0wPMEzZPG{J>BAhi?<AIMtk8|&WJ#cM|X9?>@&D>x;fFnB~FpE z&{^bM>9jfXoJ*a#PCKg|gPd8|QHpU$f0#4e838rXX?149(F~3`weT-;TA(J7dZ~?T zBTQ1x!#9V}ah6J@Y4=h{Ob7o^@>%FCAg?lyJLXg(S5hq{yaxJGsQKjEhBiadM>IMg zeQL>jGE^$%kP}kYk+RKMf}Dj`0_ zS;8}i6!Vcd(`s@KzL7{dk59OXoERL!(~Q3D@Xxg+a%*#$%}r9A&HoU5=i=BWC)E&S z#<;&CR2%RdqzPRLl=^pl%kd2-t;7@qrAFFq$%c?;j2de}`(_(|1yE8CaW1lOmWB1e z9R9z&zEYtvv|a+INNPu)W-D20p^bWoQ7*~tzt`Nm;K1#^@2veA#Ld+-+VRx5FhhzlhU3XYqf9{U2&;|G(G!YHhw!YU$0b$dWvz zr0vL(l1oo_>qXjs7XDVWm3|sS6B!xO+oZ zDNe?j^diyh#C%iQG}|_xXM4j;py+u8DMSyq4JSC`ohg=Xr+#9Dcdn}?ltsqownLr-yfVH>YEAGqx6oW>gW>69^>UY_gp=Q`s+=L}|~ zGo3t4qvbOmhEgV(KMEL0a&l}W<8Txscr@d83@56_Iu|l;jdu!}6*-YZ=}Q?e6S-Sf zPCZmQRn$l|^;tvzsCA~&au+%EPJ=TITmLhhi=9g_m)ztutAO)EXSMSU=W*v&=WU(^ z>zr>o-*bNA+@pfdTIXfw>#U0(;Y`(yoO4^_{LI^W{?@uKqwTIw&(`_A=@ z5E(rSXv}+TC zJ**-sU1g}K^SN`}N%H!asj^fTUjDkOZmK)0^F7qbtcaiD9CJQVz0|3yH|zC%)oGln z`y=b*r>mICRyitH^;ZL&L(UsYERYORXR>}iSmmoBtfHUgB%IA^80-55d@65*I)`=j zbJZwyp7W;jCoTq@ug0hgSoyzDjbpXFP!*|SRpLCRCa6+&1136eIe&KU#jHpbpsb)1( z%~G@3S(u|PRddxmR`f4d^VI^@^%tr|YO!i#$Dv&Btn^>0R;aJ2tJKx(LVQ)N zR9{o8)YsK&^$m5cx=yW8*Q>Sao0$8!QLR%qsrBkx>SpzAb&L9rx>bEw-KK6=cc?qn zUFv)4ZuNb&LH$5&R6kVrs2{0&)sNLC^%IPB{8Zhqex@E!KUWE7i}Rqf)p^9(X1jXK`H^!o zZy-N*ZgOsMzT-T~35lJ~FVy4e3H7AfseYlJQomHY)UVWT^=tJsraJbh->PTS@6@yE z_v$(Iym~?XmwHkCLG4w4RQuFR>SgtcdR4uq_N&*`0d-IvQg5g?F|zTN`m^F3ih5W5 zMZKrqSBKRH>aXfUbwvG59aVo%R! z3A$95>4|!hF4q;hk}J`Zb+w+NYjj-K>Z!U;U!?1GgPx|R>lylDeTi<=O}bgn)U)(# z-J<8{OZ8mMRaJetp05|^R=rR!(u;MQUZUIeQoT%Hp_l6`^$PtJeU-jiU!%XOSL(0v zEwiud)%qKJ3-CHVg(&Z(-_$qoKDtidq}S_j>6`Vp^)324`d0m2eVe{r-=Xis&gJ*? z-TM1_gZ_cusDG&M(Ld7n>L2S(`X~B6j7i?Ff5x}Rf36dHv)-Z~#0cfXdaHg!Z_|(J z?fNlxsvg%*=qL3~{R{n+{-xfff5qO_ul3XHU+vMq)z9eP>1Xxt^>g}p?7#gNZ@que zd-WgnKK+t@S-+xR)vxLO`gMIkAJm8R8~RQCC;gWGvwmB@quIL|a$ri23O$zUDO3&zx>zCfnqgT+`nSFaymQW{^44<>dZyL-rGu_NE7n@5=qiHhDW~P~CW}6l>$6RXWntA3j zbGeys7MNDE&@3{GO`BO_+Rak4%v@oXn=8!0Mt~S@0ubP$SYi5=Cx>;?$VXigT znKkBmgCPKOgSpYHGdG#_=3C}w^KEmB`Hs2OeAnD&ZZ~(BJI!6@d**KQeY3&*z-%-> zH20VvnS0HT%_j2`bD#OCx!?TEJYarq5@xg6VjeUPnTO3*^N87I9yQy|V`hhW+&p2P zG&{{N%v0uGpo;JTRd(3amGv;^ZS@V1IoO#~7VE)UzX#QaKnm?L-<|Xs8 zdBwbHUNig6>*jztXbuIcrdCwwqMEd&t@DNr8$Zm$#V#&9CvE(K=2>kEThp3d92!5f ztz}tDsM(^l@e40q*xGV=TC^i&m$qKo+_rSV{N|2L-V#@bb0)ZWq*ogw&kohPiP~MArg}Op zb#ZWN+q~9GgG&WwPVKBw=F-l-w5h4O^IBk@NmA=9!ttJJ-M|t=>50Ce7 zVP^B9g-hDo7A~6GvS8tCH?-)y%-PF|np}BIymo8b>+}0eKy{vBD zlIFHcn+<^h+<1tI5ED72zicYRQ~}Fs1XRFIFA+gRmJl?4B0-b=pve*>{N>|=fHIL- zDr9Myz^YOSC=#;B#!V7(k{j0`bZzbUkU$$$Tr8gAVmH1@($-ogo3>a;;s~`-)#9(V z{z4%OEmOADq7In}~tHE6qFSxpUT7I@VpEG0JKL<#k3N@UM^Zu9oAdza*!Q-6h_1?tFRh~hem47n7wf6%=s;rCSqDk z+d{Y|x3&OluULq%+PQ5lEksRNxU@~syk!y>pSPU2II~VGxMbd?bK8lmn%COWo!Xcw z6Vbfp_IV3im(07gmG&R+wtvF#@57q(uukkoBm{2Q6#~WAST)1 z2B_Lvsjyn{7Z*d)1dvr#FxE=6q$rk1AtbaKPqlaoAqs`4#5Le*a22>ZBH|(?9>*t6 zJQdP@qAN&LC8&Hk8PXddO9f04KWz_3P0OOWG9a&Pncuu*E0Nq%gunVMqv%u)4C~5JuPI z##2^;q^K}cQan;nJd_hiRzOM#q;Nz_p~%OU39l3hBqbu$7D$*H%Wc7zH!@)ecO$c{ z4KH%hBsY`^)y7s;xxub?d1I|j-B{b$kRsfQB&5zu>B+N`aCxJbzS?E?TClv430LZW zxe#reYDp7=S+`MG>0{?V##h32`r~ zk)paxjXXF+sm3_PWZD%%6!ysq8(k(# z<@G<0X!J?|3zQcZ7gb9eOGOCC)@*5`ZKBdfw`ocni``frX%qu*nOka0*|Nea0zt%B zfy|NO=TT>q(6PJ-Ti2!dEPqWZ*j9QeI@{ECN@Nt+!h&rX!B$35W0434S>b}+bVY7g zD017g2yS8XQca>;B6|{LBWL<7&n{HMFEg(MLHUI3X@uAugu@j!NtzO&lcXW7H2YS7 z*Y(-1ILYl^lUy}KsHBi~u_;{9UfCGdwrpU_Mn*-Vj9~Xs-{2}tfZJ#ceYZPV!ty}b z#NayVN-{0rM2?WQP)rf1Oo1(7lR?>JV4F;)51b?u(k5dnadWeTje~L}St1ogSD};y z+2VlR;#9dUQ|rzNAXlsq?z9b2Cu&KE`y_<2wJsPY>WmWGvZUq&{3Ief2-{(6-R=iM zyiH&ygIYVbq!u75+yqPpmcb66+Q!OM0$W;U%#`2uN6E%=$KCwnseIz8V#GZ~yympE zEsA+PvY3G-)!FDh;~;GQG=``H^1Qa=6w`4mxA)k=??u}|Bh7_2(pr*MvXu4&6XAx~ z%C~Lj`mOp^Zsmg-?P#xZ#}CNuVP2oM&5C?lT(khWg%rZJl@NAdLf94(3=c|J%FE2o za0p8!^7JLdOJw!4iJ)rSBn$^_v_v5#mQ;?6NuR8~qEC{LPg zW;!J?wrC#mV(kQ7C6lq8jfE0UTY70?o5WU9wXhH_*tQ9T=Xd$4-MOb4eNhVJaoLuu zPVv}YRqZNQ?N%n`m?U)|k58r~$wNl3mEukR5|s+D!we2vErQEr#0v+`OJsWkarR*X zb|((uvF%^zPVXR_9T@dc8p0}FNM@A0(CwojTjPRV#S7h{7Sda7D!2aedc(EQEp4Hj zKPct5{kBllvEprCB9Sdps_{gKr;ZdrGVrpkbk(YK=h{kFiAuL3K=co!R=Pt7gb?ad z2-|TWY%v5AMTJ|+c0WtmE>Y>u*z19sz?bmS6;1NhwCRMk?GM3G&j} zR;!Teu-vwTdQDW}HW?@-%g)UejdhZ}Ww&LoXtasz+_K9X5^;5IZPmG*qz)E}$;+{Q z8x(9y24Np?g6*>d!tL!scu8!Jz;CBBu&pt$?GIr4LIb8JNgi?Xpg{#wW@-t_9nqE` zIYY!H?W>kc+M-#qOkU?)3f>MnC5va9D~GL)Rv^a))2O*5n}5%?sf`W7|U;`9J~m&3B8F~LcD}-Zy>cCTf*+ ziJ{FE3tKPk;{HNxOfB_f@k8BP^%>f{K$auq2c(cEeSuTL_&GUoV&}BT^}VDOucRk! ziu9vAB(3FQ04_# zEHT9dEUS^BCPB+;2=a*qH14qBgjk{=MVy@?Mx=;yQpCsYDPe~r0k~};md3Z{4K}vE#N^(I;azRRRK}vE#N^(I;^4SGuPUD;) zu5q4)SVCmaTW|8>#cS-n_ij#Qk7rsvT0d;_ogX$pkA$17)4Y72^ z?gF;R*kRb<81@&iN5t;Jj|tgiu)o8;!h?i7WUyDmt^(GF*h}~$vHQ%+oZ*r(q_fvv zjdh&~6}3)}*)7WoENqsWUQ#;BDklMyqnl?gTi|5PoPWgvcJCdzbta*9@1LVr-u{1A zy)HN?ZEZBG>y{qttpq;i2w#*_0E!*sG0=)SQqFpBU)kMJ?zErGUh-J>kl8)9d&lK! zvfU59h+W`TZ+G_%b}!%YcP)>qV|H&+b`|s3O_V)E**}y$!Wnj7Z>inETghIX?9<6E zo$S%c4&5DgcWxtla$CN1f9<#4ZkoG)Ci`W7^Y+F*XBRAN_rFeNC+j@BN0r){l0B&^ z_Mqxd*m;`k?KZi4O>OKj$-dGmc9Cv8VaG`JezwzAv`)rhXMN@{c8u<0cW7($QmD^C^P$Y{(W9CDGW%zC&m0#0G_zMGhb}ThnNf+!9EN{PW?t3|%aMnFWL9gJ zL4+0ZUzS;wS(`a6vng{<=KRdItd*I|Gq1^9ow+u1edev1cV%wM+=zPsN!v4bX70{> zCi8{NeVO|+-^_eBt4HQ%nSagvDC^qH&$4t@I4dhOEUQOW@2ptXz^weNf~-+lW3!60 zCS_G;)n(1dnwd2>t2L`VtG!E3){3l^S=VOWkacs`ZCQ8oe^1tZS&6KzSv#_x%6gjr zm$RPDdJ%Xa>#eN!vW{dO%Q~KQyi1@Ige9;N*^%g^zUb&rT?aSUr*cnit!u9=p4p_!nTcjvcc_va-M34(gOK(rVIei8HE7PyF zG56u$nto5lUdwS09Eps#qZt2+;r_Qo4)57mtSSye{ePE!ch24OiduCtK4N{YsLA9J{aU45y z%iO&B|Mx|&FNPf_^ya^HtHbNk-b;Hn?O59JwD-d4X)mT7Nqd?918Hwb3?WCtJ;Q;> zNZ|+v!s+3zkupBW*)!ai|D5ok@X+vx@aXWk@Pu$hWLmf;Tpzw9JUe_@cu{y+cvbi+ z+?w#Z@Gapx!W+W(hVKt=32zHO5#AL(9Nrt=6Minz1b#JqDEzicC+ukWQ!LMiBGE|q zNUuo0NPlh@4~vZCesN)>EK0p z*%WyIxIMBnvODrj|6HJ-gm|&f;qMPEaGhBP-ySG&!qFi`IEW)`i;eT-n!|)`;OxY| zkSn}ap5&QIyTu&kAG-~lafk*&aCA4X;_eUR1)}8B-TMy_4-Ma5;HQB+Qr!=ARQUMs z&RL6FTsf2$X{rA}2&sF`;XtoIFVY+iI1&=*PdW!*UMhz0UgQq6@}kf}<=Iq6k@l%b zM+c?>!i87zwg1RKGvY*#LsD0wySW1&bwRFDW8Fz3Wke=gi{@xTo!#$hibhB!-Mu!( zp^TzS2IdnEY2kjhoLi_l$#F0BBmZvM^GNS_ zAreX{XjN*3c=9#7NI~zhEw&f=gcCzeTJ7?vA1Sev*{$)tZhcERDFJ1MFKVzqVfB(4 zmGie+BK$kthZEzteC7%$f(I=2;|E+XFkg$sw z={r$UldElW$rUM9Gm&I#dFW>Ryw-xqHa4Pu|=IvFS?Ch^XoU7Y~$SPHEJ~}Efx{;Hr4{*Np zA>2;nJi|HBeVhq>Q@zWn&yV=d?Lba&YEE?C2JXSB%@`r_OKKD+FN-;4SA=361RTVvzY(198^>wB3Qq3Tb4u?LPUl@lFVga^q@K6%T!Eb5l#pLp zc)Nu!S$L0y%@*Ei;iDGrweTr{X19fp2&7~Z@|Zxi%hI1)_zw&3v+!pY-eln>3oo^> z(84kczhdEbfoiLTPguCn!fh7rv~Z7w&k8hGSa^elw^%sB!W;`H2;{`6$h7Z_>J>|W zV&TU&_8Lp?v-F1+-f5xLnG>EO;Z+OwTWBTF280I&+7MeC>X4<=1e&fE9u=r;s(@S4 zVKzKnAnh%j(npn9V_}7bwk^zWEp5wdY^w!cup#$b7_o4!ggaDnPg z3*Q#VOd>EU(422!v4vQx+)c>la-R)fW5ah_tul{4gPi2?Cy*03{uK0Q#}7eAkADK}gQ+BiwK|dfj7_y) zbjE%&;p(_Z&{|@Z%?rC~!f9+Nl1ZNO&hg}L$$h#FFO_h$OP~?kP)dJb!(Wy<(Y8+X zA(0>GZu5FaII;C7{9C4TKLEHiv!Hth`tlU;`lcSzn8?(8gv54Ck zS8?-V4Xd}euwuJ`U%2uS#Mujjn}U7XF|#CrKdW;?y&Mb^D#gv;p7 z;FqwB@G-!bY`ErDn^LQi9})69>936QX@uzHe&9tC!e}20{3OYmBWw8*@QGLJKsm?;h-b4l`iVBq+l2>C1-gpOiyR;l(R zYxv9>xyadXc?otVSy9D<4l;X~*#PqOGer0LOnrVIA zEwoQgN+nzw+%cWwtYk-^E5EsBt82Ksv(3B^ydy1|zWkKLX?spP+;89Md8glS`lqp{ zvP0QDvPWbWW>;rll083rMfRHPTeI)U-jcmD``PSQv)|1=hK<4=IXOAQa>nLV_fmtBTiC9ysn}M&_p}1P!`)bc5~EIQ;*O_VPT4n`Ls(A-+rr#{9n0<3 z8g8yCC!qKqiMrTQe4)gn_@<0UE%vE4pW^E-Uaaggx@l#9Qm8P`K)Js;-tM@u-_}Wk z9BM8d9VFL>**%%BnCYOmTDk~YlY0CKWz(m>tS=#k_Xx@*X&K!eGEd(|h?Fj%4v>0& zM-0{!a#^XY=N9cE>R}DHAU8PobLVvz_h(<_cJ5I`MR|_*=bdv5Z<@8L35}L>qjNpK zb2st!xRYPE`xI{gNPolXSZnDwJJEa+2i;nVMR zqTlaCAMQkd(22%wgrD}qPBdR7@x%Yti9Xti=1VC)&qtkTzQW>%^Ysy*{-hKAX(#$0 zooK#F;`4vri9X(m#-e44M}8FewCt*R^~ucLLCclFR5*)WJ{|OEcO5!T*XO3M(_3!( zI(>PQSnTxU4sSa*!#hTT^cQAFdeVH`o`>i;o%-o%vk7(kl*DxIQ}-}>rqQEXo#lPY zxRHAU_q;ba_w}vmJEQNMzKgi2`-Jm!-xbaa^su+MpZ%!{@XpigwCdBURSxevBh@(G zb!z*r;|}s%R#&d#{bs$o!)n1dk34<&0+L5P>Qj87$qVCGlt(@8Q&0HRlRmZ6r+(#A zyM2nU{&-S;<5PQl>bE|{SA;x1z7OP4&-xVKFY>~k^QjknYM)Q>T_}(5MW6bEPwn-o zSA6PKpL)%w_WP8aVsP8;C7;)8atG}L` z_Vc+JztUOT`?=mP_kOeYVdjauolU)uasPS;&yDA}wf`n}; zz3o%)_|&^T^%tLd&!^t^slz_?flu)*E>D9Ged>r${mrM2`qbZj>LZ`}*r$&9)F(dm zsZagGr#|zk&wc8+PjNoS)ruK8MaeVS))ljHiZVVG@Ts6r$*6Es$f$5B85J%iqr#{Bw1+%OqOE+ym0rDPnr zl#C;nl5ylxGLBqI#*s_OIC3c&M=mAf$faZ)xs;3}my&VhQZkNs#_;X*(dyqkyRh!C zow;lWHXP2te#3LlAZ#=ImvcV08TLA3u*>i|Hcb4n7Udff&NNoe*6>Ss48M6-=wtkX z9l;oaeV><+(~J|X?xjIEq;I1=p{jYVrX zt#E5}TXcW)?dTECYK>;rtiS@w44#4Wop#=`T;XzMuy6u`aWCqAs;~f}UV;G2c`%lr64@fp@EV&2J8HT#u!u z>h%S{Iz0v$*Q0?odL(eNJ_q=*9s#VobAl^&p^ppGm9p^#I^#ej9YrTRJs7Yc8SI#D>wbj(XFxDc`e5X$J2BH-dkIY`(+>j_VdH z{W9QmJqtKR&jeQMdBA$z1gz9^fpvNgFwXa)w5rfEfaQ8RuuM+_j@J#q3$X02IX7o` zyUB8T=mq%VdOom5UkvBc)r&1w$#KgkNH@kS+4nlAicL<^Tj-HobRGZ&Z~gc`fI>Sy%JcizY3hF zuK`ZbR|AXnSAd23T423i4UFsMz^!^2aJ*g$luz6l)1y1kU4gX3HH>-BnIT;BvN;g>WTFh)a8RDaus-z?#s(tHo zZvjs5(%f#tZ~!SZ|`SflR-mg(;SOIdZ1I=B;9qVE6} z^GtPnR24ReE}>?{cG)#p8oB{%FSqgLau3#o64;H|;XH-qpl7iT^s;k6@1Vx_lFwrn z$2H$R#9yg7%Zas@INv%oc62@fmR|T%u#7&e*4febBk&{me`s-BZ$p=QodAB!>WGZG zM}T#FnM_*oe&8hiFfh)y52WY*1UOM|0=~%?0c3RD3w&5V2&~cf0N>DCfRnMk*SRg9 z#8z)F63_okN(SA5G%SX`M5JuLKJ39?Sb1V2yqnIE61gX}&|S z8(6J>1+3J&fED_ez;bNp$+-9h@K1Uta16iWqx{;mx$q?nw?2MPOk6(;tYJ4=@_7bW zi5~I}*@XS2MOao^$y~UeR@mTdq7Ak=J3Cr{Ujy%9`RSN*oL>a#tPS*J4?9QBU-C9N znqLJI(CDb0C8a&&SJ_^${A$}v|Ce8T5-z_6pCxzsg($Oz{Nj}Ml3%1UYaFsTt`C5p z#?Ln$vF=l^U$r={Uk2}{J@#1~*Drt{!T)DUQ>Fh3jO#y1$@E9S8LW|O^>=+3SfdXD zEA$cIbp1N;DC>7pgC7Fx^pub~>b<}T`VYWj{UUH2 zy96@dz770XKMx#j+t-_GdD@KYm^<~SuFgimS8p6(olXMd`Z%yge-50?H@KuE{{U8E z2T^qW1UOM21D5EIfyJ!rcP!?EH|fC1CIYN7VPK^R0VkRuu-F*j z_)c@Y-w*jkF_%%ZGUCDR?u{AaR}G2NU7tTTOqanlF*sgXC2 zDdtpQwdn<{G%;X<=?SbbCj-lQlNDV~0v4Lnf%T>vaIxtM9N#fFnSnNL0I<&F0^=qJ zSjn1}%+#Yg*YH0-ot!&N0lL!Tj69F&ab^hkci@p$?m1TO2rKt&V2wEsIKvDFeriSm zr<=2YQ_N7{C+1vWgUJV0o58@3O&+kyoC&NngMj7c4B$j}?lk8^$BjJcE3xz@+Lkfe zzw}A^uiiimRxf#@m|$wb(h8HnzXr>j#v|a1kUrhSfpwA*T8&+)iv0REd<(99#g!OR8Ln@fRpW)3iJT7Z~r z09Kk=z=>uiu-G&M$C)PJg{BeMYAyke?$ke|#+hILxnIlk#>lgrnaQ++e+6C)ehR!0 z{0nqgU~$}Bfz-)n8SrDX6j)`x0<1SnfMuo)c-X7}#?2yNiMa|m&9nmFH_L%FWE0Tm~G?leB<2qL3#*P3QLvo`{YJjdz>%Xd~LL0ZSja z7R+7>0xQjTfMxRDCAT(s?~=C{+i!Fs`pa`ddRtse&#Twc+iL7vn$&6h#GJH@uo^9+ zwpz=0ZPzkJC+i`=iCSil)-R;6<3-mI)1YgC_1caaE#sv|%NSuikS407CgNIJesQN6 zsSEz;CIi^co~_hRz~|`h@Z2>QP>Sp6{k*Ayl67uP53( zywgt^gX*RJ!XEPsECRM*&F>y-Iq#30pnAhv!n0QIuugXtR_V^>e$U0s5w4UKzLadJ zTzxU;;^tvRP4?h`!B?)S6UE}ff4+IByWT&Tf1PZ!v`QmzfeC0IIK6> zi;-e2ax4}i%Q!Ev2HT7`V2$y1y#ZT_@9V#DU+W|+5yq?y!HL)ltid+m0_^>HV>`6b zmn>(%`f(oNOnn|}F=Ah`vvtYkoX`^+W0=bQQiYf-TPyM=dpsbrpT`+$s#2-Ytz;w0s3oNI`hE}UiH z=`D2|JmT}63Dr#x)}yTDOR;tNL;VmZBK~f~GUE_4j#Z><wy#E9`xe2 z*tpF$P9%KKqax}o?BmYqWEb~9r`pi`ei}*1#@Vtv*j4_Y-vZIpwA>e!+A{2+$jR-F zx~qcDqV{BOTJ+eC9=xl{TZDN8dX|wV{Y)G8n2qyRd(5LYcALbS9X5vaJQZtsPR!_} zv)db{`5H6cdE!o%vqn5IkI8<8ol)|&YcF;w^RJw)dfr+#{hYmn3}&Y)I~R(jPxr>< zjiQlic5QKXD$hpF2b{RmK8F>86}*?OfJNGaSMtY7%lQ$F=epW5Y9Py5vKKJ~{G zrL%lW-mk1=-PNbM`P9iCm1*BLQuktOd3#7%?qwCi){^XiN-KxG6%o4z%3WWBP3$S= zC5x-fK3b_<(RZCG>Or8)(h3fF8*+D1dvdO&L!wB{!YNe?4A?u!qOHfRX0w9X;j3dE zw8K}X8$0<%>!wb=d{$69IQy|m+TrWU%4vsBv*zmioTIF;cKF_66}7{+k2lQ@-yYUk zJA6A>f$i`;pgC2ODuc6u)zl8(&8)C?_*S#(+TmNq8fu4cF6*itzG-?*O(=m7 z5{QAsbVAE+Vqgu~5K}_fWr1YLCL!5JvdK#bNk}$rUkHiO=>5KP?;VYr?d<#G8Elog zhTU;(hPpt7UG_RXc9`QtKRJJcG$UPTo1Y?c$g( zeEel5|Lz<3ylN+YVf&#phUf3Z&$&DI9=dXXzke@2|A?`KJ$o+QzRhIuzQyF9jNs?} zd$(P=-?$^b7(Z9y`kZ~+_Re1Q`+Md9&sP{TI`&_B@X)h{t2>#&^(JH4$@>q??r#Zy zb&44h@HxAiNet_j8l^K#W@gsYeX3+&v*Kow#3v1$b5}R6k|&K^mXlady5hnwnIv;* zSM=}46^Fq9{F)7BlMxS+?IyFUC}8*4IsTsFp9=pyPnFKhw@5e4KPC0!rA-STvad)F z;o3OnS90l9Y!Z*m?Z&I+X(r1hat~v%F=mr^p3&ke3fTj8b7fUUvMb5t%^&OC?yc~7 zD?M-Wx5I_^r1*R(sa`K0UCh76&Pq>+_2eoZqim4r;SvZSm-j4(6VG)91Fiu67PmKV z9fj-GPjr{gOM9%<9TdsZnsU67>k)qh?8Ps{M}}5H0Bur za&}f`MtWLmiW^`$9rnb8__){@o7Do$7{pTScx7J5XU_AP11_K0hi~yW7!ZF0=0FI4 z`4h#@6!Xs?D%yQzZfEW@x$U`o4;Ni}B)3C+KliI|;ZNg}_|y0;<%{^kI14V^!T(uK zU;$RG1S`tuRp}fcrlq*BU2+$GfsJExOyV5$MH|ex#CzA5XJxpPy#_$VUHLw*$(58P zxs%;lGSF;x`GWcWU~-_MDp*-6`Sbmya0{Q|Q-5IWfI> zL;k>wY3C(oW@PIZ{vu~d4+7wLmcnva0XyA&Dhp(}j+vNIG8wT3X0=Gxoy=@z(+1ku zZf3FYY1xLw0>GU~1uB0(m;Lr8t zWM`zilO6WB7>i1;F+iuA2Y9HmDo~M}Wb%3Qd4zPUl9DT`D)YTe{p$06i_i9k@A=n> z=BCNXrsj!o|Kzc$sbiCEm0iJL7r!Rh6|Bt91h_j+^m8fRh-2hhY3VmQG&fUrg4eMT`DqtW-Lb_qPUwGjnXuzM9S+n z0h`+Q68PP-?5ar+j(Sl935q)|mb3CQe|~0qYD%m-&dp+YjKz{vlvfb~&6q$@$xfoH zWOo(FD4+ZMgpXilC?Ef*{A_ktg#sosubXP{P1V_yhN<3?y1eq1`fA>_yLIro%Wk=^ zta!(hJ3BW$kz(jE6*g6P#;R;7wd(@)QbC|3r*VCDQ(;lv{E5c)xxvde1p14+C$@Lh zOsu=FxN4IE_8_TnP)LPTB^gwri5m`%C04P^njk1{ClP=fIu8OM`91!Vf5-bX`6hlC0w|Z2Dn(vTmOII5 z0vKJfF&3l2$l7J_HfPu4SCDEXIazLMnE{|VeaUXO8LVnDoBg4xkk9M)hrrPJL2zx7 zxhfQLn@xW;JL9SYHStDcd`)FdVuHnK-|C!nIjo8$A!QdotS zSxi|CS?0u~w3(SSM}j%CJ`2FG8g`KXK?;J}ij@KeIcpd-86_E_mdk7wJVr9czfU_0+9!R_#d9{dghrfer3m*Gx#64`*7jo>;>E{Gq;iiJ;{#Kb{)bq z^nEfzL|P_y{oU0+`H2AHeeUBV@UoP2T+i7kuH_K;0E1qw-$qia=Kc5E+Hg|}^v`W< zA57d=MBC3RvN%2;Ay%lNnj~9^rdEs;XAF->lwyTU^k6ZIuG!2=- z^j5xSFnq@jx!|MkLsAtje8~SKod5=s*@o^@g%C_G=r=Zvdxg5w-<_^F30kly1e~P* zcKq4g++2v~lp?2)C6LNs9!HWYlOeE+j_kPP$d#AQT{Ae+&^9>Qw1Ibi?wMykch6V8 z!jnF@<)))YK92P|@Z>*Bw?V?Ke-11z12vEXsemO$1w)ma;wRcPlA`1PXcyRU215b6 z&+hnqS08_8bZY*9RE;O*18J{FpT(1Vl=xU^m>3uaWF3%zA?fSVH8~bZ`=LIR7AXTO zvIH9_^4sxeeR=joT4c!M@&t1sC463UkYuMT=?-2V-p;E!>ic`!CpKT%*4Fa=$%dA? z{?Lx8rwEXRzw-M5h?mVN$($SURD;pVWrG7i*`e%=8bFya0A>7>BuwM?HLBzwL zqoH2(>$F|Kr{jv%=kfUpy(UW<30(1_9&>O(*nUiJ^zHoUF8zBu7G=*~o0%W)|9uloiM@ zIoT-;BXa~qlKp`So>9}%QnjVoF#OY^@~QoC&D*xjT{gM@$_H*OX&7m3=<2*=uQbx@ z{N(Po15+1Y^W@DBzYP##L7vYEMhyL<1p7>0H@E=BaLih>kwzm1_q)x0bfPMQpSb?;E3EO$vhvgHW6FX+>7%)T6uY!Vf zC6gKPnQR1SYRDpEKu6KIs^<&*Ss6|{X?b8OqUQ-y<|suk?8SVi${j*eswkshaBEA) z#U6oD zL*YMG)}BtSxM<+ezUh6Je(JVbzTY@~RZnwUSNNSi_s{AspP4-T$dRYtz#{4v7T78N zEX)Es%OraeRyh-NDlDu#xd$rPp~-*E_es?BQ=NxYlSll^uSxNGQ&K&i@EP$-CaIc~ zpT?u(gn|YRfSRKQICIDF8qUV(ZP0v-_uFi?I9r@E$zdcCio*V0)KCH0HSs;25{tRl~m!{;-pN?UZ1@)BV!0Fu3_Kg zf8g(c$jqz^MmnS%EqNC1i7bth)*ydVl6zP6)jTd^(1VA6CEUTk!tZKreO)N@_3QwD zI~o#>>vCaX`u#yTh+Da-+w*v9E5Ewu%+Q|v#Ey)NL4Z;M3c62v5=tzKg_KGXbwEEv z2L9>7=iDFxE=^g(PBs{HvdQ)3+LIlcHW1rlHv9bKCP8G#QJT7>>4gIy>*GCq;^O9} zUL&?B*O!*+k=73sY}+(CW#0Q}V`D&>e{0c!-LSA(-U7CdWex28?o*{8Vdpx|O<54Q zAa0u>o=Y}E7c?n;YhL!-aaBI&1G`p}Y@IW6GSo~UC>xV((soM>yjH^u+*m`NfgB}z zJi-UduBOXyjg1+0GB~=nF=n$#)AWS?bS1#dCJtl$sD2yF3h|C}+y!4Lle2~m)m0Vc z#YO%+Pj+Uy+htFHzZ461T9vo3R)Ia?DVUeBmgX`*?7GSBHsc~y$f(zYA^%}rd!i&I zPE@v5y=7?G`|yh&J@dKm?P;4x4NiBBUOF_8FZ1RELvwN66UT1<_QRK7JX~Fo>)f@u zv9j^jUhg;Wf9AI@-Fxu5P2;=zw_L4Q{IQ=1dS zJL%3VuDLTXTKN2fcfW`Q6DoEA6&6UwY#0=HI=P?1oRlZ=M##ooPi~Gd8?|-%w1xV7 z_g{77x=$UreCV~$zWCJrZ?=E_(7qEL|8&P^z5(d*VE!r|9K#Bfe3(wEnF8SxdAx3| z3YP`@m?rE}m?Pr9`?x=R6F(UKPtF!td%N^d`!CwH$G(WiTA5GD!Os*XBkM=sF99$; zG0{j)kjI7a5A13We=+>yaCnd(khcD=J^T)ypdx&$^d*+gnv@2@b37DU3XEDvZQ0Nz zOe@)FfXq}K1t4FOQYFG2NoVN}>_M(@x9mQ51oLiT$_Nz}f(s^X<$UnElP{dP{ffS! zJ(t~f>(#Bbck;vG7v%bXdhniCO2?}1IDF(&>Hn^+PpT4V^T7Tyf*g&~tQviRQA!@e zBDy$v3?BSN5Rm_Ta4`H&gM%EHnxEq9!~Z5d6#fAgISk}Hf(HtJ3g72;lc$I05J_o1 zc>qrs9u&;MA*2~k6A%Eyzy$u2nA8Qz5JVx(039%hy$&xKN+D9wLEN9@^Jc9p9vi&3 zI=L@xf`1f_`3H@>JmT$EmZx|T=zvcIz9ujr_Ek8n7A>Gj0Z4+y3EPVYdIt~jgk9ke zIKNn|sWwV4|x@-Fes9vpmlq z4u7C7N*V!l4u*hg0^}T^Q(tUA7=loaw>p>uFD3H+6y7H^1g` z-~1>obbOGHsH>WPHScEmh5Kl!haSt<$U6>eGy|7Gr6L)ojZj$RwLy)*Q6}Y)+ijq* zA8nwWBGm{~;|`O@OyMxQShkP*WFHACQXwXj`Mw=(op*7^wl7$=4L))CRnkU9nh5`Q zcioNik8oS~1L>iC+csX51gdFX_zVAz^f)UPRvzS*8?Rz;(aE;bl!h?Hb+56w&{qaL zxT6EnS%xSNJ30mpjsK5$bkn|us8Sv>6$;`}< zZ$#gSUjZGyApf^#2cL!XpZ|iil>}rD$hQX1NMz|s3Oz%xt-d;+(`P4Dl}8du$Yc5j zgv)<9c>MB%#|Fo{9}DwG!c)g?IDQ0<_}JuTJTn(mGLC0j2`>0!hya4+G=Y~VWIY0k zc04(`h|4}1oL3ccO5?xY@$T5>UH-N$B%i==e+oZ+^erBvK2g2_Pjs<~=bSOndP3BY zQy&jnAfQDg7;%N}Qx*8FgOW2?N%SX*3+N)}6wU;FsNFF>{v1SrOVw|h;E^G6Nbtzw zXMSq1Ye#8D&Cq>2n`X0{8s|=pHV#+&rMrJ0e)30Go}Hii9v}SJJKvKY`fKB+=WQ)g8U-poSCt-`K= zZlNj=Zq{U30mX;l8be!4+ae#cp7CeN5D_LCI2!~V;DNjEe(yc$$b3?Vd>GNrA1~a) zPwLT50LiW=?VP_vJCimn=X(aicSx^%^tN1xtK@}F_A3EYiwYEJL3ObLDiP&C9GwDz zU=hx?Eq*S+-;M>4i>&4Zn?a2PfA!wocjFZ|bV$G1hUVwCD+3Lh9b=u&p2o7m>%SY z-)rJRMkv&G#>Kn~-_0ep0%nr?Hteg1#HsO=g#>*PrQShjGMKY?V7 zmF2LVN_-4ANj7dYIpCX9aE;tCGOiecXS2*?5-OsMwo^u?OPG-9ig%R@$UeYTB3x5$ z03vM&tvT|@A4o5PelZE%63h$2g>nI-xRU*A1^V)qqy zAQ%I<&+>P`US?P_^-8UU8x2-OS0(r$9N}H0!%3=;0|+XmJR+biCwn426&caQSQ~M( zkL(F8d}cN-`hnOyvxhLsZ*ARBGhpV8b)yGAd35{qeq;Di>rCG$&q`|S9_smOSN10l zU3Kf>{W3#jegRAOSKvv}}Ha|3M7q(CAQAQ_slD{nyP- zG%1@pM=G|DU439;=lbE%k!@3R!=vN;@o?#(%d`9Q`i5&ZU3cKJ&uj(OJFyG@0g`sG z5~UERh6JX#5=a?XqV!f73XAO_ zmGDodxAca;z&k=4HVuS-jWQZVOhUW_sf*PN}s-R7sPM^a| zPJub%UIMEQ?KP$OS=D`Q^_~v#vVYu|*eR9If2+AmZr5HZkoKnZA{JsL&j4SU+Z7a zssMx7BoJHAX_eMgj&llPg998zZt04f2oe0XoDfw9Ihqz-5eTDbv1>DEv1S+`ZJyrJ z9e$X1RM&0p13+hmMEtX4#)CzcMJXig2`vHnN0_6C2!b$F6cL>$F(JfhjLH_sBF?Eg zmfXGf+T*(p9=UFR$I!^eo}oVL9s4i4>&^q0-N|3wKiGfi-ocT*cyZ@KofHex!NyXd zbCYAER0wh$kUM50ym4KB0GJXIJOv2zQXPlUDCCW%+DLy0k)&UP{7wu~xG||Qs9kb7 z6XFo~KqgGBQT)~X_t&6 zNWw_jP^py)_M-k1V3Yc@gH0(}1A&(i8sB_)VCb#>{?PVqR~>r2O4)kR?D&r1$yxsV zyu$4xpS^tF9m60x)bR0oP*yzKu9{{sP$|$h*l`H~c>E;mKOyi=wwuU8O(QHqSxzLzXn*~p8V9O)vUFfwS$u&r zN9owwKT*@tTUs7$sA-#S@8|D#XXIr%($lQ*Y0cG5J=wkMaO61IBc)*3$;0@$`hJgJOAj z6{=9C$#X&c4LhOz5y0tR?98{AQmyK9TntNUq+ zJ{f*4RJ)m$or=}`1P}-xoqT9DI_B5iVl0u0euR%6fb&S6V?ciWsiBQs*5;0()BNn) zzbN|J+hL>nENKDHN+B)hiZhEyAgGO&0wE_H06Y)5bGs`=4e>3yql+%LA1?RllOyZX zd`4qJZTZOh?)b*Q-~-#rHzov2`Ps)eA5V5E|MJ*l;ScM+`B>Qa=)7{~QEer!@{b_e z;B6y+gdiiuM2Y`M;v?SRa5zL1gFA&=vEek{ZhhlRSB?gg0)bxQyC0I)oa6o!qY!M7@O}nO}G5{}?rHjQ!E^;k6SwGMxXQVZc9r{aL&f@-#+$U+MADs9djebb`S%iPmJFqHfMDY zTqVYHdEf~2+!FqXJHmHx{%3x+Hhe>S1HXdY(DH>A-X#4iThH!9M3yrM2LsYsvcV0l zo&tM_N>5_2P*Hlqsq{oM358uDsE-`LV?eAcvKi?Ou2#KmZ)dp^|CuZlk8tdvBT{+o_c2`=c+qK!6QS0Fws)Ni%+RcFlt@c=ZJeO(Ih5k$v=A_^g_aFoWP-a(`c zQT9N^985+*xu`gkS-;2U5voAMMnqx=H7 z)mA!9PitD(ikfXBWLX^ZD%pf;Wa+m-jH_CW_pDJwfIzan$y4d|Rd|zo`Ri#OZz{6g z^G{IWHWpF3@M#2^=HOo?`SLJ?{}r{9UQzQr7O|6^OCsR zFWz=X{H{5YzV)EVpGkKx51Uouop5!NII?V5Ao+Kcjmbs=7DY0^?<^cUVTFj$s2;+j zDjGOzpvk$YEAdoKz>F&~b|;k%*b^<547J*g*v}7DM?h=(-<9M>OpXZaLEaqRQd1~R zj9PYYLx`dBxaA+eBo(x^HKz~s#AP+Mrp@k6?aMfx)!LX9+dF`5^0FR2FZqB@Kij5w zVysjF&(acOk=2qZN&pU#yKFF+J5n4HZ|^>pi-kFGCy>5fqZ3v}mRAb#Bo>RRDPUa` zjiXvb;{7N}Tvwb=QrTGqwI_GNLq%@L)%E{rdWXyqfj3)otyy_}-seyS_Hq+cb)6Hc@uX z!x$_oDondfiGh%1iLiKKimB?vgHkW}Q&`9jm}s!gu;AGkn`E_OkJNex-~&H1>+#ht zRj(PRs#8+1@LNzg2gAf}kF{hX^ouPqQ_w&wUZp*wc)OH${}p$oKmGL3Q%|Lz_}IM@ zUwBNqE&Ri}_5Rv>@2$WZLU zr~RZ*4e$ZHQOzr4Z)s&d-PiyFtKipQ#}0tFR039;E} z{<6&Gvi#cNaV)x4x}WcsO+aY^%M(H{4YC8IF@`S)-ys5l@+PO#DQc)l=;^+?UgcYh zSU_g+-wTgjIz!)6bO8Ti4~iE4Ed2-tLR6jQXT9S2&0cOc`P`DhoB|1{j~dY^vVv()65*p-E@FHU7_O|!A$;agHLqw0a7G0e$#YhHfuc8f#v5;h-+iOy zk@p^XE4VC8PRBqbAXUEENeMO-*K5*NcZ{GIFH{ay^mk&Su%SXcRRdu8`x%T$= z?oVoRw*yNOzn&{{Et#m~GB{&wveXXw4W5$uZa^-Xr0t*%krZ?qdk{NzQta3aN8aZZ zWrJk`NTvu*@$Gnq2hgK;g=p}>Yvz>xsCS!zOLK4YjkWEKp zIkK#h1*C%5KgshK&=^+UN;m8H(&mhOp( z?w+k%yC<)@YI5qTtE5{LCAYQ6zNxRTWwNV#a`MCkKYIA9S6=y5km>5fJ|T; zl$u2~0Qq15dm>m3c-000RQZVpffXHER^T**WDf~^P1XlcaQOW5qE#Vl<3@g;~qr@_(nuB_gy9v!; zW&d2{tqN9!>V{_eU*I>b|Ln#7{Gv8bTSMKkx)2`W0~34kGU4^7rP{3)qtuS28o(~Q z@i{c%c336C8gnw#U={j&IVLlFYBiDXU3}S+!gbQnzPXg#^_|7##TCu%g?V{ZT`kS! z74>ai(BPOEjhgGO$AZ+@xqImc44G71P6kUl zP!7jlPeX`+oc<|HcPqLW;O2{3Ud_$-Q|eQs;o;|hqQ5_PTXS(=U+4PjCUW$9hx5N9 zeJT80aKl&+s4Hz@5C4J4=Eku?#gEu1RzfW}=$N9=8#-}p@MEZwHZ}&b)&!QUYqu2SbrZ%?De)PIr_0j8iRt@CDm-%53YYLeLpr5D`U9~qw z*IqTEH-$sMislq{o3ukms!5C0aU&yNoC*AtLk#l6hut z=ZL%Aak#2Wsx>uv^HXuDjo-wck*lB^AUhE*lo?4y#>WXPjpH4X84X8je~9h!$_DA_ zrk3y!mGUAebBrI6Hvk?NTd$PT77@emMwk!y+NwuQVNAv%>}XGjamBh!BtUH@Gwcv= zJ{iNL9uX)_N>)QuUmc&jWYg5_+(d0tOHIA9fgii(h3k&YY`cbEJAKpC#K!gsY*Hqa z%d7uS%EjqMN2cE+{ylWpU1N9L!R_joMcrbcjD+lzUITt?aEMaaLqf2j$q_9FD2?P6 zsmq1tClvUT+gXZYBZNcvQMd(0qkJih6Nr8UC}v}o=k?=CRy-O8;#1<$c&hfDs$Hi5&y*CaD+#-q_6jXZzPv!ttw}coNB@5J$13^G z_HcbWKmPHn8|q(uWQwQq**dYCU!Jc%@!orZ?b`#~9sU*QfL5N0l_x=wXS1zh-2>^# z=rc7?w~7_qjQ9uY?}=Uz2Ha`FLdhfoT_Dt>mUvsuRLmjwW@Ipyk)46IS!$ZaGm~7t zd>d3U(WoaVViRysbw?XwlB@J4V;Pb(dYL9OhiCfF%&+@cWn%_^1q)f1hkZ)81#S1QL!M{V3} zwVE%bKzgKW2$g%#=?r_%=i=iei`8lwrLPw2R1CLTtk~BL(f6CL|J!ay!)Z}bQLrdj z8CYLlR$5XF_r&Lcp!X)gLlHVNf~b`uo|=<_NWkQ+*#D7L#JA)&# zAO!Ug0*(Cq=MfsA%KBkc)*GSl)7g{~Zvoe%DG;m=??ZFfM5G15MHtL#S-qA(fu0og zA!#5Vs-aaQ7;JmwGOBK{`kZN~!{m0utrAWpq8@e| zHX<3eBt@`Ma00(Dy6l^y{9`(>toB>_{>k~{E9$?Of`H;*6$H4oqPk=`4AhcNh5SP8 z01CC;9P~(`G_qqjMA_8Gbx7%WtL_K<3TwGFIlE8=^P$1(DC<1QOfGxpF`{=;6J=YHW+j3ZxT_;b5v)4e) zB;4C%q%FIZ4iYj}fP%y%Ln7V`fkO(J%xM`#L=-ZD+(G;E4m67Ab|WrkGUb_i+-`T4 zJBy(6Aq3`R;PP_Ycq7uM&rq>m;Rq!-19abHVvmKDd?%q zPSJ)RI2{S`F*ao4tlS!dr~(&kNiJ@(wt{7lwd7cXCcn zan6Gcn;RQ9&;NQE@Dc!KawF_A1BkRvsg}5jxYi5}YPN{-6i6K^rqW7Yp`9dHg(5je z0UrEGO0+_NLN}VsMk>3*Oa>~yqyIj7v+6o-LdpNl|7XV-zm`87{xQ}4f57+5{rG$B z)VM+A|5Ute5Iqt$<{==c1<{RcEvohn2pOVQhN3S(<#srqB9kd<_VxCX&_NL8y38U83d)d)G8QR9>#Bhy z)mBV$3o$=UZbiS>u1c-fmb{uo*8G0$-J**J$lfeiKAi?~sH_fUKL?_;8Z6dXh$Pdb zkeZ~|v__uvG zD%S`BdLfY>H5?v%QJ`6i8xm3yqhp5>B@?7CiOS-1S_@<+Y=69M7V<~$34&FjZM_}c z26lUXjz|jxDjFo=l~cG`R{bEV!4C%BJ*;f6%ew90Tu%at=JoIpELqCb}%37P}-6Zv&=xTS~>)g=-_}jLIlY`(^SmhNwWc262gKd z($V4bP*b$qg-1|lhZQzC5V5?oV}LOsacK2Ufrw1|wSk5jz2b02!5E0wyR#it_^|l#}P8c9rTLox+b6 zHFxGHkhsb@kp`1d9U`8fGLqh7a#Vv!Is>+f;Acwglb=L<3WzKRM3xOALtK0reXY86 zFu|bua#8w`v1GtS)V{5tu$7z0hnJJtiY>iGx6nXFDuJmMSvsP$;7%A~kkRnR!4B$t zAYc*tf$BHW2M!Q@5X&NVuSZ~XNwCKDz8)nW!q@6JjkF~#krv^LmTfm?FtGdim!)_h z*Yr$`jMi#SsWqh4kZud{FW-25;QHf%<2MFwypg|i1HL<6dF+OYkKcf8DL~HRM)V$$ zz3F4MO2~_arQ5BvIus>Pg)@FJjd2kMgCG@k-VeGq6B84CiM~8XLB1Huz&Y#=c#Np} z7gh+@(?8IPTCy@ES;B8sbSJ#es{sAuf2r7Iy-sK{b#B|b2BII|5_!b14Q2p_&pKk8@3{f+p#MUNgy1Ns{*G( zJ0{uD@qrW=wKlHkr6DyH)lc(NF!!>a8o5lUF8!S{-U$gKRE)~mWEkR|2-0XA#25xc z#K%}+&qB4~z3{5Q)ud@eY+AG!0#m#g{Cq{Emq)O%e_2CM^kUsqa_U;b#LP%;)zT#+ z{irS%W&F!uiINyndQmHWU1iyoixwQKu39Dh94bFuBzweYXe5@|93goWx~@g?E7tzS zC}Q6fLBUcQk6nQa(R(9oQemPcSd1`9sE8O^A0~thVGD0t%~qn2PM9VRgTrQx(#>R| zxtDh3@E^c5JQLlSBOf?<@~vgfIYLG9KSDuU;FeKMvFbbuhe5Ohl9LbVE{sBI1r&Y2 zY9vxjdJ)M`WC+m9xxIg2Xmso5!^i&a;LPCQ%f0n&gKbw_G;uj>8|aLlg}=bedKzV+ zg9;^l@E?9g7(^7@f*S>?X}qX8CMdX#`T)KP33c6D7=NzR=O`0p$az7PNog>fYBYF7 zy{)El;5>*)Zay!U{H2BKvx|$fQ?pa6iud>L+T6d*pPyA&m^I!XGW8_+b5e_ax$Cpi zE3(Ve@=C7=$MfIMT(m_gZYcxDdHfr48war`Y6Hug_%4p+vg?)j1a84d0tC9bQN(tr z46+Ceg^;h|D5Q`in^7$RAwsj$#0o^9$A~g{5iLkp%FcH+t|KWRYURsK)Fq@gx1g<0 znCXbPAWf;oiPvgz@xfiWXN@)&sr+O(Yt>elI;Ld&TAFy?n)z zQH+u6&CX19yOJDTRxZ|WwF-HH9XA+E)0jp<5twwP{JfXrLb}I14UtrC z#+JwX^F%`vtYo_lzL`_?&Ca{r^m%3~{&V5JidC-Hj5r9P zweBR$|Lt#tGkhUH0z6WKmT9nUxus_u3ADuZWyOWmRpz14Sqyo|D?(@I<--HZZ8gJM zTXR~s*}^lc?vFteMyjoo%F5XdN_;wYB@MfRDh;DforOAfNxO=g5Dsa(I#yu}Xj`|& z#mn)cBvSnhVTDY@M8eAQK;3zXlwT3$&3|ewd~`%P_TlT#iITH$pdBbd2(WvV_$;6# z6DY}xLJ0=uA@9buz#bCiixj&CUIG_##|q?N>PujKY4N)JT%RW!!$_Tp33`z}O?^=Z zLyA&`NNn(Y6toZ>ElgMoS^pxUhRN=1HEbBZVO4y|7#((2j*%$jpUA4&7gcslD#eT) z8k#9(xPO?qMaGR|R(F$tvBFP8M zm97**J~D%a&7w{ilaFM>+82*288%xmKs-kSbEvM@VYemP5?wyjeV}M1sF&vC1@qCL zfzah*0TJeIs{IZDwMa)~(5O%kRtul*zAaE*(aNWI+x|f-9}hony{Kb2P&3@LKg&7Q z+PP)_wk=i4fKogDce!1L0M&H&%xjV~L|+wwi$g8A?=551kY4ufb|4T?1}18qN*437s=u)~9sC zMl>gKBXZ)T_z?#+9VLI%Y%w74ECAQ6JD}QP5hg>q5fMIbP8KX4r`;THj?Wc}A2WqC z#eXhzr>aUnYYoWnA)Wu*Rd8<5h~#PEJ-b;E>s7i^kh+DfW0f$B5rryNqh)r9YS63{ zfR5TNYUc!_CngpZ`18Fv8EJ{`M0dWb7*ba%hI1|A&M2Mm$Qmo@j#de$S6Pv?@D^C? zr1S>%T%ETDS%*rDqX>P{oB%4cIe+N4x1U14qIvQS;XhMwKUMIOcqj#vVd%4?AixWI zC_L!ieu{vJhn9=zFCaz9*qb8yTdtI-(O;1>hEzQYQ1NJLq&i;!xLra$(v;fXp&`>i|bIyswrj>__O)KJrK7&GE?Nz$$9}9h7HwVwb6{2h4OS#u zHxF=A*&-_QBY{Vg$uNyXtHD4m&8mB+sz-m+MT>^*s+W^je1Xqa3Rc2k+G>@jFQ2S^~dI~1VM>mmLK>=$uk&4jQ@8x341pN~&YP@DaNJvB`AlVS^o*`gCl<1Sgz)ZI*G2NaX zV>Kig6L61KZ2+#8)lxUTc1x=r#@KHO%wE2%(G|MymU*lqRxasB;q2-R=il*g~ z;ozK9wzsy7q$&puCvKhv*L zAcZJx$p0;m$}ibmEr(7ew>L+L?D6H)I2R?p=f9+HbW{_z%xc(PR2bJ`w~1#emGxx6 zB65hjFQoUV;{+UTG>l=>$c!-<`(tBiv~X-fEZP|mR~O?|Bl#dR>Wqz1$(SE!C%dw< zUCG&xV#4Wf^&cb?Tps%1<&KWq)X%fQbk*Qr7aD&rB+?Hol3t-^&Q&7)vKmA*I@gZ$ z^S}R5etG{$_?;i-2fIi3?R9l%SFcVVs;j$xS9f(9zasoj`u>rQ7kF;!!I3uJ)7N?F zWq0~~{q1}A-|h23tB6KjVTUBMZKo|5e51GOq8gkkVWgwN6jU3*A;0Ar_(wG5F^CF<^$IaEfs8^61QJ(BB+odp{Pvgw7~~d(X0^NNT^c(5T65rxN3| zU{a0)sz7g1L;oP?9Q2`Dv&4;}&Rx*3nADK5c!hA4FBWF6xRAzUp%)}M$*zV_Nb6EI z%1K&xWq0&{Lf`hS=#Ul~_eaaxr1jYnufS4GB||_PEMUf+92$GHXOA>Qwg`-|I3gMCFM0r-S!|QN}YD^xWD&t^4R8=f1Xndk+ z=#k;3^2$K@50~%AfzC~vI!m!FPp`2pZveVvSc0EW;!_Z~bt7<_9Tm7OCNNC|W>lCO zOu9zYmeK>~zI;WdhxJB2ppg?Q;I zxXwn^ZG!4DCc~VLhfSRT^=bg$pt%CVkw&-ffd5S0Pox#}oGs>Xr<>C4E?=Q`^aa%( zJDp3bDbePEnz1*<9zF7l{obtn?CkP7Woxw<(5;Q<<~Phwg*IkpC2vS-C?BbP3?-l7 z)v|?n{(^`bm$5FTy%h%N@b^Q|Qp<;b7mE-R&FK4vuoqLw{Y!%5=dvQci5hgYGLxD_ zK?^d>A}j=xTlMx4I1vDfa;%hO=i-@Mdf|q=7$jfpxQ9UmK;Bp}#}DS=$?%)Yhxsj{ zE0fTb4h_EqWnx0NC|Q#YtD_869V)uSI6Bqph7BH7V@u zi*zw+FFdI7j9B%UIHOl#M8>`I&FYK8uPvGTj*8@6yFU8f;`DclD|{&ZKvE}HX0fZE zwMWm<%0n%*Q8F8W91+MwKM+-bm35PI9yNgzx^eaE0Ct|ZSdb(9Rm|0*SOm@lgcC^Z z8R~RCisa;pv=^i)7@jI>q9!!v1yI$qa!4ajnz*znGN_U7<1T$v<4Z4L@BjZ+oDyP# z0Oz(s~(zWj231kF-&X#TV|5cA$pQxg!a zmbN!TwI+}uN2TqE?$E&2bJWtWRoG4jPjq4To#FR#qwBflW*7^`NNu^A#Uk5{vRDI3 z?_yF&PXwLay8NSqnj*oRJ8xs+pvx}_XVz!T5NRTVE z+G^;sSdhCG2SiyCED8DKMYCG>b!<1Y1Z3j|ckLn`n_uIBZQap{Nwa@QBQ>w0Wx(qEOa6r_X6#x zPl+`VxEr?}j2aXh@CJ5aA=uughTxHD_i;xR=zBgIs`>O6dIk zAy7wp;Ta7;izdpTrik8OLYAr?T1J$V>7oSbkkU^;=t)xG5+-|ej&ui9BxQFmAV~_y zC>%-&X+VaeK(Z}X&q-ISkQS{$o#jxStLArAb8#!o#aOnEAuXMThAR|8nNVM1i3evH zD9fukR7Q9zHjZ9+vsLZ5A$rj;_#4i1oL|Df8*w#mT;(Ja z`JnD*1XnrIMAk<7zKM0Du=VV_O2T?S+LS%0ZOg$@D0WY|C^}nGxKLOXr64JSZ$ot2 z-;KE*2I~yczKD@oEW)ra5G7p{aznig<2Ec`yNzzZy|!t%YGrHPig>bi7tIW@S`5~m ztKJ^_C*%7<}&%*qk2F`7|+p=F*x zC|aWh+ze6wn{9xmPftZ1QM?V6hFTp1NZpJv3nE7mWz-9)5rU%s)5yf7JZ}{W`R|ur zlJ=g1Hhzy+B!J4lr6jD&f@^`2AF~_4>$FjfxQH-bsjUrNWFk%B@3z5w6yyNH(9#$M zIBQOwUs0~#V-W@~s6v)Sm0j6d_bH`Ox8T`0fJ>r5Llo|c+#B^GkVFP0>GZN8I|@c4 zi8?x)n4^Y5z93?Fc695d`_?9d-@o+I{PuHEz{2k!%&c+~@MvaviWgrI=YkoCa#p?Y z0L{933_Nnq4o1if56+4iGSpjT#T=Q1U*b`cM5d3KiGpoOrqd2!BN=}>#%5gyT; z+Xp$1Xv|F;q&orYFYx$N7+7tFM~y5|YN8br5pX=AgclG3BaH}w=MAx4~ycgJk{mV{bdW(K?6XsTfeOI2`)Z4F?Uci`% zlhnhO%m_K6Ck2OzQfD8AWneBDYz7=jNQDm|38aPSNyO}Q9!=Dt@?9L)@lK1g0@7; zZwbL>HHbsvalO`K0v0usrDo?ZA^GzSIxdR(F26nh7@ZlVzQ85li5o;eCsFNjY^VfR zntWF(Zqc7@Hh{szlWBOC$QJ;QBZzqP^h+Ni1#b~!!SPJsi;k}%pizMX(+%}y9JN9a z&JZ`kozS7iRNKWLf}d=;N|GsWBl7dZyd{4 ze3%ggt}~(*R2*HR9&D!{73Nasl8NJxQP+d@hg{~T3BuOa!4oGsJO5PHTgGR?KiJua z@*C#CgN=YRhUF-kF|;j!5ff)X>VmihS-YHcxHWf~LC5MdxpA<+wY8uBuCFG1H!m;m zE$17(A1vqL!lA4b_cpCd4@`GfX(ZaD*iQEq2Vw&lU+zE|A*BBsO z$y<62GS6g*Y15x0*NrPF`Z8Q1!=`m{>doh?)djr)#(X=f6o`_tD~f;wSBdk}2%9L2 zMOIM7rWkvNP!pKzg78TU=3j}={{^1-Rx~!j9RIyGF2Uk7NS}bYYzZ!Nbap3P61%TN zW$uzo{s)*8GGb+g)n~DU#zjPu5dZCJh=jE`0-5SSmJ(w$+z4)pW@b8#1f>>gi!d|` z^oTjq$BZLnTuDycLtV@kcM;vYN2=GXUx(%kG`y#pQ>l1OxSxm| zt56$P;*+;&Ug&ogk&4Xku3an1Q|~M$3yu1m(G>_bhfG2^OS8RUg=_XWqUzKNtIbfO zF@I6DE73i>zae8Q+`6*u)mj~PE^BtxYrV*@qoNw@EcAgGi;8^&nlwxZa40YfUx13x zqD#I#q1O+M)~>QE3g{#Sok|o5Am$ox0&aW+tu;|8WJ*sFM^~h~+KeY6Vq} zs5T%FvneVg;8Q1OLZi|gNiEJQ;I#pn@VH$`a4Z38dTLU(D?1_1;3v)Zt3t zVi23~r>NIajw++#lN!9K%Mpr-zBOw4MBG4rOdN}t!zH)*yh1< z5z*{K)T`3jWa2-*WyhtL&dpwWkl(-y!Z-EbaMMHgf8wS-MD~8jrEs_nCt%)w?a@z5 z?VD%L@P@BV57Dd^!GQ7*l!6JB2_+QL@j!~Y9g<|hs3IB{jUO@8%rZ*>Mzx!ztlJs` zJ!`eR5C3YF zlQJ=g8`5r<;A027SvzP1&`36zSD56EgGMk@Pyb0fXaveyHGDMpg(}&#^IssWg<^rS zj=qG7c|^QGRF@+GEiN0!=_FXD0e#i>#JCvE=+R5jgweBjBnjVzr5##4mjw0oC%+wi zGzstxPmj(WC3iE8wJJ>%=!d{m13c%(wU}Ip6xlLd3!6d1HThmqr;*+Z`&uDXZ+mL- zKvGx_a=$=y`1$a!77rzbSNW?OSri-->5)Y}C_| zTokKC_qH<$=FlaJXcp$sGBiU&$H73S0CFa!$I0@@M3j;`Y*f;w=n|TPjOb=UuZ_Vn ziI^ejQxxM+YmKmqFfb0SHF4ghQDfNbf=&4nT$}j@&8Ya<3gQ-d*6{nQQa733mrB$> z>|&o#ah^cX#v&FNhXOg&NT(~>Z%q1cqNqH|HWFqCVqe-}b65w;7V-F~OQ_LKSoe!Y z11=j^5@0>K%r2*oj3;r>jA}eBqwwFWOZ>qi@=*b>Yu8)R*q79!ZGnB*PDJ7~NGKh= zDy6|Q5z%|$CK-h%F2p|^=S2&OvGUTaj8u2jm>BXFH8!IO?B_W3_RsL04qU*&w{WO> zN7vPqp7-oqNt`BhM2H{1N=cG2g;wJhtATt$W}c(5TLixs^JChA%4zP6KaaW-*Iv-_ zVU&LDu%WMEH4|%|H$=6H8_#v*5bcCPJ7hRS78)$q#bbuo!w_HWI3$Zf4Hjx;_vkpR z3YMd}5~mKEsE1Ewzw_W-UJl73OcS@k zO&&btc0$BJp(F-@;9TXnu$qyH{q>7ShLQIC($Z7I=omqq_YJd<^e4t4l0I52M8aHC z3LcpN4~;cd4JGIgG@;@+5KVt*&NrqgBb~6gX6|sm^)GV^^MbM|Dm3mP~C0PtUE^I^kdI zsulecshs&dn9wb3#>D{+)GwybcE$Si0S>G6Q#hk%HkhLkzidv!t~EA69S@d52ipMY zG(DW!BUTcs3&&}>Qd}5=9+?zoTXj+xgolX7EK=@OdI)AIuBAIDqM>3OxoV0+Q&Mm5 z>9{D2XCpR5Rq{0An%WXqHmdkmyJ7{V;f!I1Ad=fOzMWz+!ZN1;1EBzh(uRnDv^qhZ znEBQ9vr`XWTR(Fw8m$zD38!FUdvtFT)Kt%cOR9nJ&tk~IAPXnze36q>%ZVTdY5JHJ ze1rgoFXHp-Cnh9mbvSyJDwXPJPy`_XPVCo9i8k!|*x-2gV+fs2y|zA*k!%c^j$Of@ z43AB2{wm(rf&!;sAc^Q z@QqNg$B?Px$RL_EkmsT6Q*0;nsfadd`ZUgf)DvlQtZ^|><91OQQxG9kZiZF< zWcVb4MrHis@Pib83^vdIysbq_Yl9r8Sy%T6K8PcKVe$3LTm>BhY#tzp&ULPYKy`pr z2zTGEWEdkKCDWU+eCRGZdQB{tTHLU9;!5atk()+< zBNlgAF%wfYCiN9ZMmc`4xa#M$ytlsa{c7@CU;b0#^`P9S*K0-Si1iW1wH~_*0KgZF z0I+z{q}r&uc;4h*{r&px)4&?+J_@doo>fsmW$|hrL^eqs#c^<1q24DU?~{O3}77+P(n01)`Y|t3~7)o;^U{9fg3r1 zQ^3I&UI;Jnd!;831=*uGhz`(J#c38D=9k0$(+=Q7(uMkSAxn_e0CX5ZgG+HH3d5l- zIJIx>&x`4F%0yh4$ub=XJ>jo7-x|keYA1A=aVUjPj+{ywa{7V~xf6Of7Nn+UbtWZm z-`A4Rv#}sO-P7)B+Qtuld~A!g!*<|^5DJdy0fwLt1*$elTWU}Kgz)|`YZ2SxKVrNBez8dQ}EJAI5 zwoz%J7)exALAU;e(*a7=vlQnHDhPxB{NC&sKz()1paQuAKRS0%A=*KrV&&-gA2|jR zozn-|A_AyXJQGz2L0u*yVChjEgFOJ|^Zd*b=Loy~|I0Vp4{(f&PQfa^5w(eYALoib z2knq8PDMedGSmuXFb@&sL1)NVq&RH^#1lJm(UtuBKlur+DUpuxE95LVG#+sy&b@{P zSGAJ39mWh*Q;A#EfeU{RuEwlxIg5nKs!xb^%-EsmC#WLgLrp#%Q=jlZKBf!@kxJJJ z@KMz&z|VxmhJ_=%D2sDPiRZZ7?{Ih%BS(~}-G68Tgpw~64S!TTDQBU+lHs`OZ&ETIHZa-T&~Kc1FC7 zoZ@WhktHq$K;5^H%0noGO=QIa0UrDgZZS%oW!{1BnLq_`sG*H(dgYRR_ID3m$EW<+uY2&@1Y`@wX?epf})H~N#H52OHb%e?dlieB8 z&jxx6s;UaQhrXLkr)FlLu(Cz^Ukj(?jZp+ol(Uu4tx^sSGQ+W9^csDr{+Vo?Xjv+K zNdHoW{swf0JT6i5b^=3nCiV@*Vt{`6gNWG8i?cuU$8E?G4-)_KZfu-zVK#sp1OPb>@ki2=hRRl0ce zRkAyPQfBFiLw%p%yC$1z8tTeB8ydYi!K$fXaZzY!JWvqGer&6BtY!XXRN*IdO{8>X z2SP>V8%zB|DP4}9ri$hmbN-)OfJb0Kei~Q^uunc$l9%hS8*LgEN@>+-lX!qf-!E{*n~8hd-IKA=4OhT-m(-;JbyP z^8Afv>lO7Ihgz_YD!lS;7G$40T~rt+(=Mifmgxx0^T3Vp1>lb50KA*U#E8BG2W@E8 zn)k*qTa1m)nADaY^$07h z=7OvopC>Q>=)N`a? z)MXXRmMvLUaW68)MK;A4Y`_pY1VRa6ArO)!g%I3W!tSPTU_&<9kj;LZx+I&zm!51s zQat)U@45F*QL&x;{v;Gj=iYnjd*1TA&$}m7taM3y16>NTePLs1YK_SV5v+ z02a(Z=MYy1TOfN<1lmFr9Uw=-8AMrG`3MfZl!6E9S9^f#)eZm}=vfSN<)g%1`d596 zw%6bItsFdByS$q!e#$`shgCa?3>@GU0h?P```M%!0geVp8tAP;P{3Kk0{Xle-V$pH zmoP5Ah)%NKVk@a66eIk;#@dQ+M6dJgZ7#Nq)=W&#ueTVrDfK}}u)rFtT~gV+eZ#~7 zsZ;E1YY2}uX;)c%LF&iiBOhNn2&17*uD&sHc<@5rdf zc~sC}s`C##gnl5216r^S7NfvOfTq(KvXVe!uio1~Y4laqS9@y9OPj(|wG}?ogQL+e z{~$fwR$Eox*tah$J9>*WD|Y;7ebe;D&Qe?h&WNL{y}UCuqh@3DH$Qo8{h79&%%P0+ z8`GFk5p}OiX_&7j;pbsYtHpQn;>vFG7YGC*Ux(n}C}UgLSJ64G0+PD$@c z>H_vEG)WAssWAkNs}{ngTe7O@QC(mR4%?37MH&ny$}xZuWN(g;`s5+iZd z0V+JSqXi&NsEoCdYfl=D8Mh7Q9LXXA0xDdE0=7?Ugp5;_2jxL%Pb-?^enF~WS!!8n z2}m;FhOv_+##JaNsnAYkjg`up(jR#YH4yN`LSyh%BTRSC@SdUJT_X+ifeVwHMzS-~ zvbMha;#gbz#GyMDq*FuVW5Z>Ez*~{`_HNX5>Spebe&Ok&{+w%$vNl;>W9-<1`NGZ% z97L&CMqUIFje`jl75X)0I6~wiP$cM)g{{}ykrNm$z!>4g!DXW~O>PkLF@gMs+)PH4 zUWaOUnW2cCD+Yk8<}w|ZuEUa@4ja9AtI?n%5ksq1u6Afe-ytE;c}i{Mt7tP~7^Q0r zV`W=eq?8FDuLk*+JSthFTy9h@e_WV2R~aIEe%#%ZQQ)=J_ZRG5eY__dbltl0>L;-x zT+QX1H7tDUVsl+>VS$!*E1mdOxIj$?qY1lINHZJK_6cSIFuxR9AijGk8toWLPlfuY zvCP}7qQ#Q1cR}BzHA2c>;U%j-J{5LjFNagZ9qnzcfqEj42jxytelBHh^L=fnt7_T4 zCaw6d(~QN~Zhz^DIk{!P<`^>#@DH zDMVUmZB414(qUyg3!H#fKA*C!^;gYd;)ayk4la(IyS%BvrsErwn_^d-N@c%d+tGGC zE8Qjx3I7;Q?d$DSCe>t9CN;d)oWM>_x2C19F}VOO%n3I9g~<(Hesa|pEuZB0E2hFl zgZ({`H78o$xPQw;C#Vt5m=thIJ(%;?t}y58>V`@SbF&J{x+>bYRty&8*~%B%u5R{= zJ;q*xt2lJLQQr;5K$uimglw*teg2{kT&bd#bPUpZs{#KPjnha$5F`U>qu?ntObaNJ z$`y1j_KBcmnQBpsRWnLDBk69+bMO%vpt~uW{mKWSB_lzaj=*IfO#B#>2pjGE>dHE= z+fFJ(I+wOCIXfhFB|;yDge91%944g%4i$QsNop`@a8h>k!K%LT-A5+ODX2lv+fiQ; z9qRjwU%ISxW1wT`H0nG#{)Gx*Kgh{M#Qe>`p&kh=vN-B+OdA~KB zEnI;gi*Poq@lbMe+38X)l$VwIePH?n&ladFV@{XlWPY;|inRRfuNUo!! zRf9d-xA$c`(=*FknyN7Lf1Mgk`Oda)MQ;2p-(}~jw+;+XYdf{gTSINNEcO1rF^NUr zVb0ENcPPV02H33t*^Hlq=S01Naxhp5>yQD;H3kxi&;;$I9OVeWVBVp&fVL3-2 zIs#FhLQO!KS1%<7jP>#Yo9X+W%mdH=I8YhU4qeoW3FD#rZ za*C=K%!5rQfzX3n8t}Wx7KUDfbui2lw>EcvdDQ)x)HJyj__iT){5F3M@@Bm*kJY3H zV`#tybvD7C2->Ol0Scdy4}jBugrKN>EBcqln`>GcJNxQ39{cR#aKW`*n-|(cm0e}` zvcdl?Xc_IUtthY9%}(OBdbK35p|_#KtZk|bdAX9hv?NYobVg(|+;=WNPZY7;%J>mB zV8#uYafVc2z#VA686^#zeJIFEPEKlGtAsHXFkW=7YWpe#yj1&nRC?3YGD)@(D;X^u~G3OBbGr&Jp`2|s}xbUSH zy)~^v=h!tf3mc|(HFdT2zOtovNAv~uKp}U=7W^*qSb@u3sL`J3*;Fwcsw(rjCBseO z?v1ig6CcEcS<-MrY?tKLk0sdP{aopN3v$R*6$y=pKZEkx-+nTCYr}L>TAVyY;tIG zaU{~yP#f40epj|Tn#B7sf;^#)kiKPw*;#@X{y9B%t6tu%KxEN!Qhav-NuWqjR@`!R zwK+a364zW_^b2}bK&Hfr8?~}fB4K+~qKsY6Yn+;nTP z=?_n=d-{gmr#tGrEtQXo&$0iWb$6H5MXF0{8h322Z_#(^w;n6sf6W71Mgl!rU1wcb zary}2GZ;vYu=8A+B_<2p)N`O0$j^i8L4u2sgaV1dxJ+=zWI|HQ#71Dd#R||efTIS3 zRi#7B)ge2r$U@8%FD#C{-ha)Ou3&JnZ)Tj`98KX1z)qEKU%w->Kd+-P(i6Ff#KqFr zq*Qd;Bvc6>IGe>%l^ql$kBnAt*hi%?fJzYvU}|O}+{PLWJUU864ET*nex=S@SZb<0 z700Rx*QQRd(VbrV1#3JD2eR30t}>G+z0~I^DnNx(@N%LS9CskQtaPdnh;qVwf?!eo z$Vt9e?rkLJD;Oba&ONiWzC&b-qtE5f3{Ez#>$Q$om(?HNJUczKDf%31Wzv1E`A#kC zfu#A1r><*L-Ql;(8ms&x25m#Qt$R=v@c)4MDH3kF;LJ=hYg7kL8Qo?|PyzWlv zQG*IZD`%VqKMpyMsW{NGkV4WENsT!bFg{lVS2H=Ctyb=CmTv-hI^r1Om~V#0EB?dc z=rR3~Eo1#X!=3$|O_i>q>hayFH(dI?yzt`aPUamf8)y!7TOz50kw3|U%M`U3T&}R^ zLPjdwP#R_R3o#T?(uoTs3piAiJg7=BZ9B!i@&$(9A^x$uGoE6VW=S!j z%tbECH9$)G>f&xD#hc-AaJ2V2=R>=*3Dy)uJup-erW5--Mel+u_^ktIM1Z^u5d@|;2^v1 zv}N16%?A&@v|W1>pF`Y8h3JV#*iWaP90znC730*)$|DfK*cYg)tNK7GyPD^tarXh0 zrzCp$xYDRRkl2i$eF!=zIz@E$*%huA9(#CTjeA85Jjnij^$P`#Akvc^Vi!hKEF8Fy zWyK(9SJd(`p~RKW5MOd!t*dShFNUs%gM_Zuqz97sNDANIC}ZrVG4b+_2@*PKd&nvr zEgdtJHADsvPVc|>o}-!0=w0IEd)rH<_st9jdP`i@Z*@9)f|1Q9cFvz-(lwFDMbp&1 zo2yH6Azw-V7cXI4I>3}S$x3P-4lNOfEMRq@r(qf3+L?{HcJc&CD^UQ9w^{aUIdMBv zpJ~IbXmiVsod8@Q;4_m?E7#jd(_}*zr)C+VS)y-}Pp^pu_Yz~Ckp5l`*fdEx~6 zi`!Zd9~R#u_*n|~)1G&vp^JUF{NMUMqv?$a z4`M5}OP;XrERHC)3)!*7=(U9CAgTC3%i&HUs3x~Uxh65Anjqd-L+Dh<)T7ItKakjr zgbwT~TLx8QRTK_IuSKz<7+e{4CU#DyIDY+0-6Orn`^2G<(%G3K$M^4zE@JO|q_?AU zu&W{Z?wN+giK)Z85_Hyb;ov!oR#Yz?l7xWk!D+0z)@i$=bT9<^tjUPmiQhaBF0!GR z)OJ}j`4)wR2-VPKg`E<=MORoPP}gPkHBoJ}iVq$g$==m9ceuByv8(-Y7Gzz6>ssqt z+IsuiHtywz;wgV{x~DOs*R=+FiXxH5ipugxePwCGo-mtKhACi;GK5odAg_oN21!HI z0}zDT{n)g0oD=jwSt_}x9b!VK*KP=}vus34nmg21iEo0_z-0Ac<&rJQ*dCOZEc58- zr)-wguDs3v8vQsQ5*x5NJpRU-p>vAB?7#r1j`Ad=l1`CIxv{&AALkg}MTeUwO)= zTv7XF8~c|p%XWhx0hor~RSGwp_hy=Tj9fnMs`U+~9GwBuU57cMV}VrBAy7>t#yShK zK8|uI6MzefS>t$H(i2IIAxoi}mdQ>SNPVuDsoe+U7!H@1G9HgRk`y3A3HN}DoqVT0 z6c}PJMW3!5SikGYMw>3h5bWuwtqfzJTefVGB7CeZ15CWTdgs{W9{686Tk1PIs-tiG zvKb@*Ur~lG-i)E^1-Ecb*qEP}Fp#q%96N4@{{0EaBR~g($%Zv8*L+ zp;#jf7tCdDgWKUDc&v}E4xe9+S;;Cmx9wwoCcTsUnAqZ5`J?TvtZs26ceZ)+i4*fB zpq;NO`no$>^@*?g8rw(NZy?v6^Hv?baLm+`YJIc3k)_g|qQjliiB9DSd(S&F(Z_zvvQsGjGUsZf|6_5H1pGKn0;4cYrdmE^HFzUYG>MY>R}njnpkmI z_MT1WGMP4GLgy2#KOIVpPLTlRM|awQ0q~{3>ptK zQdoN2KPApWR&lRM9?rhzj(D4-UxTpHZiC{VY0J0gBj2BLT?~SiLF<6(?=I#Sp`ZK( z{BHEaV&!HWkQdB5b0%$UL*bj^Q%6VY_x4VFI{T57jVEt8ni4K=@X-K1*Ap4;{0;oM zRiQpvy0ZKE2u9B0Mo@a6P5J|931sIMA)De|&z7U-N`u7TO@)n^M61oE13u5LxChZm zau|Y@rx4yi_Mx4VgXXv9;Q5=sGZMMKZ@n1(87A__OaG~KBUjjw&=D71Vz7istzWA{ zUN}fW;mS?rq_)X@Gec7H-jRZ_vUff@fSH6-P3&j%_XWs1E2t_+>Tn8WYZbtD{-cT^i zo;{kft#@MIz`(A*-`Cw}#31Dzu@QqT5cZviBVUSNC$K@FB+^cX%LBLQDprVFRmzfD zu40K42n9Tbkzk1gbh3wdWw=7zxH!^qVC?9%n|(Ri?m%x}pm#hv$ye*cLwhF2uQBu( zBcbNr*)Y@LUPRXg@n!Kgtdd)J5HgryOH+|PH#A7CRyc|#pb^yU13x(I5DEh`+#jkP zB1>z6&kEYpmunjK-~}RVgk^1$UWiRg{yHeoUeI+zeYUH*KbeJ)Dt^cr**%G6_wj4! zx#852$k3KMr(HkZ^W7aAW~xg(9ya~?#ZmTZuCHlqSO2cVOTwkz;qG9d+*SA@HZ9+r zg180i22>}w%BC+^%{Yqxzo=>{DJj`0*;HYxSXI@WLB9+Ik7;XMv0;zD`+Ln&q^Z~Y z?ZuJW$u0Y~vtw`kI{lfudV7OxJNo%QP2!HY?(z`2t3_vje9mg&@d>gO^MPvwc3UGH zATI%y2j_~#z16Y`O@<4(om4w<{~B!x|8T_@(t=;z3&UP~N45%+zMkAiZVm#~qs!J| z)@&{$s-}~>+zxmzigU|1wc9U8py=ug{O-G-W49e0`TJ{IUYYxJS5xVKu;Jf6(829K zxDKPgWI64XwRiE;x%A&+DW|%1>IR_Y+Jg-Ug833_#BY{ z;&6Mgf|-y<0(>K&bQ&Tj8|CnDRV9Od#xN)3c2Iu|3xu%oy!37XE6_qQamHM#RiIT5 z)?>JsoB|2w^oKW0?mF1k(X)M9Pj@S0?>2UC+uprb3T)_VD)#lahc{LR+k0zs+uD1! z)b#9Bw2~t9Q7^R1ww#R{d0=}=)b{X0Cf(*~a*VbdU3xUbW61K@> zr?Um8I0;i2x}?+yGqfhM!(|TEn2j7Ru=_C^YTGrM@%n_6LIIK=ex&5nM7<-=3W5M! z4RU;J5j{K-*i<*NZE$EOzbeqdjkO4%+cGxdFYLm}=(|9QEmJNiRm8~Ttf1b7e1u#^nvS-?EtR>3ukJ&W`i z;1l8ZL#NoN*NwYGtIy`W&^vVMomn6{JY=)TcG-M-PI%*n&hUJF*1-6XyR6#ncr~o; z3x|fAXSdbN+*4fOhW{k`mFUlx&LN1JA%yt%E7H^G`{)G2Et!Bw6}MvTDA87A!@!PO zZE6ot+mryL>UU+K5&gN+J$e|t0f^*VBF zDmk1?$s)q!i|kHpRyYf$Y0uJD5X4a?#B*v$cC5&$IU{2bhxbqhO<904Xz>31;)$gX z0a2AA;EA2x;Uc^k8BvNOOAw(miGU` zCsh&m_s4-Pa;j-p8Fq_7uf?olHt(Pr1qUs*6K0sU6D0^qno$p+mJl@Z zc0!5iRWUlBy=GtIy7J}t8_D}ZS#bik238OicyGY`>9M2sDo!kLlVKS(SVlVihPVXe zikFQjzFc&??ua#9r40bIupq(kiZBv*5{(&(h%_aL$dHNA}ZIrj9$Wf*3 z8qILe@TDg~%C*v1XII?;&QBhKJe|A@3M;Y#XEnRz6q=V_gEY!fw_THud!u6{eVVdNmk5BIu!g={2WqEL~?oXyP;g zQf6jAB~ff_L6btM9$)}SOEE6kS(;$grCG`QrAwztvk0k{)Ey+ph?U;~?1xNNw{gW= z>9C;E_`+ZH_S96%v|zEM&e3N^bHh`sz80bL1;K0(%+rMJy4s#6zZ)incY4dt9oyz- zXSVE~-aR!rv2kpKKzki+eh0)e*~S?ZO5=_>Km9YtIOU;i7Fo}ewaybA?-Wq|B**Zc;m~|=Wbdn8Lp84Yq4LpC zYfV{gBv@S*@b~(*L~0@yX+U3MEwGrod-OqDmEDtO*B{$9ajSK}xv@VmzJcA!3o$)2 zwyrb~C`D+55Dg#VFh7IPF1&rQ%A4shYiT1Y!L&>|$uuqK zh@4aP6Qih}m^v%Sum)MCHPPdU)>B;5tTmX)BvzgW*2n~mn+}TBsxJU48BQ~}Q%+y) zI}*Q-mCppAxTP@&7+|^VfVO+mDUBdVz8@$94VQI5tJ=Z}K;Z3M$1V`hUL`Itl`u&a z;`*yW2hv)6R3dbs0o)!>UZ~8@vS`#ZjjKyp3iwO_5L|#-VAdHir%)P2ofe0XRN52+ zH2nm4NeDm2JWBFB;%25bSoQhjCjl-&vMCG??Mx;F9EhuD zz$fX%B;W@dHcn~>`7a|3sb;pieXx5}G!Z!`WT653bO9r*%HNTM zINTtQXM}71iMYe1;~f2D5In+(b6L(<=Yf4u7Fq$0!@G>rq6IRKM!`XLG52yMRujoS zaEY$}q;K9V^7$(9_ zr854*vuv11z#!G%xfarpob7MRJM~}J281Z9nzJS>gm&jTQHF(738#{QAyqJ@jEv;p zGQ0;&yj1}r6|o1d3Mi6ZRmrpH;GzdugjV?~!6NDnc6rc96FC~H)`X5kZ;?F^@B=UX zmlATc!Vmo5`O3l!DMdM>b+n?1#|}f3ke|lkr6K`SDP78}fjCQ<6;e{{DNxx0m^M^V zT6t!dKb-U&5^%_?Omd8S!#$8<1b&W7vA-%Pd0gHd%y-4uWP~3Mwgu7H%SI^K(s!2* zNi7ikVd3Sly`?$OK>6{M3X_{7vUC+A-VBhO33)cBN#=uulDnAU)Z!3j(2~>K5lOrp zxJ^o}%SB=zj2tbL!mE8r((`g=URdCXI*q~NJg84dWwP_kJV!h?lDwVE&0Jt!;TyYL zn&c<$>z_3EX3NWS9Nv;@Ke&4uBU{>r=1R;;vSceymfRalmK<+HvScLB)#)uLbUC^l z;pYDQtbt8gw)%3cm3hgf(ii9FUisDC{Nc^lQ&aLXqt}bD>P3`t!~BT)QIx(wRH+yYP&h_pdK2SGf@dKBLoPnt1fK&p&^cjL zL0frYW>#)xQ>!JduEn2`Q&s{xvW)hjP-SkZR#TB5^n6)c;xShkOMId9SzSkIXr4EZ4){ro1nwqBc@wl%jbwtKCYBJZ zcumYY0s0eMzo+4H(8Clf@xdon*#_~>At~`C&rOT$T&ePPI68$HK z)oZJ?_}o?L=0LVjv-&*VTk6B2KZD) z|Jk$efBYX_VHtn8=RG%{JcD-=F`QMrAIGTwJT5v8&miT;OjflztMW{nF_)a4&p`<< z>3CRRQ{<<|Y@^ED)YLgEclO%@gd?+7JUKYRzCAH}>4->l*z}>-#rGkVc*l7lt|bW@ zpNj4{Vs9N%mte2e&T-8k!=9cF*<<` z=dvc0Z3Da-Ir){}(stkus#$s!6Gkv7izG>@QY!ef?Qo-Imt$wx0l@%TBw(+%-udlM zZX1by^N*)~#7;!d^gR7^4+uwzhN}l>=fBX=Ea9#Tjua}~ijL9=B338}e8~OSS|D04 zS5=lfOv8c9jV%Umoz#X~Ug}z@zXqmqN^J$NG<6-DE=$OQVMQ48>~dc9Az?Y>%>@JU zY^7`Gv0D!A=m}5%{Yd-3226B**r0{uc+ODgD7yWWPZ|IY77-I4D53b3I?eQZG6gJ7qz2PVLKD3kV}Rw zjY`&=n2ETd)ROf;;@BP7GdjJptyD{xWi@tn1!tSt_}k?*Q`e+*PH)+BXzP(aZXCAXySwA)?Dmt--SwgGpa)bT;@`N$*l-r7P}xBc2P7}x@m5pfmdeB{2taHzGhN13d+CN@*?9PC0M2rIU*s#nqXIxqR3Nznx&|(HF$~doEoR2e9q| zY>J=Ygqq@8mCk4^b{w0?q())SiiyVWX{Oa? zG}TjKCq0#{&3AFr-sAn>-2Z?w-NM&VlxI zOF~2Q+_WjMb^WpZv)3Ly^FT8@q@BBAeS7y{^xGrO!$(?<&TqNpLnqI@jzKmF53=Lz zO$;(aAd0bs}ZA*|w^Qn+n z3G4&S$d}OFaiuq``tVe^0NewusjV%|^|i#-M5&6DF2;EW?0l z{b^T!b&qRi&NVk*G%v1q4gKY5Y1;t*!CcWizSboCg8h(DE${;Da8gnx@Gb^L4n3iQ zxGFIw5`-L0?4!Tv>f%rRN{lip>U}j&iC_E`f65F7&d+iN&MNsfMbMuKx07C4Od`+3 zKgx%nppf!Gc|xBBA*Xop2S30QaVAgoJ^aDj(c5Cud!Wmz%%02MlT7R>E}aoBq8=bB zIfPed10~8+al`iOPT;#DeV480{nrb<@(2((rrDAeV*YU_|8M+oLjEDwiAn2QsS+zA zBgXd6ZrpbLn;Yhi(Fj+3t6TY2!V3jHVGewqRxF_tShO|1grN}ImNdYIcYV1Zzep0m2;iP;0*N+_V#Q2=g#%B|JM^8VK4W5>|RozQ{5ax##QW$JpqIl9hWE??X37}q^?+F&l#f(} zLM6;z{%^0l&h4)INy0yK=m$yv$LlMX{-}8xnv(<>ktGxX-dZoT2(QZ}2`P1mLJNCP zX&n@R2GO_|4oVq2^ zVl!z4t&Ql0nI5s=5Hmmg@aD%JV^2SezwnwOyvFj^yvFXtS@d83=%bSlKdioG=|k9K zFN$BrZm^RPN_B*J!DRVr@pxFhqmO;ApSKuZ`jfO1Crl3;yjgfWj5K4NF$-wFG{jWO zQ4yjH{uC`}$7PH(v>Jn;*@gOvj6=(?BXl~>ri5xu@Vm?)!#{a02f9C?ohFbb&_CPGExW$2=%03<6q>t6N^jk z-|PIBwh?{-%QT zyxgY!$1%z?`YDc`$@@r!Aug@z?H~*}~tw$->qB)vUU&`kxQbf>%pJL`wDsh!3u-|wQ!6HNtg<)zN(h!4f?@>!bs8l zv`sYinWcZ5KDc9e{weeZRae0{^Q_>2@PGV5hAjnVpW>~^M(_a;W#rOMA?p|Mu^E)Y z(&;j|CzI^#qId)P4O&d`7Q!sG*9jve1`tsdCEaOiN-NG=tZa!JG&>Vy%$fO_`FSX^ zo8?50P&LSb!;)3b?DbA(Fchi>@ZOIwKK_}3;3Pp9VJ$FI?nsk6EwgPjyVayI6*jgt z_;tqUYd@W6WkYQ9v->OCo{hfn@z%#AaIGHc?0qV#dTFmx^* zFl>yRjKB;`4E!xS;3k81OujDepvl31;YUyi;gVeLnK62;nZ+o<4eJ>B0Iq+4H<YUQy+*o9H;MJ}^HN`q115-+udp&-{>0|4U6%Q|*@uUpsKPYxv9eKlE>3dk~}X!-?@9 z*li{uSJ-+k8$fUjhCDmjl>c`pRs?J@#Qp%4o9aUHX@~cbekb9lj01eZ;Z6Ww@=P#z zCc?;}&T_&@V@8%bTw*%7XhQHvP``0-B#=AfjLYtcI%je5ANmHx&}378r25c?JFdHS zcHyQE2ea?(JU-t)($zjDZVUe4;F%BJvSog;ah4=lA@;}+`V9Av(0AUXhc8;$CRW^p z0(wT91pVQig@={@jCM|<(>!cOYJpj2cEW9)3AeRh(n)qZHirE;yE$@W&W`inx%Ac# zdOpi$d!s*PAGq{PSC=>stNH&d^@|34JxxHNGs>gx!W{u!k3$qH!eQ=myb%Rm!3Ok9!lAU?GKK-rAGFBe8wz) z2Dn~{5Y4pN_hBt0fcwY_LUC_FqVJIT1A1~e@|eSA2U-IIkpk@d(f7anGTR;PID1xn zwlDfb^q#&xc8u-m!<(8=VDUHXdPu&)a2{E_n4n~>QVrnPxvl;RtLaC5gQYK^;a9nq zSFFY-un}n1`GiCEbEGU=L|lSH6zicHn)}%2`|uDG+F7P>j@=6#Y?Z79ne<+*@X*dp z64uBK6Fll#YL;Bmt(a7Q*bCqiM!|iWGz+4Hc_F@3{1cOIwPw>~*x>?f2nIv8P(AZV zp3t`!Hm7+qKHjk*dhXgcPNcC9N5A>2bk=!mr&#;7KffZDbYnJZh4YdP;+6cx?zt=H=&G(C?5g{nl4+sV%+7c+?E@|z92 zK15*zxQ3xno@lJ;>vOuB@@s!pv9)de)ZF@(Efv%I)=$rmwN3u1v8KPr*HK;@V0Uh6 z*;(Loy)W24^~g+H({+;rgY&KX%bIuB)CRF4OG{f=i}*PhgWj-Oili9H3OXr)fF7N@hYY@{#O;m9g18|}>(KizMvth)4n1~=&jj1^U4 z$>1iuv<^iFf@}%1TqtyeTeGvQMq*d#!^C4v=ommg(3b%v(-IU-tJCq23n`;o-KY!k z7W|LTRYHjh%ujut-AQr*)8nW4LYFQzHEyiBJ2z5Y-#rmHQ`qQA{&R?xmQD_ISI!JD zN%;?azDYR7ek0byzCSSZQW~ULDQ-PcIt)Stz2OM@2AdxT3Hl^itO!3SCcmH`mTyR8 zqZ#xDAl5I_5`l_D&j6yg%tIP7EGHh68vaT%rR7Pu&wL@SK|r0b+a-@=XE#+;>?rK2sMuDR z{>m%!=gwW)xbf5NC-ILC(G~q<^pk8oTMu}0g-{^w6}O@jcHG21q;iFzfe#29gss9} z;Sdw$du%%z7*dEkIaNqONiQDI2Rdc}eYXGyPrzmk5+)V|tB`KDrjsIwNDp?e9m2$J zqumU<3vn+8oB@uE1spQK!*&4i!L2L@l>*oc@oUnX!IAs7e#~jhbWX4RNoVF9eHB-0 z*`aF>EbQ5}ZEoxI=1m*ckE|Q$>+b4k=dO;rs!BU55!yZ83|kiVBf`^M=D3S>Tn5pd zi~o{;mP!9XKXIx*DOP^uPVg4t5b~Qk_B^lAhuhoj=RcC~ak+4x&V5gIaW?)xo|9qA z$+2bl`5$xXpZ1L59Qs|(EmvM7pg3 z+*i2I`TvxpE{+BU&%r;Aespy6<}oZxZ`UyUb5x5GG$=z8t{&Xv9`J4Ti$taKbpe^$^tt@C_M-2A0m9Fc(UT>{<;dhvfe- z66X-b;7g%+YC)br(%d9yOsMdolk4RHu0gEC3}_fN=a-y0^@$IllyTw%7@yL72(*&$ zSjHbEEx+~(kIIZe^dxr;e{<8=(E8?{tcAVa*0~?VMg3AcOg{y-}m}i)@2gL&9Nz5ODR1TEYgd{`9I3!c_v60H3RnO0^K-6(`G8u)r>!^eU_JNSKJ#Y{6#a zwiS?T1ycF#Bhi1F4tAa0(LdQZ+-F^1Qx@oI+c-75j&)!92+t^Ff8Sh?&%`?;6ZMN= z46O5)6?QbYMUY#_c@>@kSg2I^R>J3LcU>KiVnDhcJCOv915dWtUGi9VIDGHaBUAwNnwzAxdWKi52G8~vWV%=2?H95N;(GJ)Z z5czr?cL4JECO7He_jBgvHjhqsuiyXFttVghbk*kkNIV+-OkIa2#c|i{{E@~`X;n!< zHp^)<543b_+CIDgvBwrWON09(kz)h>lDOf>-i^(DwVt99KBBL)UW_Q60!WA~Ap1_y zW}#pT+`1x^3v+FMs0x=Od?AwV zsw7FmgvI6{7X$Z1Blj6lRx3!aC{fZUYxI!2DgiI>;E)yxpw=LJxzN4P8YAI->_wHI zw|4W-LjI}*2HuED&s$8y14~YkxOgQfDz(CM=Uhb?wj8LVL>Z7dV@2{=<$0HGz!*g`hXAwvTlRwgP)_6zalT+bBtpL(a5J-o2(ZQdSM6P z-!x;{LSs09TavatCMA)m7q<+rm=1D0po$OxB4KaDX`q_E+3x182~@jJiXF?DcIQTud3I?Qp;z-+%p}5K&~9TI;S41*R+zl7>~M9EX&swK zj>OE=Kr{e2VZyPYxil(ssdZ4@Ao&<7DI)B(Xq6a>{yxs2OOyD|kwo%bn!=^8iFctR zWx{ZH5C~gZOm5agz=PNvs1JgE==3JK;!!k^96TV!!ljChs z_D4jzF(nxAhlsjGZ3)TS!bEndMr<-TVn)_&T{DPn^Q`m&j@L zuSR40jpy%Jg~*nK=maOSm0;bu=qTD~AIZ{Fi;-ck0>n;767-`w97T;r-95PfKx*re z^LV*vBR35{kzmt{(FnoR;ncRjhbU`bo!wUVJbQ6n=(4;gf3eRi=RJXhk`jOTIOS1d zfk+A}{-6YMb%;dI_b}Sv+WAfp*biMc*Qr9JTqgpI1>~W zlXyVgM7YspmopHB@$JL|z_CXp+-MTN(UKlbd;sZQbcMkOi)<$>FAbYEo)jPtlWf1z zeV(-WICPEUOxfGmgX=C!lKVW9F3Xeq2?Shj#iH8CYl%sKkBlvF$c7fx&$U{pV0t3& zu-QDI;v&Q=nAa&`!memET$vdG>Fq1~rY1f-r!w9uY_}xB1u+w!u)(06J_`Z>#Z-Wm z2`9ZE5na6;@`7ENfY}Y_(cJ`h2dRm?VdAgJzXkWHJrk$GQ^dQ)#Ux@5G5xUKhutA& zelvmN_IsD!VlN~U+(PAoKs+G&U~#&I@eAoDloFs$QvL;n=OAK^q7AtZNrBhQL%@CabHBh!^X&$BX>2e5yO3JdaN=2#eD>i$K7GTmDwpfK)b{ITK= z?AoY(RTkObJuiN3bspKUScXx0uTm-IOt75eMpd5@m10?P!dh1C1EH+y{+anBEBIgg z+wW)krq=OQxnKF6`k(A1pZs)TvrJnB##AtG92O9%CRZI;tKeabvGJl>2uA{}@=L_j zKu0E|rWkaZbZt5|mxS}?;PgOx%qR7glL~|P;uFmDYtH6MtQY6H6e3ry>b=Ci$WNOm zT!e!~wgZgMWSfB)20eUh^2wnSOzXwv3VXCVZ+{>0uznM+w+(EzJhToZtPzm1w($WA z;;-?318%SzFF4aICXGrS=fwp^2Q}`b3JE&+UFfn)Y73nru^FmB z84;>6x{NODFDUq#4qJMv8J{(H%$O6q+}QwPy2+NT%D(D&xE|!Iqm{#p!B)@u+K5cK zDn251P(EYlXYa1wUNzQU6JuJ9aCWuzj7Y;JI85_}=5UBWS*cq1j_IHSzsB9M+&af8 zfpp}$ksy#(lx{H_V=Knhc7;6^haP91+>zV^r*{U~L(wUA-?#F|I~s4VoOy7|Eh=m3 zw;(2=zn6TSh*OVLo>4eczd`I-IzXMDM^Z&5MckmEAmoFe(gllP9x^n@!6MBgoPsPF zEIIiC!F;M(o~sd_KL1WK+iBNwo>OvgJiy+>gjji)kHtO-L5zs^J_H~{X%^qK^KWvp zQYSEuB=a2DPzuYcyt&w$(cf~K(mUC`7uj^ronR<+c-ZF30p(X!r0uIbmAHX zIIM#RMH_oTIngk9@|a9E%2iIMLhI=eb|%nzdZ5k&o~_q%%3zpD*x6J}j$7Zem~YNJ zme`6{?8FhKriraUXa&dUWq3V_A|;X0a~c9NiOdt+De_Hv2$ST2diE(~BO%{FONWmf znBqYeZ2+YmFJFLp13=ZL3K%Kj(#=H$#$T#*cNhz-XWJI(!} zb+r`*)isR@nP>DPqPbfo?5wE^))aSyl^U1qQY6CXXqvr+Im*OVg8KwXLW;vFrbz&8 z18Z02N{4a-YYdJho~7W3snp7r;vVb}JcXyJPbpuE$N290NE$r(( z#-3nP@AmrY@b0PcYj%?|LGJTgI5Xu#XW_2F0ue7|5gDx@1gCJG2xdxBd*BfT24fz( z3LQ~Afi7x?ylA=J`>GAYF8S!MXc&JPmH^8tG;PL?qo4`xhNi(u!fa&7nmyIm5 zLo~NBDecid5ov0#Eh)~~-MJM^l6QRr=G_vgBUtURNJgSuJ`nWoR($Jg=ioz$ zt7k~VC!Ej$KAYJ467h#ANorJ3*#-ZA1W3_o2t^$XtNp7rBnC+UF)#Bf3IJTitJIZQ z_RYk8apFi5IW*li=&cCUz^qB2iR2eCJodl%Vw@=Q<@Pp-N^3s6Z=>|CFpGmbp9@pqnBhCh6i{Mk9$=K*In@Bq=Hcm(u4M1 zG4v%l9ZOc~_u*{uoepXk2ow&a&5_YtYD365rXlN!TLFYgjWvVUg9%lYrT&6E!a)MY zN1Pr;V(w;K%Ou}9b6q*G3%bE2_j&;$fv|bnTFmNFgQh3pnJ+ArMBx>#XE5 z1+kYw3){nh8_K|aBSv_tsL-3@b-=l1fX*ta7&M$SD2olZhmv{upAhZIzJX(=!0?P$yzlbbiQssaudCgLc zA`lctL2EWb%$YI4W-39cSh_GiTAPCnHC15O;nAd(<0C1+?|jAca^=8MyTYgP|E?;& zR4sF=n64aUqEWxYHep8rh$b|IYk^e*h6!WlUWm8{9A&Tc7$K^0pngM^f%1|w?4V6W zc8whTXkdz;CKh>;nVy*Oh#G&2(LBYYP~@yUu6W*4;EEj#_c=3V-@9rEL3!jpN_g>* z@*w-*m56z2D$LlzR2XjAR?6=FK^B-&Kq29BjX*XUh>L;n5Bw0?TIU;fgJ%-JL* z`{y}bk7Acv;m3R6LJ=UIvHESCfr-ao^|0ggvK_}^HI$u+yMTxXR2p}R+Cxc0WPu-{ z)gD{+1d=grHlxv2WGf{fDJWv^OHTeNvxoV)_o05_eX8wKjkwSz-L_OZ?DYTx|jFWGgT za(siOL)nhLwlobi8Ll<~S&fiU^Mlhlwkgl>7NI;Jmxsz;z z1y+9+EP|wdX)xL~9;S5&$`2zPF6j{wkA3+{Ppc1V^;+1fmw!63&jdA5sHMvMUaL*6 zHq1j(m#J<8_@GMv6StO>a>GT@hbpPu@Wxb=$tYJB9z8#I@4(h06BeU34W(~TfH?Xd zDJXW_U%jl}@WY>ZNQ+W?`=l<`*{oI^CL#E+J>}3ga7r|z40F;8Nzu4R{ zM2^w|p}1JHq!#dK;HI%5_mop~%b1&h-UHMbCO`?)z^|Ao9$p-d9%Khz?3Ak*pMw^K z`Y!*$nplo{-EjTs8{$*wDpfK*PL+(+?5Yy=SU_ds>L1zhRHOuoFZ^DKg*TO^%0WnK zpWGCf7^S8$K6h^=%uE_qQ=on`=1$IY!6m; zmc18MjSHI-s~TVY(S6#{b;)Io7dezd4g}2ShU=8 z%M~25*SM*sxZP#wgU{xGn;YbgM9w6r*F71KvR|8`nmS6kq*J>xbjE&K1?KL;s7qY< z{EMF2)^%qiEr;i3X6LT$s@}YtY7<|aLT%y?vxkbR3JR)FsX#4F92ic2QgW6T zC|>#oJgiip_!tTl$Cr@P!64%ryuO6(p_7V=XypIknQ!shsU=uk>^L6cUEV&asSImU zOBG`o)hs!A!AM3W!6is96(3m~iT?56#|CFnta##@EuDdp`Dhm3k1v1!z1mH^YO&(k z5HB%;^YbDfPM*+6;H4VKNh(-uF!g~+OoCUCpQ2;{#Q~!ZyHe#`YlN7v0Rl-V3b}^? z0_3a#qfn|At1Fhc>0IpWn=9ZH=KpoYM$5<5xatX zQoOm;pu!Z2)X;hmQH*JU99RM`E|nSl$DdHtMmC8R>`7x-&zGNOfNv}1spLW&XNwAhmIFI z2KR0XVK(55Gnsf|u44%GaT&ABrZJ1fZc#mREqDj+*uU)+;dc3H4V*F>J;mhK=*Sv< zz-^s}8ZGrH@MOS*De-w+MK+pBN2fJCox~T_Oa{=Aup&_TaSkAjWAh3pEApE7+$Mla zn1kIN6@eZR?^zuA-vu`R>w=lVDJq`40mYNA+cdXzXfpaZYh&VljG=ro3qyAA{~7CU z^sZ4s8QY1XPhR1ku#qwyVY^eUDN=B%<+F{`kE}94#Nd^Zu%UqXgr6Nic8-_9(TNqD zQl9{Ll0yhqdkmhg_!B%S4c`X5hSyW3jYgs|VLB)P87f~{EmFj-ou0FE&^=lWmrL9 z&-A)JO6{WCisIKAh`a>=rsGfn{Lm#Jjky>?95r#_2aGFJP#2PffD-*@k9oYPk~}up z?Q1(Yw{>prc;C2EKsitBkn1HE_c@IBpE~tK=H7Km9c6yIo>eL+d&!o}ac01~)yH## zsAvFJmnoui03HcZEmw?k+_o$@@Oi1zRnR6$J*4xRTu*tdhYO}deH&M;s@$`~{=QSE z9=7f3n~W7#UKB|uuM#@L?Qlw2EvO7nbEwgZ8eAJ%^i<3CW8U;g)J-DIr7Gg6ahu_@ zWi}M?yIcwEhLFn#^MAz^=+>bK0z5tn!iqfz^hjOVx`9E~)p~e#c4qEiXU){Ermo5o zHXwFRZoxH(tRh}Y+2hl&;WqgOe6N|`fSzKe6Z=nfZ-f_*w643w2*yz%^o6_qg?ZW5 zbfz~TK?^x|m~ENn3Jx6U0EVK&=3kHzyK$UYg-}8JBGZG7%tym_29M5ioifhpt_+Od z6zV2BKw*9-`J;3fIZSq^J zk>!1R)AY;##TNjgeF!~w2wTG@1j&)z4xLbuLOEnvVe(~x1A|e}&JwPK0x*aHBrFet z7zw|WiQkZ9Z1WVWAx^Fx`hC#j-F!(1ASMnijz)i8#{5|mjYESi)5m+F+qv-g{>PhN zscK>+1D>gWK`(_O=t@uUqROaGjR;;+QDp-qI8fBckBQU*OaQ-ys6PtD3E@aVo^(2^ zY+eEAA$UY^6;RO7+FV6zO30>{%dG`HKrEMgIfWQ&*KUs9DP198Nn)>L$-m}z=s`IR z0?!%dVXNiP{;8Hf#Vc}SFiG88?FkC1fbATR8&U=BUZQs8up7GZkgv+XY_v;UYfsy*Jt*mCe&v>zI%?DX`}t>DQWRq1%ZPSJ+T7KUlu#D;qryW za~W2VtSoXRl*^_I)(&1O4*8ZTZjKjg{>+|xHtnQp&DUa2#;Y}-J#DylOsUt5ZTTq1QYzd?^_taVQz~EH zK(rYM(FOqwSGF8<16GmFiP?n9jh`Z=t)j#yJ+Q2;d|@Lwp%^H3mo=LfFY&^beGQy| znS%((-;`*e1+3zuShZ`P+`M}rc%uC&)`G&#@2PKT8tUm#>NbD)8>cm6oq=9$%C4Rw zs@uFiQdd@5xhKqe<*=e?!DyYr6KCP`!@^O_kThCID=m%$;>3sHxq;Dw$RW3r6Lnu% zu_;Mtjy1bw?e<}hlDWYv&1;}cDzByj>8eJJjclfJ&X|h?+u90kE{*__OFDaxj$W8& znV$!{V`u*6??wNP3mTU7RTi{4@+*UNLnld)LmYNvj0VKSC#eXZ8dCxtCVa9?I1NPr z)fcqz_X)aL#haWP&Q8z|l7A;xcFr^+a0Go`Ef**wa%7vCHXxVUx2mO`f4BRU$LH7s zFJ0{GSjQT0mX?;jV7Yi9B6m<~;~lINPG0o$A|9&JST4Xrp=G+$m?_+#aO>;HuS0Hq zK%F?n#vpL;|u@SJ9p3p`hK zjPl`18C@ z7jv@hM);7E2M84pM~7B9Ze|j`N|>jF1kSqbl`T@)&Xms%Z=2MNm%JziEf5Y5zXX8s zQ%#{5Ac>S&eqkdkk=+Hk|Mo#P_JyA8+$_5z+eNjX5rxDSedf!owEM2c=0f0#jLWpuiXg>-)n*8oiHz_)aIwMX7l(M|s!fpS7H^l- z1e*)#uTFbGMgckvESQn_P2xANS`Rv@8uXW=e>(iRO*dG^#tXhCKC?LT{+@|fvmUW* z{LC+2(%y6+rK3FHQIWPS?~y}3ZBPGXrcTyT%7WL;%$?f0pAKOT`pwn!%E18n!KfONMf))?$jY&0~+A$;>fQL zzA(7++D%~3a4D5+K>?1{_~6@rr`z?R<)v&3moAB4<#B(n@RA%#uz1}>P(&&JXZmYSmXTD|2=J3Xd3tTV! z4*L_9n+nd{cOlnm(QDKj0zfu!qiFbXgSP?xQ|PfU7U8p^(HTVq1DI(xg_%rt%7!n) z&#AgA&M2L_q(_!Do(dOn5UR(Btet{9&%MK?cz$I|JOWk6W5} zWN@N^vyylbE=u()W{s`0oe(r1*!w@ty+cFZZu9w>b6rg(zd-t=S)1SadCr`g`tTdU zkY9@aB(W6iZ6bNJ>I7u$6c-j`Shc7`4XYSCR)oC7g+TR_AU7GJA7oL+jbo)OHAVEP z94s6|UfDP%7(^nLhx>;Wiy83=xJbx-%GXadkiQfCZDU1UWcMl4pgHr*%qKiZkJz`p zrLHw};_;zKPw*?zt>SfOP!_f}+p#d~cjs2t7C!#Dw28>TbXuq7)b2ekYGGIk>YU`k zH=__{Jr`?yNJP?-pN@3q4#@`vXkZUMf zW>J<+cGZ!o629VV5GXU74q*P)d=H(F&K2)53MpD6PzJI7T%py5N zQO_&9D{)+8-eghzlIF&S+UiOaOyKc4rKFWc38#Z@;|hw4d?;5`24gxo;4U^^Z4565 zark^d0HXGr}>_DSReuY^p;RoJp6aTt5+z2oeJzpB@hE0A;m41sUXU zkw`M=B~>e>()l)sgrYH-977i9bYj|UI!jBlr{Q$>#@=EA3x_G?s^6CUB1H5nD=RxI zJHs8Vpy>=Wa8!(k;(QKII?*e~r`-NG#{Afy(-SQ{?IAvnAK9Q`E6#aY9yz$*9VY{%l3OPyq>10rXX(h8ubG!XWqo`N+$)rNxF< z7wa)jn>sulhG&FIW|DNkKhii8@sCuZNu85bhMDwm;&X^aQR5jtH+c;sSjRZ*cstCp&& z7qF&!$-q|(-g2@b#14%Bs1u2luD4Q?b-lVVRnI+1~fO}EBl@NLP8 zm29XfA4`5L=|hnGpzEgOVH7e1G7nGwA;9Y?1KJDHA%IgAcLszyd4<69hFY0C&lZWal*!Mu zCWbuLc+`W~9Q?(c&cTYfhdc~f;gAh(eKIh@={2g`Bn@X5s4uvnj?gu;AYX!Ilep{l?2MeC7`K* zQKy;(1gAW}^Es68JDeVHSyRqHh>mhBe+mQfIhn^-P}q8oedKvS9@wqL(N7-yUXLY$ zL>J&4PIN`z<}reAh)&F(yCNjdE=KD`tv~t?hdwqquSVqC55P`}L_gja{rP(} zoBGs<{1~U8_<(pD@0A`Q3B*=FB2Jt@$nI89Dr)GN%s3g3sPv7}*K@KFQc5#}!VE^Y zp7&2pU$>)!#7Vd;2F-qX=`Z)Q50*urJt^i!pNhwzsf(9#*v_WtH${IW9)spncUt@< zI$17M3lE*EH1MbiIr0Mnn8#8M!=FphhkXz$!c~w4P&<#Hg++FDrJt zid3=zE{A>U5LXWeV-u+nWT#7yMH63-{&=;Buz2q`DQeuo&KWABuPt0!EgBq=L&n;v z=IFPS)swSS^Pr2Y3l9{aR0Yk4V6Is$M)&<0aLrGh{#>DkT< znb|5UWWfAnMWj(adUt~(ZrewCIp`Yey^N`jAe zTu~OX5Yx1X=HaAL)D+3>@H9YHkdFb`C31{=o>Mnff9rvZ05)J>WE%|jy&tyGvq4jO|JwVUN?q06Gm=016Eo7;yUy8r z?X_3<*S{Kg_80F=_FF#20WGsiZUrMA_zhk=noc~Bod$l}hos&N`ho03FfICTNt6hd z;q{^npd96u9=%n2cXi1P2(nQS7++wN5t>J-J<0;e%eQWVUfgS)Wk~k6)@Gg-My`ag zjcJqup?xNY{|cWpyubYL_dX<7R@M4<&k)lGzF(pYF`Ct}x*dNFS~}{D=;_F%${;+7 zD7*|9Dvwm)G9bi+1bi4slQNn*LcW4JAokl@dA=C?mHf=>$r`_ckBsb{IR3(if;_ z48TONGGDr0Lkv^MuURkj(%aX!<|zd%wZ-ZZe|bR~{?WN}KjQh{c;cma;=kzV3L){2 z*dn`yHl-O=)kp(F-Ed9HHH#V!15uM!y{lJCMZ{t~61!?%w+L;>ZWI4pOnk0c3`EXT zT6Y~c5$>snb>HrL?v#wA?s@DTrF82N$Ey+Ebj1Oqn>F&{wSSbWr9=`{0Ma5LXGU3E z{ZWKjc_%7L-&XVdbN<0z+?Jrk@&Go?Yjb*!Wj_&*pZQGNmEO@2PS6i$5d z^rw$Mo+I`7P&D!V_lTG7$jW+>6#pIUMv~%M;jw2+3MKL^$&dz1HnU|+(2zhoA-alq zm>#YK=MOlOk9q**Pr1h-0DyQpGN+7x;7k_(01Ct_c{UVbat{7z2<_w_NY9Ci|4sx1 zZ^)e)P5j-5q(uJYXat|^6OKL0tTvu?_u<7w;SRh#S#K0nVnMld>y020{Oj^RgS?-X z22C1yWHkYKs-hWLj4mw!D(Sis|Kq~@HqP$Ie%>Rt^d)|BSy~v~k@{q3V_N(o+qweb z7;03B9F-EE)kK{QX9iLV{sQ%Z%#>C$q6erK~1}?Uxf)>;NipvWRfNgcbpONeGQ3koc#RnZHxDP zyE}4Fytg~?g+H}_?n*q4lqFj;LHZS5!vt}^_i7od@Y0wM0{A@{rxxBa(hn%D6r zLKde%x#A;Z0V{{cX!+QqSr26qA0XtsKjMRARp~1cS#0>#}ZrOQ!gN$7`?AK@q=?8UP)#XzX!(yinaCI#DQ@CXyT=(MG#H&6E&m^d{6&5&fGveALN+{KoA%#e>9Zj_o4T6X9?DHOih)Jlt1gSLO z*TnY37tV<*-%HN{if@V~en&i?ng3(H+xJDvMHJ8*IM6~b$L})&!!2Id&GKL#w7D!- zyBMb4fPosmCWaGVzEzxkLCxEJ{LjTVjU|3pJfmgp;@tcGU+h;)g;u4>4a=F)C~~I^ z&MGK-MC9)_)t`j^uV>#ZCTSAV?*PV<@bsG~$=0_uU6=SqGXExiOd94%wp;oW|Cq|Z z(E)hn%i>S*-RS8=UMnN=PDKFNJK!i1(2?Nz8o?I)4>yo9tk5}S^nwZ}B^9i|eu!tv zB5N(JiEo|%*urUK&o&b0#J5w4eLUJXj?j1F#XpcwuJ9^*mJ<3pUZ+NQ-E&1Yz_C@m z&LU4XDdC+VpK*L zz(2iOTLel#*uVU8?Zpv9?m@@mdGI3XP?}NSji?I>WKmQKkP#BnNKillWpqJT16F&cFWNaEKi7hI+!u6xQwd)*Fa?iR`0W_80$} zVBao2yss!2g_5r(qhOW9TB*gsR0ED1VwC*a84{x}L{N+@mz+VdI$oa=?%oj{6Gzx5 zWd_N*c|?~e0A6`Yjr-U@sOlHKfinfvaMgNMwHgJ-y2+^9a9Aat20QB#!5b-W z*hI4vxiAoFh~So>l%oeodBM9SP#Z(7G^E!dT4@F=OIK1FjmA5HCWbs>3fRy2CQy1Y zt=01A{$|Mdambo)B-R;B`d?B&R|;$C12{$m&9EF)hePHHQiI10j6dK zc1sm=y~JDMAhnQGQ#%sJ@jenM!HYh{FDIUAr$W$GtIc8wk5k#_LhIzx z$@=m@P8Ml>5dHr;pA7m+&s54d zegM~tL%4js(`CF91flud*)yk4o;bR>vA(*zcwla3d^9#PG|+<XBU=|idvto($w3n4S zWh3bZYBr^yzo^^fa5LnAg&_}c(V*fObsbQh1Wm9xalmcR5Fny~-Q_W(tqpWUftao& zcALkE4kc_NSXBAvQ55e1e0(Xw~|I%7OOGTh%AB^haLZmJJZ zk01aJ(Lj#W25=2f8DRYpSpqvt3Gi|h2oBXd6WEDo=XTQ;a$Vw$jicj>#yh03iwo`3 zW5+TKaq2TZa?>@A|auhd2Fou%)Swsf!CME~BPX5>JVrfAsOT*?w7UKpyE#Up=mX(95^;+ff{ij|IB`xCqN=BBFAvF^_B zaq%JS(bYBi(9BvxZGSNFEmGdBxSwhFcCj-i~4dY72fq7Zq*R2YfXJfL&9)lZ$N;%I4^h1?Ysivx;Er{o#6w znC-Sl(tE_|YtOfiElUHJ=D#_9Zhf>n($_z>v0O6RFqmtXKJ>09IzE8i5s%fcEF4Dd zY^1wyQ0^OQ+hvnX*d&WEB91DyV0{(fdS(=N6A1%FdwUQOv&tqbc0z`zGu}bqOi)}4 zLmcQl3dNvVCBVckhYk1~$-X7n?Or<_9x6f_)W(Ch3~kG37LFz`unOJ1Cn22PP;wHy z1EwLb%q&>o74L5rIJS)D5#B86GK2@WuAwgVit;DQyL(3KpU$Ni4z&e8CvZ45QC>u@ECi7iN3 z?)df0@jHGPo73oU7>$kr#{e2pg*)3@o9pWc(2HC$0j!-yyU|XJ{BTN=6^OJ+Vf9$5 z*{3}ZqkIlEiiyGYi9nrn_0l|5DOPpo+!Iccec;KU{Tv~GrD0;ruJY&J5*`DW-;W*X z7UGIh=SNrt054$fbnt2spn%f`wBEJ}WjX{?f=8z@({xk0I6@G9f9<{qUQk8Lu8O2Q zqTevp_J(Wa_a|=eIB?T#w;e7maF+JP!R9hCKl|*|gw5h`9=~hST{j@!lW35yO2eP+ zyzizH_vz#MmC2Efk>=hyBS|(LXL1s^eX1QU}LSz zW^k)g7NgJ-gHYK7r_ts-D>y8&V?!`{*fou23wHQc7SwT?OomOX8NoVe7+L`LmRCd# zpj*405k1YCiRQ2yQC#N`?6QM}aQ2!?8PR5;pF+gL9wSl}6TELf`ns(zn}I`o~ujg6B-zE!EfHldpC~W&6eX&}}OZ z7FWd!#tuwQy7dm{&6k>LBf0g|{4a?!IXW?Sb)t5%JMd(1u$Cm@`LR>m0|#bRX;|#* z$RiEh=spT*uz;oOFBE%oO$n)7Bf5f-0YL^pJKeT=7!ZgpOCXjeQyGvScvetrWZc1= zPUmjo_Xss|5pc`&wqTT6?X%J<;wi9M=Y)*H;e{ z&X=ToVjHGfaj1U@u!`_KkEQ&cgsowqzp-=p9?^uV@&9NRD@zYXMq_1t{+?X6+ns;* zR8yen^H~4C|4`qjTD!%Dz8+*t@)_6q&tcumaR%Sb&tR?7VU*3})l%!c9*1ahi+VFP z&og7;&C+R?P12DOOE(H}p=`q2BooeKzy_pyv$SnPnd6-_9*5Q`>Y%G_2xpKVyX!1u zxS=>g(7Wj!;L)1N$Hu$dz+CN^D@Ly?AoC3Rw0+N-^=*4i0y;SQOeZpqI@~=r+zR;2 z%t>Gl!pp9xs93Map$M8A;iEwrKzx{&oeaH%NQ%fJGaoO!cIs2NdzMpDJX|xhZU0lbEu4I>iTBE9hO>?85Bfi ztPdTx@f(_u3`#G}=Q=95TxE!RDC5`$1Jdx?a_?BG%&%16Y{x`&RB%|TR+bQq8XX>r zqGXQQt4I#|a7uvaVQw<7EF_3$yMAv6$xk;Zam*to#X=uN=`802h>C=DRbRO!wG zJk(KBSXf`#)|*4)N{heUFgi3=cyz-T^Xc^Bto48rpMBs`-2-#C0;X{7tKY60^hHKS zBEG(yL5}$2t;3PBcz10}LzTV2Ay-v&&nyls9WTHC1RyEM(7d8+hmJN2Q&Np$iM9nw zOZ1|V94$hF^`*HwIva(iY_edZ&=h%ENMFIbMN3%jZ@C<9^k{W%37WG-Cu%tN4A=%7 zE*9eg^c)@AcbSH$(O=z*kk9xUya|7Uh9usCVVPWC; z@4hn1FxDM)hy+s3_flDtWp0rw`VE2rZ(w|E6p`2-Vkd5GX{`6v5U9rEB3f?2?DKij z;s&8`F}DWcFJxez3DvTXj7_1R;s>GTmWku@J9}p7%ltVFLEY$66h$biUC}rI$JSbt z?0?<@cWwg^z89qY5xEXh9urS0)~@C{Kk==CLyrqN$U-2{=p+nZKqrC~TSvJvjVG1U zd%=pJ(p`Q_1QBB(DsTcn?spss@pb(W$?T2%5b0R-3C?~&HA|4r0Gsh;7z3&mn5DZ9 zOdrD)r#Hqb6cNDh;O@N@H7UC$_KYDTtP21vNLun13?WjVOyPmkVq8HAZ{Fe%|G?EB ztQ%~b7@EAelE&%!h}=igk(IG~yUl#7%~27m^9=a{RYAvQ{NO1h_`vU~47H0LYNScG z4%sllS?d@6SuwZz$_gD8gH{e4hWy(MRBvlQZ74hf!D^IH|7!&L5=avOz$w;bht zf&*osS`jd9L}ce+^j@Yu=tjs+{?SSV)0(jzJAONJc=ped)#q}V&8~h|e_t=oG7@h@ z(^pweP9F$Zon|L`yt%b76Wv2R8ps1pVFc#Gdxw1Gcd&A}gr|MNUn%|uiIjuSR+cMcbx1QF=0HIZc74|1&85KaR58XO(b(u-7(|+wrf81=~@A{V;0#5kbVyiguT< zuVDAmzGUqO5C!=+B)W5S=8Br~3|FG`Uua8q{CwsF``;1}%;njV0Q0}qEg=j7{O>)Y z@bbI)mN>8_wX`L`Ts|#Vx98pzPJ;8xCxg~Av?oLb^Xban_C!CS?#Z%vP_f2)J6kF} zK-g;0lp%^(SSXr;oC)$tbRmgO6y6C=ljPj6iY5>_vDhlM47HwaotKV_XG=&Aqzvbu zMQ})nqhKBweb7+^XvjGYIbp;2k9LqU=Y6H@$+F)@8Qo(BtBEuKf;;q5;BVmXlr;@m zmCa`J@)D)O5o}Wi`k41lY0f$@?v@sMK@h_aWI>JtS<9j@nFV1i0K+Z1vjC}B3un9rG|7~tf-Rw-z+0e2;sAr)Yc|29bGrye15a+Z z=}3^K@msJ{RYHK>-!gmN>=#rP_CJ~3qO)&c(b%h^Jvo2VtQkqXT0NdD@J&CtF9`KD zfEf;KAz;resq-V6TZD#aY0+G*(H_?``;fFfv`?)T-wkqk^R`d;D)YFb<+Wpn#rXp4B=1EWxWg;tEg4Y5u z6AB#e0@7Pny#?01L(qF2hzWUZ2JePbw0RJ7*V!1F#$Gs6Xeu_M?x|=?C_?{FP5c)2 zKday|cs*w^FSr19o0i0I32|x}{meN4bboK1J%9EKD+jNCQm4&;0J)b>jZP>0&9i1E zv1~6ZJAUjY;D8W4 zJ~8m><#d%}e-7Wcv@#W`dz7ija=|YwiN%TocWYB+St)vl+pJn9isg@BdQ)i9;50L& zFN)NX87WFc=_nC}zf8WpfpXmjmnhl{h?V3_ zcI(_^Q8}^QTKI(=kl|fs$xK?SIrHpkSdf8o-ud4qa~?<545SaNRw{qD_FJ=@5|;XQ z*ljwC4mC(v3fb)?bTSw^(oJ9xwfNP788U#3yP;9!x4n?~dE0brK>W$2`4?EX&p@a( zF6IcWi3fl7v!6W~bl*-UuvqwJbOSA@(6`hKbmWXB^V3ROW`c3z6-LD-#T;${(YGU+ zG9Cw3%V{$^FViVQZ%i^{oWNzmtnrAl!z3f&YtbQxj1$Yu55TUF-EbMaWX-sdSWHhF zPwZnh!LH-!!Dzu~JT^QCKeG#f23WNf zG$S$F%r>0gLfEz$rpJwLt#)Et_PxXE89jYn`^=9fnuK8QiiL6ECyF`R z25-m6LIM;M4<=ntgalA;34Ob-XaEZ(FqieZLJ3MZ6%5#AbS}rUq{MD78869-?bTG# zM%jz)#dQr@EP(tBo&;9WL6iqhCV=-2dCULy#nP3ycWPwx(6y@#Bb&jN-YW5Xm*zX~ zj2>vKE-Y!NXo}`KgOuHkEqjLs=ESb2nzrqO{!l%g$LGhYy9Nfjs>8VxI~*}9W0M@h zy!0u>J{)eV4-|l!O|XztO2O+M!RRu$hy@d#pb^fg(`u3p4peGTX7?Nt`+7?3Q?$TM z1i~JmHZ*sXLf3=Y<6$uxq$Aoadrv|!zgP1TbPc@fm*DxNtd(#8fv$ZDC9(Ee4$3FR zupCa85xPxXP61U3&JA@cxWtD2%tYrW-%Q9J&|A?|(4Tv~6J2j{ypzdg1htg5#UjEq zNY&9c(`4raE2gp{5Rrek5sO!6A!z^tL(dTyOl0!SmnktU6iTLVozv-@ch1kv0(hYi z_Psk4Y$tEb2fU>RcLgtpAjl;{;IW3LoVO8ITVZ-5;w1iw?z~+Qm^$U!>Gmgrjp4|+ zrTEU8zq_kS8Sn9#+6mUoHmU3ojaZkHdJ)B9s4L=dybOTPh{WzOJo9yF zm#d14i${wyF24Z5o?);;pXM!hQL)eaG*IRDCM@j}@vhFHKv}7ebGWLB^P0-$-1~`a z`IEsw6_VvtubRr0_ji@#*-8$UdIno*Ma{~(IIK7cEY((5Q(A1d8EjgFFGL|2Kn}>u z0G?a|p4^FDbs#7TG&B~SJPtS7D`o0YQXEuWlsyy?Gb}41qo}KfHU9+Mh_whZ`pu_s zQQ8{-W`!abFy7$pcbSGlf@+_&ea@5hCG2Q7Ha4y|?toJS+X;tLQdd{69_?hgb0m-k zuI04<8nQ|Q>cClHeSi0pHq*VBgi{^nt-z-v-FEbqzxJ2y6S22BF*@5vO!S8SDpcD%jfWr9yCbUBJhR(pdBh&LXAi31I6- zFB3+X%j-xAkh0&y+o&xJFkFE6(bh?Sm3Uxme(m0^^1nXy-Q)8sZH@Kyl?%QTW4U|} z$uIsIhglkatkViu@cQY+QN<7E9e{SO#InSP*t2PBe+SRDbXze)FR{B zi;1Thu;og)wc3n^mgW2pc8#AIuyV7-Y_wd4IcqlBaJ7*i=^#JS1mnr%0FKq7-?Xwc zmQ&}J;Hk++5m1o5G6lBi!XCfAIiTIu8D`vo%E;TP*+@o4uYa~J5Y>3uWcF=9_sam? zCo3ZJ!|(|LT7!aCGy4mH`Nu2moP>^bGsjYOJrTsvsaNcTQ0^XU96r zfM%H)8!{#NGvyYZLfr%l}=q`9;z+za=ymZ|NbWN z@IU_JzjpbT3o2)7y8G#tE+I#?$ey>0^%sEafq>}00s*n%g02ych)<~4r-kv}h6<1n z5%x*_Gs8ZSkvIz68nh(XOq_@?IB|4wecEw-Lf=bn)VbgYy9KKor7L#hrh_@Ih+?8S z41VmW3-Uv)H~0_D-_TqHu2pB6@d9_L-%ia+f-`&LvoazKHmPe{0}xH;n-1TGS|6hw zB|e#7?lG`e+&LKuQd3Fs5k%uxm!~Jkpmda>o(OP6ZB%jt!=Sdfrlh9G*MLi+M8({y z{uV&DLlS{*16h*Ak+)DwJo*u(yF!KK5zl#84RtYY91pWj^)1b)oWK{ zJ)6rN)rqes4l|Mag#7oHa6>G-u3~z=4Y3j1wS0p2FK=QOMc?6q$mra>qpH6tRBK8X z!{^6V7p#mP#JP(ka#ghjNwlID(u_FH#lte%*BPjA8;np_O7br@O=X4fw8>xvyd8c3 z3YRHcZU>r+8}TS+rQ!~qlWQuNduf_#a9=~2f?@+_P#_Hjm70X)tbgB=aFs%H*tP|m zt;`0!)SEpTFAUAAr;hRbGr)kHR7dG!Ns3TdF*7|erVNEc#Hq%S`8=#*E3_BZ1Gt=t z*%tFi4TObP+~t!M#MdEpe);#mSo*YMacFGy+Qr7MwaxI?q?4ECyKY~(ySQ%Xw&}b3 z+q!1$lXK3+)&s}Kd#5+YXSNTvw7pdIyAY7Z(47rK({o~9mw&3Za;_#!3hMc>V}}eS zP0KBzq2P~hD{nYB(X&+Cwc3Apb>MKL{=v37m;`izjYBHT!kmZ>S;Ipe^`#&+BxV3o zMg34cdOJaKal;via2p-g5hX! z(qaKMxn<5WH#;*q9)oGq2Z|4LV}z2asVXV*xDZgaBE)a@pg(p>I+C#*ijMC`l|ZFr z*V>Ctrbc8h$M5QXkWYPlt>?Btd3jBEVlq6wn7CJ(NLL*M-gQ>w)fy}CUPdGEUKG)w z0d!u3f1*cK{jm70tHJt;QX{Lac= zzgXcC=UtP`iL%!e(n=Z$nnq*G_U?fA!ln6-+}8iO?Jst>wd5>bnESUUhrjc9>(rpw-tiU| z^f#Lm|3@q`2q^$;|u_;Y8Ku6j@nhGaaBn^dV6CeZddvLA5 zYDM)aIGi?F9V)BYB<*4cdL>I$WzPYGQ=T~_n@ybomsjR&BnGUU;kstCZ&Ed^I+>=c z6bON&=Rp+yft-1VsVeP5=_TQ~*=#wcV4}cO)wG2>_Z zxib`%KFw<`goC_qeHBHyBo#BOT1q-vOQorc^TPwH7an*2I-jok&#_BxW8x~X$@MIlszXa$)y zHqn5Nzff2(v56{928Nmmi^-(@k+8Z*nr%A)cqy}L_u9g4lR5HF23Vpx72K%IX$g)z zcjMDKHwo~q&I;aJdRKUiI*^Yd&&9tSA4kYi^xDm_1oYMfo6Ip06CzOnQv^b)C}zWb z7Y!3UzpW*J>n;UR&c5v!M8BYDCqTJjUsqqMEi1qAq?>o(l;2bQN%^mBuCPxb7NaAut-%6ha*Fa)To0DHnZ<}o~X;Y8{af@lnLLnh|Wfoezw$}VuVQzfO5B~280PFJ z%U#1Qd8K9ezBrK&fkO+O zf&E-^S&$`h*>tWA;*ik^=yzkc0)vNmE-Xl}5K-Y>VUk9MtftB2M0&|3>0N0P;?l54 zXRc#DvY%d)7o$V*TD}-b^3>iRiuxlLl^enU*mdQUDYmK(kP&OUkazJi=iIRikZDMD zTSbN2U2&iSx^ZS|4Dp7(o(MQTS`cu6YOF@1`*L@=C*Vb6$s&T}lc@!tFQN|->FiFk z3(eXAG=_MS?d9ho(A|(0`Zb0)zV?5Ar2mp;gw@LihCDu4_Z4P|iTO-1wF_re)s-xh z3{Yg#;2u^P6Lymg!tMsfuTHpC{;=ZMUY(g78R%~=cL>%p+`J_4bArt!x@-t(6$&M; z!jiK%8zOpP1MUY@kSBSzVtg@yJW@1xSwC4bDsVyb{&DP^6jaJ3SWEb zXT<&f3IREfq<3XM;5xQheugvy!Pedzmz_w>8gP4 zH(81DV-HyertfL|%&t!4ckVzv%jnc0B+VZybA2OAeP!m*?>pAEzK1U3`B$oV@d-1+ z3E^wt3|w36?`tY8K_Ph|6dB3qAV8cZG?{Trz#5^U5p@;?H31T4c3HF|tuDi%5M<;* zU9Q5J0%wr}NsYp-VzIE$TL^P}P;j|jkM4Jp?D0VG&CdG$vnOUx96z?bdH4`uy)elA zGk!#%z#=k0EFyIU=(mODbZ(;eBfbzKWh4jz91jf2_0YAH+Yo|IQh7wOqP*ez|wF(_hnQA;#L_ zwUs-kCS_^)!l{+MiL`%>9g48pnYU~onw~uTj!Pr-ca>6%y4yAglfv_gMd^_ z%oIYQ?FykpSC5vPm(xxSIMx_30zWL|u2_sXCRX&>WzBcWS@|r?ZM8R-cG@z=We!SnVKg~m`^D4^756t^bjUpklg!)}FZtHEd!*H%m?jsNn}e4r=s z(~>}6NyE_n+i$953hDU=?wp>?p^)Bz9LrnVOYgN7)Py~S!_~p!aM9yOx%%PQ)yJ`v zvd}0f!gm#OPgjXcuQO=+XAH%xlEDTJWjjd2?YJ@EP+KJ;j&%bTU=+&+L?a#uv&`^O<*s{H+&WEN818KkiK2k*$!Vx3ZLc^;>V!v=7qn3cm=(Vt<>Z zh{Ov#A0Hh*sHq+TiGN*38$clOPGL&;2gN+nUt8+18#LWBCpf_B?$BK(wZZtsoPc2v zcQ0bdb{#M>cCRSA>@p<`(Lx@|$c*A_GlI-E8z3_Pxn`)J1BfP~k_f=e8=W_6O5FEd zU1oFFR2L#9%%%hH5NV;#4k{qjTmmR z(K*@Q99hGGH0K!gMtk5!{R+4b$1X(hml<3t+RHCYH*jOK5_0 zb4vdIlK8S3enbW~3yxPO!aEMhbAXxsc(me)o3%rd#FW|jQHe%;@SeSLI5gH@eZnayfeEYhl%A5tvw>UX7-80iu8YKSj59_8ukft26}fsb2r( zHSO>Kvzv8NRL^61Bn!to-#4Zm9d6>%W|(krR)ilYw%PGmS7#fHT*h%oCufE(7?8U& zbJR-aC}Lwq2fT(fW7k5)E=XQXL{*!zb#c$wn3b#5L@4vHmz|=W*EZeAteF!6rHOO2 zGPtt5v@i$A6gx-Mtt8lN}s&ZT~m)z(~ayMJ4pI+AZQnaRndF3 zx2K`V#SpaAsBa7=tivE&Oc?_xwI!lxNdN&i*K$^}1%P`n0QUe>0ZC?$3#Bavam#H~ zVYFO#j?-j#@basiO&Q0}P#do6oG$yd5I*v)V#gOz7L3RN^1&d(C8Gj_)LsOM>gvEd z3TxY+j>`4=vu-N2BlE5Ymj@4cjHrNvbYp@xAVut+G^?>&pMoa zoo%{FI3#R|T~}ix!Rk`Ij9ZSjeNK?B!b&U?I>fAXNZD8c zgtJ0}qTt1Znx;aAhAZ$`kg$=ryk?-PIc}E}z&uTAmyn-%ZDv&#@pEVsK%EqCaOUhc zg+$bEZF1n`!WaOB6X+RHl%Wa!Tf{@v3DUp3S}9R=!~eWtS>aB^ z&zW*}2vM|z_<>@ciYpEEg$Clzq|^qZx?p{;T!P-@fffdaavom@C>`HFQ;%1VPds?*Qav-y}-&rZ0@fyA)7w6aZC6z_2 ziAXHKD6+n>&(B^?mYHkr>2W%H7JIZH&dBf}Xuo@%Q72U)v{P`c2JaJN0hN|!m5>zU;UYnk3 z>rA1i{&IF(vq>1)ru+!RwpKWC1qG%yw0q|FP!*^&k#U3Fj(De7I0FZYK$}|@gg3ne zjjRHDo`{an+EZB%u%@1vw$|hKTNY612JgGg@|tOX3CoXMn){S8*i=(h zJ@BIXzn_qZHc=Y>`S6&1%n|>o_P=WIR;I3`ZqS@Ra;2@crdX$ipjs&^Ycjy?07H#L z3^fw8ssw+K;K*=92&|KeJ+%TBhN}5IW3nDc+zG8Tx;=>VK|IR*C?%`)yVbZ8!bxfU zRy7NhTsPL2mBFJjmLM$sI`MMPgTeluk%_LAJHL8quIjef!LvirwpjCX+9HV4zpCnA z80~CrX+0@EfCc$NV|aPId)TV)?TXf=)`V~B_pv4oSdp4)2jZLRrnbV0*O_Qb)fFKg zBy{KkoR#)CGqhH&w6ZPEJ0|mStO&XtHV6&q2!o|?7f??Tz9LzDDtLZ@0l(7aAS{0$ z-6$r{AC5&LmnJrs#0Rf^NBedr0OCU}#}<#H`^0chd@O!{>WjIb(~U1S2!7$hvlZnM zF$IzW3cx@n3Mw+7p>E-dlI>*%gcs=+%a#?*xrikY&&hfiOIZ(RKew(F7>!215yb%{ z)vP6ljl~*~okus=H0jOK8UBAy`!LSw|2s^)iO&Cjr@o3v5MPo(87edh zZ+Nb{$}ZDKQH5~_RJsV_!_-Hi3IlCcPZNZ3lYJrMwzq7mB#25|a)gYyEOnaEmO~wx z@jT8h!?*>SNOTr5VoTc){6UA;JcFPYaQsuxqs=75w@2tf z^F{PEszvE99cwqWnN-6syB%PBHCvtZb02ogAH6tVdUI_1j`7}}*w9sN4WtDzHa$Dg z)jv2sF}QMy3HN&%A{%2paid`%GFFpXke=4ImUyVGsrwd1Jj8QV`aZ0VRhSn(s8}b* zTbiqiJO-22;5dRKfM!l`Iy6znNq3O$L)!v@cqfP)9UP%XLJ3JY0FvaDuv!rm{pm>i z?K*nLKy)6SpBn>N5XDo7hPS=dUq&^xo}JMyP)wp-O_;R(buJ}PF2u{*;Md(vk(AZ` zvDL(_(h3zl92h+H_M;cr`u=}cXH^il@`l^rK(3#Wt8HbIBw66b)4IE!8iKX zP-Pja=Z!S-T8ZM-Dp(v;K&dS~$tj}4 z#H?c4^0+0F$!o&W4{2(4U$g9(01g@?cR@gYm-_h)5B5YTo!`{JM40x1_;^$qzLB+O z<(Aon1^OUW6m0h1{OGQ$e__dT+rd;UCGjpM>>r*PIkM~Guh!Nso!4S1tg3*t;YXz- z*o9i*pkgjB^VqCJ3C`7g8R-O(bOK>05p5Si^Nm#@l5eF1@jGR0}9@`J=vxreKo`KFSNkuSJeg+6{CG<>mI8(xPGYTmgxM1odPSXfaO` z9yG`i#Wc&H1*F;FEYC9}^J&-z=-$;~LKzs<0OI=e1nBAv>?FLR5@t@^kIGaQCri6S zrMG1=THSY4qq<61wH5h9CUe!5J2|0Mk7!S=1vdqcV=WqmyPqpBbIRI*X#wpRio6jO zFkmT&{u4ATqKs+?S_9bfbbvq-#!pbAdV=^3k@0-yqw9*R5!4wtQ>ZDysbV%itGCvQ zZX;0wmt>x*a4o923q#TeVEBHGbyF{{zEk^7@&1v>*VqXYOW)EnP+3@|`;fmn`Hj5; zpHYw4-{UiFNJqb0F?Y24OT0#u2k?^;2Bclo8v!cBrHD3U?3CdEkfV*9s(L9pz%>KS zEWsmC@5C?~ljBa@V{rC392F{GClEjvvH8N~!*$r8_WfY(+Em(}XJ40NK6_aB4Qc$ncy)^wYomti=dQvyy78Z5w?utHFDNI`S6nv{kG3#eMv&8k&xBsQ|F z5jZ*N4g~5!gY21CizI zmV>{5Y1OP}vmS$84JF!aYsUE~X6lojkKF2$89bB^OxFw7GW6x<8=WANNW7H%%w$$i z-RRd}WJD1e-}=hG$p6H?wOx4ND&kZ4R!uQBVSBMt_=q&;05bG|hybju)K1U}3Y@b# z5j^wY{YHO#FkWnfWF8ir&5Y!ieG4@(YC}Rg8J%p5ju>!s5?VqNLH!;Bl@21U*UO@w zbwNaoZ^z)wpTZ?v2Ad`#sG6m*!H>KP(G+pr!o1J=oG47rn88wG+5VcYDhpG2?vbr| z4!$hE_7+XFxB||i8``)CNTv0Tlz8#`hUhU{gv(d!{4S?HDO|WmVbFkhCZ!2*u&Eyo zEh=Ot!yj+aoVT1qGM|QkVOd%PK;is;#%S;60;aheJT;MJ!DgN;`B7dVOU9~3-IJ)v z_*6VPv^ z0#Mu_Y=fR5Caue-q_$4L@xnlQH*;Wqk*WrxqCuhI#`c z2)-J>*XOBq7r4>B9bO0vnW{RR*DWx_Xtti~{n7K{8`Mze7h}Cmi63iQAyP@G=q6px zOF@Sa+sxRBS00ppA3Nbe();Yy*7}<261^5e@Z&zB5=m+Uk%|N&7(|f(99SMWsNrf5 ztaB7SV9#YfvaYz%qB-P+ze{nyI=7isYt*vxeONm@5|HYgo9<9h3kC2$uoz%i{M*E} z-ic^h+^@3Ze-wp6zDV1|%=$=oYrOd>g#D_c&5h}Czd-33TX9vV&pYgEsBAPHP`YC# zeSa`orxst!AHny_D75Gjp1IQE_t+~L4Dqs55c273(78i#~&88lW|R~Z5W)IF1GTq?@h-EM(Q)4lFg z?{&n~*z$En*#d?AEQqT1E(D!MX2c*Y{q%)zv1sYZURSaAKM*^Ww&~ip%wAOErjHR1 zi;<$GqfJG0<0E+b3vL1wPp9Ih+LHY!lra1 zP#`(ASojhwR_YuhY-%*qV&xu_^*9GG_WO}-=x8Itxsp2ciQ|FfG+wII>hMSi$y$iF zcFYk_3CpQQezk0wZken$(@psWTB-Mu)p&el?UCeCB@KshTCnBlIJ+^`6?=Yc^hElC zaV`Hc7OYEn{d3h;y-YVJiB}_PM!>9z8}KaHVPze4yU`&m$*xT}6RBHMX=DmM_w&f6 zrXJ;&UY7t7YHOjOWFg|p1(Z>6rotKqu+WC#KaMz*ox!c8_^BW`K#m$#L&F;HDs_zn;8y44Q4>rW(W8LjN!8*qp z`y<*_EC0!T&0bw8R-!@}7Y-{2hZ?F&OF(5fflE%d5fl@kLdnEpLui&Kq85NV_*9fl zYjf6afbwx{qK?Vym<8)+9LRhsmu>e4+(pH~$z2zHi?uvIb1$&Mk4D}mFj7RQlIdlHWf#_6fZF(CTf_lS9mr~D;RN{NOI<_uN z!iI1`xo!EtKwl`>T7~5SNj5YI+C88g7VvqptYs&qX{-XOQW3g@($!(DpnU|p-bQt; ze65ge7XmbwNV-5rnp#p1KfUG2X|VG)SHm^Ww~CCo1A)%a@`kMzE19 zn+(Z`YFe9?aru{ny)9Msq5k6s4&Tj}(dtkp%mb67J>yG%{g&Cex$bj|7v|$tGqj?Cw#sd_or=LQ&@}{Ik8}9S8>Dw)l^cXxuXyaXRIJ>OSQoX$ybKE#YF3i@8HD|j zdC>tIfTV|{e>C}A#v|)WAuKDF(?RJr~ERt(fZ#JzfP{xYUS(Dy*X}-AW z+Qa#)!1><4XO(q*C(X-d!%yGEM zn0MNwLt+F(2t=7&0CI?Q4^_L#QXXn9G2*uyw2(=4RNb?$ONmJ5T7|jTn~>=4(j3*F@$1tl|dRPnSV;#ma+`4n|n%l=y>k&CpUScG| z#GRhqV*6lfU80Sh{p`xp7Us)Xm}X&K3@Fx#fp9Q@Ei+L+BC3GwKzstduUQ{xRn=HU z*ycd84EHf5)1B1~9iqw`m7BLV#96pT}Gxr2^JND(B0OClo zYb#{gio8LNSHNJVGV{Gc<_wwdPbGjAEiEncEudtGDgC|FK-$~jhZBuXVCJHv9Fv=Q~fV-R*c=q-A8L z;Jx>pygb~6+va!0BC#p^uBi&d!yPl8w&<$(G1za9Oq@GgHeOy{))+efh_q;L zwBMQ1C!tNH+YgYuUYI#Jjcu)U1wP)qf+|2vHV{Wbq{}C$B}Nxh+nS>2R&? z+o`^87E5@17=7IsF?i+A)3Wvd+7fh{^bXecZTRIM>R!yz+>Q7#`#aLJ_+B|C#(G0B z^mgl1v%fk@wKWTOU#Y50gD%u_q=^LZ0-|aXtZNCCUSwE;TPxlAM#3(MOUZmX<3SEr zXch>wRu8N~-5zj-olAx5O@|~{8e-vZQ_CScUcR5lOwvIM>0f?7Gm~Dqi+!#M_>}?S z9an-KHPt#|WF~zPM0h|#ga~k8$QIgn7!YwqNC-h|odH%6Bh>@xVp{D&2!;~njV|v# z6phkTqfoK{D9eC{08hYNcXhV6HrCT>6!?L7B1tOhDxy$aeK+g&LVr;2IDYgS!T<%Z zsD9Sp3E~k}djN=^7*%PP{U**~S{$y?iH`N;nHp6*MKmI2{U0R8cKbQ-Lk z2z;yt>I#HhtVs`ii%F2pCYidB33i7Ws|Pw`K?0R3i4dG#-8RdN^AnZ?wxdo^j~1>v z@|X8HU+$?8-i9SLAkZSS!kiBD1P{~^y29_TMSei@W!$wsn5|@9V8t8285v5|+p?g+ zjx~;iXqk0idSpKF#~YE@XOB-F>Y1BxF9w^#vB8yfDgBWCX>eH_{mm;}GC$H+RVhku zim!$){iM04tD(7ixX428P*5>Wz#^$v*?FG*Pn<fA5ghFvjlUS^jnbVjQNn(NKPvc_;dIJUKkM3u5 z#y}i>NacvY`+;IviDZZA!U6=9*(H(|L)~#*>|D?s*N6ViYU}XtC)aTC$H_k~$){Sw zDSW_h;4|XX^Jd{`>zDS&cu@u}0HIeX0Sb6o1V#9>=Q@KWvR1Z-0wTd~vay0MO7xy4 zUQbY$3*a7tuj#TnNe#F_s6!M?Py=SOVH@OcsH7kSL8`k1ijQ?hgOSpu`=2q-WN;-Q z%!(B?NF>ZXaQ6Y$Xbkvks!+e`b{EyUIikLnvRq6VaBoXn?KGXxfH)$PebN=077o{P zE-dLeG5GBJj)aCK@zTNvD>tVP^~{dDmpYn5cOBgN^VANAA86fLyJivxMEUW7%3{4Z zh8=j>-xXWyx&wNlyWi+IzjBJ~hltzB_OGy;1ML3j({E;t|9GEDJ$5ge^cc8hlJTM-5!$xTAv&W`X zCEU`j41Z#4_8rp)YdfP=*CwGh8X~c|;^9F}aa0HU2ZGhnib7F(V|wr0l z1mv9?2tcTpp=DrHA^pEWMXh@bV+KjaFl^6hXb%%|8+m_DX~zLW90CH6{)_2DGv1F} z6@rnr3#5sF!h>a2fE*X|E(`0mn2iRm-l365_Ek4=rDKy!XFS0xvZO zDqW^)2KlNqoJJeCHjpmjMn)7!CdMoB=dth+;hk6N{7wf8r8i^Mqj1)s5wO(ir3b|g zAB{+Zk;ww|i|#&k5A3LKw}I@1p?45W*IbXiW=J20g~4S-u|X^imIa2szpjSC6Zx`e zHbc0GGkCDp-kQ?LRt~j=e!2Nm{?38f&)&LuX8GXB-q^s{=cKQvR!RJWmWAWjobq>{ z6hE?q3D0!D*_FOpFcdWF-Gs$z6&`pF*1N2QBbsTgB&=1M=`PFSHt1b<8t{$yxA3S$ zxMn*>(RU6COcfSW;Y65T4q>1BV(_HKVL~JB;*AXSy`M{fAQ%ZiCBl;!O8blp9UnD5NozjuS>Zb29oJB+M%mI zy1%gyNG!BwztPL?YaBbP%whmLC^|V|0~l5~O(Zk0!Z{Bs;KPI%mT&*`=)y!2Fsjoa{+wiJ~beES}|9YXJ7<<87c^M3%L9V>jW80VFi6j ztYA_-(v#^Att&S8M&3F?4Vqzn=0FYRxRb-RMbalPE+YWIdTNEEq zgQ164>;;uAK6k&bvGSfDv}`YskPY^X0PC(ooG7Ahgev+y#o8HcZK~qz@i~xg6#Cn7@-#!y$k108;cAhX>JP#FGUB)81Gu@?0|Vpuj(2x%L{IIZlfn zH|jX5-d9ywR+5Ep+8I4oBgH$G4kt$LPeVB+ew}t$zIg4s>9J$pAh9WZi4b?-^%5jZ z%|clCt*hPjW#H%5pn(8+;rp2&p$(8uws1*;XTlGR)doJ6v?BvtzA8ew2W38wbY5$V zAOt&F!mVNaezOlp39cMR+RLO2I7U2|0|y={=COI9z%|sA4grOnKAY*^$x*vBwo1O8 zG|XGn?ex;PYnHe?H^PeSA7pi(cd_J^36b?7;R9C(JK*r@Q)oi?UOKALhV0lFd=y+B zfb>$YEWsj^?2tEMcUWau09!bA3}N2`{e#X`uxa-kpE(p>TDaS6?(OLw3J;k><`A`R zQ-y6uYdg>tYUGQ&+Km*&$Uu)M*8Ny7n22L$<8D??+EtGnmWj8VL}qf zy+#4610Bshw|!}2_Dtd-aYz&&>!~c&i!u13m)~9Fscfxw_f*&W{=C808Cwlr_(^l5 zqkh3)zR(wgFG}1B-_va{Rqqn|gui^Y&LL@RB$L3n*boMwh5XvOrp#&Bt+@)?bnPeH~a%BdE9Tvm^v9SA|GT&^V>~Xs>d!L(v z0H~>NZKm77Ut3wh(~Dk@%ZVBX4wEU+dKq#5w73>HVSfr80~T2Ip2%2vx2CBJlOgP3#OYBn3XNzKM4J(oCForxoeg{=I;2T-h{Liaw^~ixV63J_ zgH)EKGD|yAyb(jCf(gd}ZE*LRDc>Y$a8Om{uvbl2ft6=sOyd>_b#h2jDI6zzrK1w{ zGRa0QTBDz?C~x$W5s0Bsc!R-+CIP#z`L}@7R_sdy=+hFvLs`Cep(^qH_Z^80$Pd$v zHGfw{*Nm~!=;MJI?_xUwGwVnA4iFw^=tx0iXf9|m)r|!^>mTo_Ea#z_=f@7r+uNe^oDm(VF((*LP%m0?UKKIS&i) zql4`%^Aqp@LyLL^ssKtBNij5$AN$K|lv!@W$DlSS<&NwCIp_{DK+*hZ-3QILuOFBk zn;V%N>20g6=~zBx`(!~d33_;Wm0b%2D_R<#Ju22sH&69NM;&qd{CG!E7Vx20r(hE+ zgc;$aay;JO7wjNtk=e53ETr`sD`gBUrBzl!1RtF*nqE+&G}xRoYL=L!!09 zJqqC2SxA8%Z9pLSz-Q@9jEY|ez#4}?+R^hg?K1apO zAF3K=LdWmZd~3;KzHUvcYcU<Jp4{|)16va8`fu$lgRn@golj?r>gdl{87R#eQeIY5Suyt z=tj*yp8D|<8T(Sz3DJHDY%~Dsi$|WnxPapy|3;Os_rQrMBBT+8wB3n0rsJG`rt;(1 zBZlshr3q5x!c&SZ7$_-r0&oP>vl?UXgt8{2I0>^6fG22knPoAHW?&zxkw>cqRi@@m zWHuOS0|kC%i9q++V{?z-(0ZmYJpn)Bub^^fwHp+RWyH`C#A1#7Z$Kgz(%nc_M}%6t zXn#qzdHHPZ&|jQiX*ph2QeQRl-7CkImyb{0K0kj)tkG!pOy0Hf?lX<1#G}%tH2mB8 zTl+&Lt_i#OX~Qii+b0_<7X~A9K2eN|HOs?GhedH70Uzm=UnhPck=_hueP}1l4DF~?tDT;_ag5t1(WPG8E`s=3ptdpVmEK{ZJofZmi4Tj#V&hSRts>;_h?vzgU9V&+ZX9bLp9zfD z-f`meCHol`PdYK${3bV>o00Ew2G^I38AR-41W*`Za&LV6=p*bCDs&HgwAYw;g-c> z|7_c#*;Ap`Gw(hNIe1iBScySL_l4WLXQd7%2*F9aHSw;?g9oQOrV83mY9|byRpM6? znUfYYChcWJ6s4>lu#=rHnDq!9lL|5++DIx$zYXmJ6=X1|D##45NizS$5<>h)JU%md;;p|~x%J%I%B{bB?(A=f#OgPx$tMfy6t*J>5OM zef`pR=4}U`*sxF7)+Uy>aadYnjfK*XetW5B!6$Q12%CE+R>~_>qwQUhV(x4Sz@ITt zgqE@a?Lej?r!S#D4!J+ne2i5TAo&J;4A0X_UDi|4MxF{l8*f=cj*eih*D;h#?QX$L zgQ;-gI>u5K!E8YN!X9HY-$Vbw46A+jR;pwmJj55$d5zAKM&SMcc)G7eTfPcrZrRu+9Aq)hD#gF{) z=B91Fav&z&e!^KZjEk#eXzcvahnE^&*ApF&6|C7O=E{m2N&>G7zS&<>w&#5F#wlG3Vq^BjqR?0l*LXI?WdMNS`k!~T4Xa!&g!6vQO9(BM* zYww){K?Haf>Q$617-l9>Vh+lV;fP`a0maB`QCuEsLIOBYQ0uE<1tMwdOnhYOg~1L` zSUqfPfp=Zs&wlyHv}L0*Hg@db?9%*r@AyPdV=$~N+HA1nXQ>S z6K|B(9;anB4tMsB>dm7)k>Nm9N5x24v~y_o*vio^O95NcQsZDdijbJShIG2F2W#pO zV#42D?PxD6Ftc+-LQNSg$%1Zsbc%Rm1p|R`sqwkltlKu>B0*GwY>Je3#(fNQ@RckU zE1d@kdWn{kCO8Aa^t~p)apq$&Jyu?aQ697jg z*)|}^a}N3s-h@#`UWlo`(^U9x-9#riFLe||!h;6E&@mZlXOd%07z-m%1`}1zp)maj z9R&xjr`8W+XvtU45Fi2aC>k``_NI$`M)?j?AW>!-aHWz|AQzgt+@@%Mf9uH5%r`bi zt?Pl|srI?HgEJ==n<@kM1m7q(`pOraQ;_f1C+?G$Uf(#0YkDZy9$pf^-_>Cl?(C~e zJbI6^K6Rwg>V$O1%gRjy9RtIf#)vVGZA5sFVh%T;^)p|>Vn{cI^R>RC3=x1ulTn#N zs|oKKVuxxPjy?lyJ$)U+$&rZ8X^0b+rq7xoV;s+UFl--|vX?0fAVz#V=TWagX;L_U z7R-d}%M7cXiUXRN{0_~?{CscM!CSV*91f?X4=iny;d) zsKAYYgb)%#PS#S@sQNDHF-K?+^=>31mgh$`Ey6qTCUs2MEiEl8V<$H|x6#MBv9_bW zxjR06>&EHF-}hUIx9Be3IqzKvt=(;ZD)CbM=;k5Sf)YQh*B3O5c8socG?n{`M+(Ox z@q@3s>Ezu`pem9UQuOz>46&Y$DK|{0VX=v2k&EQNz#bWp$G!JTrPpIh(nmJoqNCIb z?GMx`@T_WZ0#+_cL&5Zs3Q9CkPy%d>WO!tZ$$AoM0qlFtMg(q=_XPC;Dvwkm3C_Nk z6zY`cN8-xX5BXwpljlLgCl#k7!`^z{g_y(o>W8=GpK~_818JbJo9-3GyBIMaq>?uu z_+7O3G{7V76K`VCg6G23r3loNv;VbCtaG;4cGz7o0WLzw&^wqYW>g>~Z+im2fbp-P zwFgfRYrs5=60HJdJN7w@Zq7dXvAn~K_%Tjw!+wkshakC0{V=%-xCHkz1FB{uFHK-O z3N%|8xTr|4nQ@l#3{U>{j*+k&k=QmGdmcd=Y;N2#xkYaIYwquvaL@1zEp7Ee)o}rlo zZ~|CuFk=-W{9mn4E4-s+LW5nh`;gDdFenHJ$kKpm2f@!zLSRRe+|M0`4RJRe2VLn? zY-K*51O2Cru4spXV(*2zLbf1b;fX7aCB-JjeL;%0lfFw&OM>r|c;<}aDf0hY$6QIn-qgL<(+OYmF{TaM(VmbN&2 zZNfv18>cs?)79vi$A0T#aZ!RKYFpQ$%FR{F`eO&v6z6>>jy@#H=e70WO5;VgK6W7> zoZuE~4g7h6(U6K{bhJ>4D4IyGWC9NbqTi|KNN;950!XOC;RrZD)LC22=}2*I)JjYy z5bE)vJ40o%(|AcqAIhE3hKWl2Lw=g`l0Hda#=h(Pi!YuR(|Aew=cp=h7+-^`1ffoN z;1vyt|e zw69JPMP+>WNqo2!y1!Mp_*`X)fd#@yeFh-2qD--Pn6(1=(DcQidZceiBa;IiEe{7~ zJe>U;4}G?J0c<6nD331(V^SdPE6FU@7&4P$EPqHVtiAS8+Tju+ec+5y|HVEx$@#FL zef0BVDq)oR%{;9(!bGu{2BN)24;!5L;3J%Z|tJ}`q5LuHD} zIVS6I$Td!Mn-LK3rUp*vlPT9~kVrM|Igg&^@v2;UB;WiT|2s$PWH9?wCFPvS_zr3x zbpd!X{b?+~r0^>==4zpeQUlfJQ9N&uRp_KulG=2l4e=bre~g3yRf*ev?*4+6DgBI<<(D`LO#aBISvoq|Fry;U3N+TS5`()A@=>A5CJfAH3)9nu0EL zGUG+0*9vqW%UeXMp|MZg=gBA`W$M;IC8Rc?SXdXmisk?3?LELFyUM%qTc-D_E{&#W zM!k-D8}-#{CGD=XMJr3Y_U_tSz24$=uNWJfVnQ+1n2^Ly2sj3|0M1A8XKIWAn?M2q zLSjS0mp|V};Njy*tnvT%o^$Way)z@N*6{x)&x38vJ?Gx@p7*@xt-p8cU{j^fWoDfO zNn08M%X&mBnyBE=+UU^Q1gB(k!dYi_p)8o(vv#|2#epg|oMNxRPwG>)dm!JqvAkK_ zX34#*&LwPWs?-R*1i@4zHahpK3eT7OIoQDFk`kx0WT|9n@1Dh-Xf4fLas9nrNucpI z)W!j)2j~W8v9maq@CL~T%k#7p6v7~F7ekw4`9vg4kb4PDA`@TeR$_e{Z?W;lXG<5y z{L>@jd)F=}MpjxIdaK0mAj)!c_x7exuq07Y*Uig@H`s9wR=D6F8kiN^-&wccIT-B# zBn090hS~=P+C!bq=@)nz@p>FUH5)IpUXs(|&Xl#cksVs945dRm3K<3Gwu@@O%~S&p zNu|_)Lv|w{z>bCqY6-a2YTS>SF))F)@>&TJjuo5yhr_huMDaD^G(L*c_*VlW0+fCdTs9zRwLcF-Rcu(=3-Me;fN8>a!i{@=-DJ!%F5m{(r5eO9S>10wwFZeUXxWp68 zIKNtvBBuk*Q=`qTec9Yv#BGx&wx5kv##9u7TQ$t`UEKu|5z(sa(bh=0S~4m=3{gV2 z{Yaai_-12C!d3SV!rqs0o_C6G;@JVVsfpgkSh3YCPL-!J|KTRfpTa{U*gCU?;~IHf zCe)UKozR7eHs44rMDm1gbM@a5VTVyDuDWG!CUJ)DsoATZ2^IRXwdLgP`^OG{&l2&EC~R*r0Wd{}`wh{+m}jw9^cF*`HH zn@csj6uwkW`Le1p@7{(-=X^Q#Fv%;G20UuhGi@d|eXB8xi*i09%Nm?zEMMSaYf zGn2(2%^l+9bcb}gwtfF%r|5kiJ)?e~sP5g;-_)_qv1Qh^vvK=DzjdNDykoCgBX;N6 zy76UyS@q1y$$l`HIAQjtnj1PslCRuUUb|;15pEqs`z&5Q zcIb}rWWdq3yMN!Vf$2IWU-MItOk=`Rm)m0mnW+Lm^pW#Sfy{JT&Cn68fp$ ztst)`JfrJz>zZlbz)_6KB&)s!yW=axw-gE>V z*juC33DyU3Xcsj+etYLv9yh%8R?CQHTegX{T}PB0W$9sTOQmr5g3BqXtrWu9el*$g zP&0&w1z6-tw}cQY55-M*JoB*b34n7VqEabTdc8?j5Nb15aJ;g-f>2Xb$)|ky+}t%6 zwocj|9@ll}w|Hy%#kZuRjNin2pP1S$jZ3#5KA9B9GqqD*e7hYfXZKugjf6G0TU3h8 z5HMJ^CR}@z-!AV*wl-ie^e|fGsapIQ1)IcJxuf)t!X8FZMwbH;ucav&jdAGxbrHAX ziToY!W@}aPF68a1Z-C+MZ@;6gVw-<_K}Uhev6kyYYk!r8sC;1W%&zGzS(;1|{JyfM z^3On*r10qFc#XEurwsyVodO?&LELX-Rlsl{Ys-9E@K>ZEh%61E@L=5t9_~sCNVKKi z7h&3bl2`d9K6-PN6DA|Ycq$RW9?3uBiblmrJ!kxjuF&W27?*Io3N5GPfmEO*$(7L; zNCWMlkyZ*GT-8ugHHJ4a6g5cMmr@Ks{{^I6^ly3^$;I>uT_gcPeE$6ui8lkxkOZ=h z2K*E9$3l%@T~J0-)QGUDF&+(3g(W(XGXQy>?#n7HgNUF(Lm)krInDA<3Sm4jbC|^y z5S-6u2XlkDQ#_b{NIvqV)APQgW4qs6RJE;Wd_Hqq9jiRid~knwG-|NS+9}5HThC%@ z_9WPZtXKpV_OI;OKBHVz*WI~VHkG6(gEQb0!{robc)YuJ_~3r77f4UyJVnu(&11J^ z!5ypVKF9q+00U|by$-e!&DkJBclS^J9+(s1nF3=h)6TVQp}{U)4`yl zQXFInr!0gnJ$Y{Kp3+FmWbc!G;h|4Wrmj1C_iaz7Oq3;AJXsm3X_dh28W(CJPim@z z^iRTx3ZdEOKy_8p3#8-?VdvwC%)-06VXEj?o)MeNBsO>TO%hH}$Ej_%RNNXZMg@EP zokfEk3N=QL)$b3jeI!q8?%C1eswfWy+gd84?qu`{l{{0?aT1@*K$QvM!-8VvTQ5|& zGA+zw6_iBppa5t$J2fXkvL5pLp=AOF*Wm`{0LnfoZTJKt!Ei*mY|L`>5L$Uw^W@IR z(Y#44CJDKP%2Y^FyYft_lsXB$3GcL%4@v!~!t?1rhJ-Mn-k$I=*Y zSn!jaRtDGI>lm21kOlX+`?e$Lt>TNP!Jb>DcB6R#rALXnt_F8r*IbBU4ew(Nn-V^J zsUuco&j1}!Q8#Zq1+R>iJUrY)BNG@*DZ`Hgj3XdR0##iBIpR>y=(vWz0=m`=`|JvH z=mtX3VaZYGw??$(zIp`z6qsnPz@XI{$f}elW)jO3pDrcS7CzNs=@-B3=4j`RK;rA7!?$yh8w7Tk!t~W=-TDco|T1`Q2MK~ovzdQTPn8BHI0{+7yBR8(DME1 zGIp8v?F)2`&(683`s+HvJR-1b-u@5}E`pWDS{-fq74vh@mavg;zXV);lR>Rn$-Peh zc)A9IM9!FJN@fzyU>J^0EXvdK|n{uGMobqhEsH%qJn~q*oqkJgQ*UOhL9zqySq;-}VglqyDetBE z@h0l|1LL;PG&vQ^sR}6S3^tVD7?3Gdi{uvG^M{3JS!PG!i*vm=47{JPaL5IBAm_R~ z@j%7hnv?fJq)zDr^x7=f@O3xkd(TXEWRIPfwE|N80Mt#ZO?c!IWPmZ#eYh322x`2b zRN!Vr6FCB9MM)@0?Ti;d2k=#%YSwxI3XatcfTINDQgA+^Vakw#3m}6C)(KT&)8Q%k z3yS@JPD7HfH+E#fDqs5*qY5|vvy=#`!G@G*Qf;3a(8DOSitQKC8Hk|}QD>kA!GO<4 zGUN%m?2tu4M!vj4UBhq!fgz-YYU1sI+Tm;m$czd1B&;H|1=`d|>JfC6FXNZ;)xQi` zaLORo{0wQGw7>dq)vt^h?pAd{wt0};)gGEur01b?x15ZQ@AY=qu0595N66aHzVkiYMSt+l{x-3x^i!4wGxCXAngW3?}4_3y@ca}5;f!%9CX@4?xJx5NnULhMq&uc4j;tG zf-rQZ7;K}Fv?Ej^!Ct43l+*&sHreo{sW$o=w7R4^lXb@Dd?@)-;#T;ftYcQh0jREr zl!1EKN8wN<0_t`fC}N3uSVSgZW)g*K@rohMTnG?MfK3IAw2X39iUzE^XCD&>ww#!P zS^eH{xUVcW_RPfM-tCcb+l7@2>+K*?L+qxiv9FLWAc~#Ns_MEx(NKABuy44xMo#}i zEGxLBT=9ApExYEq>dgxf9{!P`noFXY*ClsZNlzAh?TS)72F|8{b zaN*~(ADJXp$%!1e%p8K`-1HQ5P~Yh5i9i0J*W-#)KAzz>=P8cbW#p`$o#CpIl9DYY z6uB5p4fc}u*ywAIcmqLbj|@v#n|1>2k>#Ag6wG9Ek^0D+f^Ez#hHrenWMRNH-v?xs zFVt&XV>Ezs7;BkkrjVe|7@yiOGjr+=_dBv#D_iB z^sm-o8lFF}A52puOp5P7hp0ph=>sOpDj}8uLc6 z5yPyvn@z}Z%8;q>+VqrRTvZK=WU?4IzJM)3Q7Kxg*2ineV}!;z~eT&d8I(b@wwXw+Wa#Bz0@|61TMzx%v8h#*j>?Qjc#VMy5lp~z~qHqB10a%k> zo`n+DJckmYdkQ{CcThv22T?YoOgIDIvUYA_in{fNuuj`F!gv6AuVqH02E>3109;9v z0l8KN(eNP6oc9>pUso#v{*iEHIcvg=*9iP2myS%}13S|3EBO zLB977^z{$jupb8&TDKv9&9S49dtS-<=u^39= zP;;0I)N>T!vVe1zT^Lb$0f3Iq#r}!i>66mpx!I0WM@Fx^_vpKw`pOR1>PY+HnlkDh z^Z>J!Z)wWfja!$`-jZM6(LdA>OAfL=LW0P6Kmre>#A7LIds~g$W;9Xx8OeL-VOBV( z30MT}FR|P3KUqoB)d3fhr`B|UQie@stoDqebV(X&H3HD=>c-OU4{vTP7*T!g4ERs| zclHUy2B<*a%qL(P1$U9p0%tre1H+MshGNi-=g>rFwZj=(l)y?$32hT(HEda}a$XLyqM{{Sn3bbqvq8%3s=y6^; zIYLaP^!0_m8K0jdgyq@z-qVSy@~X<<=(h96j-*dW`?S!?ZSw4`&M{YcWZr*dV(IkZ zF=o@hUL>8sid%)Br0h|+kOF>>(?W$G6tV^&0(`fp$(WbT7BXfx<8f&rRMsB~4vFH@x-!qyMX}!+cY$y1c3)I5bJ*MTdls zi0_{q9@#pYO#l9=^g9-he(n+f%z4L{t1Pl3c>O4+G0c+JKPbHd8WYgUsQBs2Ej2;p zg%fxPNt_Wy`|Q7WF{? zZ;2Y9Hw)jtSXUyl2rSnx%o1vFDfw_%MQGIe{pz70w-OE+pKsDhW` zw^ubB5cKLu6CBO79qY`Xdo67SzD(&B5rZz_1N4ZlTZFb{sx~(i`UG4QWHP`Lio)QJ zjqd0iI@Hn9-rri+I&Ghs_02VmFZVVzcOBka7fU}TC8gmfild>S@upa`cChy+M=ENj zhnhxBa(83@glQIH5=P?dk4e8~M>r*X4Mt)^eWb+7Kop4kTOk;sNf9zTIxb6q3p)-q z!wSq05{-rxrYh$SCutt2bi9hBJXxt2J&sI+l# zcuef9EN-ZDmqK2yeMvUocDuWwv$QJJYZp@)Hg1!5FZZ=}hpin=RjZ9fbu%Tw;$lZr zclL@pC{2R)wZbWWDU+^7WRIgVPeT0rK5&WwT&1~;u@Oeo3iKL+27t|?KA63P*#PZh zODVSk;$BU6u*F=`kV_Vw2aGY9db-(N!MYq+Jx>?cbwuiWwr$(TZ;5NPm$1Wr-cwXv zQ(e?o*${1X-Z+!JB>JVjSS4zOfD5=KHBlR~ThO}!Kx4Rd6*NGUE9nl9*@7ZuttLUG zvfetBb;QDTQBos-tbt3;1T=ngf;s5`uAvGu5?c5xmswe86581({M#DrX2&~Ax*x9^ zYH9e$r>1sI_YZ89w$3`lB${v!rqj|cwnQ%g$L3NqjS03!0#idg6ZS6cWWhCJCyR6% z7NN3u8;S|Px;}rQOhPLwRWv9p)ZC$#vFI23Va;L(TN}kcLuC#1x&=!X*FD!-=X*7aCYAC!=_M?>LwF$Nh}VRwN>JYF zWHCCfScp~M)qj+#TTXm}ZQ!dV!@R3k1k{eUb_6Lt%A$;~{zlyZR|ytT0wVrd(t zXylx9GjhVHjBXPDqnA9U%2MR z)HEINpGyCBTUH@@bG7rP{gs`5KU!=K7y08|rPX6w`U6MCILDJrJ6UUDH>2ZODLq0OqfZiy%h;k25Ijo>^sT<%2t#n_8z3Xc^W+E6$5ueHOCt8 zc?GxN#wkGdL`eg{aDnrjVf!HWOX6>IhM@&!?rTa3YWc{!$G7!0HIB(!#RKQ&J~G}} z;&+eMO<#NV@V4|*w~1fEGWF1@U{^IGCP@u}NR2o{|y8W6x?5=>N{ukKs z0IshWE;f|Oth6=?fz=MBOp@SAfU^v^7-U@X!XI1~NHU>-HS7rTA!Z9~c__DoMxvsP zl*COBrR%~Ba$aGm{)Ke&27|%oAav;Z+5i%JqPTc@s10NUlYoxw?&T_x;*3*BsJ(l| ze|?~}tEuI#hK2_wdv@IpPfqEXEekhKG&iSqZE=^R|50od{SSG<6~p6Wk;sbp=WzFb zINm*(YU+{5*2pP zO9@qj(+h~V)vuTu+q;^&cBcMvVi&vT=89*Vr}uAZ>$vmywJ@}nZ>v4nY3z*GwoHki z9v>VSgGtbIv^u_XWTCcXshdkc5(cMO7n`JT_HwBoeZ7q`?lQ96W7MYy`5@#n;?>p^ zt~OAtUS74LTut`NxXHqZU%)~~?1i8w*@HRHETxJeM3FAt*3y6jK?OGmBaSAt@)M1ArfrHg^0mRr6l^#k&DxsrW*wAPsYd_sSX=W3ggmrT zZiP?l9eF;jEp6pjB<=OBvv-6jt4u@J<@c2C&=}M&}Mhe;h&RCL9>Rj)g;2l@;Y)H^mq= z+1o7A2+RZCZHZ-OX@v=6OGS9YfviaJ?l=kVs2qLiDXIV5+)Lxu8{T%{%w%uR=+OJc zE^&10wt@Ek!O1N{ckXr-`9HTW5KjtCE@to^-JU`>-s!6qC#he*|za07#Ilt+mUvTzhK2s^8p6ApTLhBe8< zy3Qcfe(9cv>>Ww<0B(*d9lT|VZjqA1X++yOtuh?K`U;%gaRSJztP^N4jUhd>zoo0U1Niq5F~d_5{qNjz+H)xEP9z z>jX<$QRYT|4OGX2hH!*I$<5M`rRbn=29A(bw+qo&KZP7Rp}s@tU16{@XB<-AAP7f= z(UH_33okX)g`p2HqGmE|C~-v5fHx*0wn`)D-SM)r zaOdO{xg_7i1m%-6Q`Z%w;{K{K=8zog);J_V&UzxJn7Z6fAmIv-KE~2}C>k#n}*^VQF2IP6)rRYgNfoEwV(@v3V6X%XgA87 zIq?YbVFytU8;FDrVV5Y3j;W8Z^%Q5Yf{5i~VVq_#uXR#$(; z&(%+yyG7g|+2Zw@Ox|r?!0@8G%@EgE=xV5mg+l5A6;-JYs8n%&HW_{mM5DUdKlV==_$_i|J-v_ z1MTuomVfo)+Z(3`#pafWSq_hth0BYZQUgk5{yO~6t`GSX_&*^${TZW34H1Y_QGAIw ztAT=YC~=Xs>HLnEE}pEPLf6piTu6N8f#ky2h}kwL~Hy zf&+EcN~Wa@rGf;oh!SzSVr>SC4bUf$DS&CSn_y9BJJw6+rF*mx znEt=yboSZH^90s0qZ))T4FMixy|O=rPGtOgpa zWQGTtNJg;(a&oI(NpK1?Edh9AsTOJ~b9KY&@lKd302VVD$T4;`qj3_{fzUya9!b&4 zf)h~374=(5b@1`9VI&%0`Nh>N&z~C{`M`_FJW`LiHq0YEmWR9er-5hrCVbzqtN-BI z$K-)`7U;WdI-u-DOIxPnvb=z;NC^MqGsw15b^;KJ1bRzR9O?sj49DCeNNfkxf>A5P zVYaH0i$eq`Wb`Y5-M86sI3CInR&a_UJhFIn@6^2r^b2sY7_VV`OC6gT1z93{PRWRt zca^60@`AQmbKrBFW}-ZD=E&L-lZ@iMYASYDvqG$1wd~OFJV<3n>cP)0^-)a-W$_Z{ zBCbhscE-6@(mNpz?IaG7Eh`W-SGFA0LB1B}swQJzAY~b=`<%ZB}zsoZNwFN0Xjp|-ZY4HMTu^(aKuP;|w%qF8z zmANR<$;e!U$%uW?Kn3NUbdT%69+bEvZvL#ey~2o80`ip_h{`ayA!D_V>*fZ52}vR> zgnc;dks9)jDM%8XRK9|vZO%E~ESMfb)l9^5OEHnzM)LNJd*!M(Jy|1)y3>k zi;V$GY-%j!xgnzOFad$=K6>xf45l=MkxdPT$(a4<8DuN!S3t~$>gr8=1)oTA;^Y9` z+G@2QK!Q>k^)MJzdKhdx$$I0teO4_9NEdBsK;Ci)y_fCJ|ngp(oAA^g6*z)7Gl6*nnku*@1t*dW77~T&RpFz zxKA`ongL{#etpE0Q*UTW1BYP4jIIOl&Xu{qo=PNilM6);bM|rhGjT?(B^ zIX^o+H9k7npKNb#s;iBJD$0w|#{*F0&|=vcVePs}sH?|2Dar zh$oy(?kn4O=1NE7;7<7z(w#H0h2zQv@Z?NO!}Jvn#ukr1KhW^{?_|OQuM@uY8E3}a zgyAnris29F24({44F62_v(}h~?oO#Ku;AfVGr_k61N_+&MII8sVU^z^(aI{TW&IE zvJ=3ianB}afc0BwaA9H|)4rUD$-8KSnCQ4%keF&RmCjUB^IfIqGt~Uj4R76j$gFsx zen#XxC-2mf^E3BZPHoo{l(K{R_9NJYX2n#HlgW!if)Ft$ z0gX^cdUSq82yC4+VT_h7uyfwPaKvYM^WiQu4h*O{B@~~f4py7UDakb{Sc+;?dT4_L z6Z2nlMtpVnzH8S`%eyzuG^tdTKb0>L%c0hlNpS!Ub+bZ3_$2L$L)~tW?C5TX?k40> zKfyifCWv?QD#DEb{4^5|avA6jhpAn*bD#R=Mo|Q(1EXwq1F9b-#3b=9s7OZJGQ7Ebgd!$_>-2^GBUdd$6guQ`i0Ki6Cpg|J# z1cIG){VC3CH8DZ!`S!{;pPef`Ji7mM_ltZBU#b{Nzey_3q$f-bF2bD;r~l)LuH{E! ziZWBxrb|pf(#&2ZE#XJlNV~9AJbih56iEq2N=l#;LA7Hn7Hk44wTbB|tV9icYJv8I z0;Utp7W6o5JlnvYsaB(XMV}ue6;TZMs)y4C4`8@Uv><+%GaQjgs|z{GSNH^O%&j|z z;Ixv4g)@zHaGN%79c0W=mc=F~$sN!3zGCb2$Z&rzOTIwDSZy42Av`fCTj5+#CEg@I zWYl3pDN}`klYG0y_89m(ab21 z$Pbh;u9+3OoN!jVx{K-X>Qmgl@+0}7b93oaAKG($vl3|fPG~53bad-mI{JHOCWhH5 zCG+~pm+v!d9~n?jYDGuOu*u!ixMQrnzOIR7xA6>^Z-d-3;uDt#2Rf};@8=M*tx(BB z5hsURW=Rq#i*}Mq_vkul#HOaG3o#0%*ZwC9^_r&aK5sR?8gvTEF|no*(!^RyZ|gP3pmxZ z8KvM0IL!%OR|?J$1TU}87T{GVMLso(x0MI9zb&P#{#Y|AwM|HaRzmtZnKxGEVV^V&i<}`SA4&FrnGBU`TigC zD@-P|J;Lq+U{zzhrn1**|zNyX>20 z=0a(-UCZ%Lti~+0ffi?fcfV7iLfL|Is6Ls&1nmYXEQmrpjrd+R(*cH3p-3yqVhh=^ z`I!zFfnq^sWhn?=+(;@g1ep%3Thls2^e-SI09c}7YuJmBC_@runGWPRCkG{jEh`p^ z=whLiLVvT0s@c5f3E!vrVfaS+=^Xgb4=DQ11tmrzQ~O{G0Np=+!RwMV6alCfBAyIf zD`Wal9BF-u$kc`FzRe85)k3xvGBibG?}$b!f96JJL1IL#5fFnTjTRsV-8y;HIImIz z7^8QTTvTrP^e1!RMeVoe(8Ex}=+P_u>>_|EWi_PPi*BeQix~+<8#Ug`;!^@mnuU&J z#BQN70hv;XED9<}5eWzcoseB^V;pm}Ghi@6JP&Sm2HoqyPeoL=LlMn}x(vLflHJOA z>PqmIxx@{F*EYbl+`eS}REGTw{TpIhPR-}i9|<`iZm;mKmlLs~pq(`dCv`is1ELi> zaSz-ZoQw#$X*Ym$@+UM^H`@6Xc9n{y5BH=>OFRl|o{3bC^$vVmF$X^b@;HQH;omQo z_|0fktGY+bINnsM3*b3QeK4Z5h!WKiAGT3DI;21#Y{yM07u*0;O5w;@gd`!*%sxAX zXa&iyW)2MJ?ZG!UN6sgJnk57uK^_+Br;PkEGQ$!o3@$<6=GtKzc+zz#U5(s_sQhaJ zDRnIN!}y9zA132#$N93Mh2}y#&@9G6f5)!%(LMgIl!{EbYp1=?p1iH2MoE9a6WcN* znlHAt7*VOjH)RY==#&g_{+pcOUdm*2nk0%GWVzTuT#Vj;tPFz`WS52A_a3*TO>G?4 zPUSSQ6vwNd3;I9zl4L(?Gjrv95;m&}iuRB|jmW!c!|Lk@cN_-+xX?K*WfCa3W2J^# z|B3c6GV?PZClqgy_W--~s$FerD4QIw?^V?K0)1euO z%v0P7n-~h88uGHBa-bb7zgTleDS+q7yFl-1W(rpuP}RkaV6~bC%aDw`dvA=#>J}4fqKRw#s+F-M3BaP!Y?mWm?c#ofjd?KGzMNF=_T;1 zvfhipHMVnHV>@aRkaC3*1P8;`%gwTa3n@E=Xk(tJ&CdaO!z%|iH%HDVfTU#rBI_$g zI|0fSX==y-BWJU%6p6DTFtT3qpv}ntzA_-P`x&mC5c$b|SRV=*mCn3kAfqkcg6*&i zO~Nx5<6cun(9}bbWeI}0F_(?hWvIQB8@P!f83Us5kbIpPiEK@drlO7jZ*8OK%o`-I zDdiWuQwOruq)R#jZ2tE0vP>exaO1#mC_R>EdadkHz2E_NUz{v1u1_q3WDUaCE>>0; z87>AXb5IW~iYpwAiGiaD-!de?F&F_R)LHV>G+nBrqF1!jKnr(=Z+0XqfVtG&c%<%i zU{K1eY!Fc3jCRm0xRuSUMA$(=zRmiiyYfp{MTNvW)Mnfq}t%-(0ykgAe-bd<8GBfCEUYKgb63pbNByD@0kwBr> ztdDt~ijaC%YXX!+G~5wr=Ww?yIldz|WRdo33j`E(2o4WK2l^`n;P4FNaC&WMLewZ z5WqkzVLuqCDVW$#35n})M>r^zzF2YVoX3)05dT}7>@PjY>T~iK#&AKL?Hv=v^N$X{ z_<7@wZBujcE!AfaTYao5N5?%-Q>lW}1XOT#)mI5~V)3P9tjuiiDVppgvi`s@FfSkk zoGwZPBQR5{;Y4)LfW%XeD7gu=!3hWkr~8|w|+0ROb8H?Mh@sL zZ<%03DMsd;GvN&9GE;ovy4YY_jc+ZWEu??&6|3`0hEi=4g@A!$mga49z5?-|7Wo$$ z5M0($p|!xCbM4MZO`HffIVIkBi9nNCBNUSGoe&Uuy$;4A6g$FBW{MpF?C1BY;G%v& z9qf?ok^|eTQ4SrOn1e(_7tNv93OD%$BpQ&nsEmF?pO6~F@=VaqH#tjg-wjBER0ZIZ zS#KAF7fHjc&wwX0VUWW|>w_n+BM}VCR|ZWk#4Q`6CF|q@=})i!Oop#V=og;26s;&X zG4Ox74baOJ*Z>llOfs2F5SG9fBRz_6>{vE3vz!#HKn7@~!UQ6hBRd%7cjVsP^l0cs z5U8bG7ckkS5pLMmh zj&9w(cQ7?EbpGDqTF+&E4}Z-t*8a@eLvr_N@ncP8byoL$cevOeuCD8=YajNFc~5Ma zYAIK%(CVA7QSih5uha(Wk$d~5i)X+XEi0z>)Zx2}n_3iApf`B3^r zDnw+F8BvvI^-nCN%8?>1SmB)xSCTQjD76IwO_)_k@lPEo@LQ+o zc);=>J>tr~&!pxSCJs$Z96NaL>h6Q$;?{w~r$>6l=CSlk-O29G_?Ga#ore>Z_nc!^ z;p@MZ_Fz?3A&A7MQx~G85@B=Ep$(%d3Cogznh))IKhH%+hYnH9!g7V6_{ow%Mx;u4 z7TwJ?PheR^MUqfdU&L~eLY1^IFG}Yw)ey*qEw}~ zX*K=~OiP)%gD6kyAAyuG1OL$+F=Go$iu~wsNGKV2pAq$?+^EO4DRzBM&mthE(jLC` zSDk(0=(+i0ZyoOrIRj0|MRAc7XyTy)U4H$F@UC)mrnclP?VQZv&JB;K+%=SV^ zwc+pRRL|O8tTQ}k%u=eRveM+bJFl;n97%<0q zNfT%2t}ac#B1Kka7@b1AL?pv*)tp>=os~DOZA*5|bOdgaO9-MRQw%lbGrBwn&KkSM zF6_(NmzPr#h3zdRcG zIXv$xO0+o zwrHv%_I1kHK%>Hm3ECO%#X6)ctxtIO<@V<4pqtr7v^YXz#D|-akAcc*(s9XGj>dyH zv{ozmu3V(TI#(5A2m`Dp^q5|ERL%hS?yOekWdb-wQ)68s8m_7+K`(S=`R>BY4{s2V zF=dGo2305$MpT(k8l`_P*y!zK{V2#}xIGgI1ED6XLN63*@-{M_p_)u7gfjH`u<)*n zWlkIOo^YC(ji^IKeI&|IO(Ygz#u0yzFhur{!9gUmts`%#B|mP(uy+-3%#hPUb^s7`cuiSp_V#P z{MlK+1(jO*w}M^vz542_pg@zc-Y)%|m_;mkOHZINyKY`qT8i84uFKI-06BN$(WjNy zVBa|yGW?vtI9=~R)Ntoy&cg+cMHz}d%j(Mr#V!`9Ca5GwsiU-ppw-#2AZ4ZqYwS`_ z2FLZu$UJqea;CggwVsu3-&ct>sezYvgGR0{5&rRIIHl6v# z4HS>}B5CZ$DJySnX(BfQRSn=;$hNk`j&san*3uG3#fW=>J9}{n=K6Yjv_mb_6%(15 zXlMyt@e1Q%2qriPQAQodiDaWVx7VJrR$8}B0oq;sn$3gBAaN50>qE#-Z zL2YZ-fGarDHUzpNY1R^JJVJM`mCypS<=!}74DxTCA^NAGK$n)5)|Z0i5Mx8z4P?8r zl5J|cp;AN(!>(j}K($htP5RN=XOmsi9p)1|bDC?69P#zfV*O~L0VW%qxmI;3Dm^qN zhg!17j1pUof={Rs6Bnz>9Sks$Y|jK#OQdq+a1qjt2&5Z02(fCL(LsndcE}a2V-e95 z+@3OpKGk6y%4XeBq^e%UOSs6px|gJy@pdbVAs76%+_f5Jmlwg1^T zu`_L;i&UP!dG70zC(wbmtFM1zd1vW(Vt}qYd#J?8!{2>C~R;GCZpSQ+=I&$s7}^^#Q@DQgX)ypiXSA0WOG2h zyviwaCtFH2L?Wf7k?F|v78FDgq*f1$?{bLb(r{@Q^!EGxQQ!_$G<3BWF^el{pnpM* zy#I}E!uiJPP;pU}vCj@?kc|Y@+dz^N+!3DeAv5G=YzXQzP z1se$ZAp%J@3M8#FPu{?#R9zroN0n`$H^AH*?XAsC=w`sQMZ4eb_qZ^Z4Oy&Y4-u;? zeIJ?7rVv5_pK>mH& z$WuMtL#;|j;1^&gbAr-EW`#8G5k7vowKj}snoA*OCwN;nJ3ve`L6n(M(gi?Y_|`yG zi)qEqyJ$H{Y!FnPS9H1jR1MofzX%qG3Guo0X2=}{7WVsXHlzae_%lKy770~yVQTZ) zd~PSc(}G$tW>_+*0aE4)4!yCB9`bszA^&LY*F?#|eQVWBZd7Z5OzLV<2uWV}*MDdrI$A)-a$!XH{N>)Zdel`@Uov7#v}%E;d>IMjMyrbq z6fZ!DtdJ2Pj|2jvWuahMaoUkOj<#fGp9vPF2hMj7(3nBcK0cg&$CEB%=k;dF9lVrk zs$e!;#YhFi+Ur3>xTc0$#Jeab!C&q#FDZga%%X_J)Z z;z0c9rs+-PX5VM^j}~z4o#+bG*npf%fUk3E*CR93gdjPEDtS|I6GW_x|Gn48xxMmr%XX`8BF`)#c}SqeMKDInUe=i%K5e7t`;|>+r4h0LXh3AHZ+! zrzE`Vr7^X$_j83D0xTe8_;bdJZrot)u$${6RW4h`Zmzdeij3ML9i3nSJjhcYO>UzL zK}M+J9tBk=Rga%w`{fUDPnqw20Gpjlj9%(5( zmp!=fDSUPy=fDE9^j#S$Z52L|vW@g6r@IzTX+Lp%<<7%0Yq zO`==gj+zgX-{>Qfc~=D#DR@ct;TMaYsZ8sQ%^S6pY9zvK&0OByogL`%iOQKsRYh5; zj(mZQ$ae+j1L0ZdsTu}ZNeZrM$Z7}{^hNAhmTJaTLL2`wt%mdOc%qVDb_mr%4J3OQO4set`oR$3HvyKK1bqn=XSPpTB{OxAE63uP$WSw7^wD@{ zm_kNKTRAd_%;sqBc`K^NNcqfk`^~5LJR~@}r#*2`3)pMGl945`;bA&A~(`U?7Sx zYLFeU;Vfi^|G}R^j;TNVQ;5IDvD? zZ1SqxrZh_6a-x^Un|IGR-_VW@iO~@< z;fjj_9+!>s$t+Pnt65c46=SyjDN;tzq)zFJs&P@Ewv|MEQ8DQ@O3<^0RT{jT_DB4{ zHv9a@wxx%bt6#n0$DOV9JzQ`|Pd;BiF}~YUy0FrW;#qOu|2#J@4f9R9yCl{-dw9#? z)2|C_@wU;fmh`t3=f&7NYj+RLj(2u7R9Ac){vqbf_@S|cDLF2o6nAY(eE+4M<_3>J zl_#((1k|8otK4v2xCz?bC`vFhND>%ir{Opb19>kzR=)+X`m*d@4d{f)2!Q*XlF@lz z{!9P?u}jA`GZD#?KkQRT4Ezy3B{fd#h1$R{);71We9|y6&=if9mAT!~RFt*XBsUm! zXi3CtVr7vs*tPCbcPW6Np)Ukc!>Q^E$vjMG{k^2Z-*Ilz@S19LMc_j0Zk(A|awOwx z+n5;mkm5*uwzsuqn6sE-a@CPj@og>h{e=Cjkpdh6I?y&Y+L3-)b&l~ULml|ZjNUHq zMS!I$D6+nYM154JHgyUAkPHiSC`GH3Ttx|Y_E5c2p(#({6E*(nc&J~90 zMxo-wVzIPXIR0y$AHB+BC^_M+{}NnMDuH*!iD<%I&RWcor^Q@cM5hsX2KayRmLF8^ z9PW{Rd~W`$6GwON=$QiPi0g zdg5m<-E5n1djGwBr0d?X2be1boNrO3 zSWdIrC`)i;Za|_@;ws4}Ik^9CQ&bEyf8Q@RMN3#`p8zfG@bgUzpGw)sdXgRWrB0JY z^=YH#Nw7 zU^)PE4X)OqewYL8t&vy_JW~nMFx6y39{)3HY1#=^Y&Jxr8#1PvC(&v6<>yP^SFxpU zV%KYLXMAcvhpYCR1{MXFv|!VLSLxAvc?dd;O|K@5(}9?Vkwxrv&dk)E0YESw6@ zx5hXdf5&hZq_@G7H7TayTWM~JRy$1Um4Vz{L3UW-6SN3$@HvjUKyci;2qxIv(7FIt zf*VD0^N2EH@2bPqfFQkh)u+2XCJRo6D=I}=qmc7Es^BnA8U!JX~AeAKxc}U$Lh%_HM9wS^w#H*V zlBM-wuZKY{pq3n1IZ!@}%{n$#85r6r3D+#fg1NY(2%0KE7suJ339d`JS8TiZ(QA^! zzx#3J%9d8S{OtUnRj$nJ>6smxJIuswBGD55mkICA=KACQ|gNurTb z2&Fi-BEv~S>=So5E-kB>+MX811)BqYx6xQ@c)lQ=C zk%~6#IOEiURVD5whCyc!fW@dCSTnAFf{zR9Nz6^AERI}0fiv6*EnOk9`1=eBTHWgT zo*g%8i0m?%&@}P2-^wrDsu0?oX^EQLJExKv!QQe=$3)!t9!BVK;qjC`5eZjT_?^fx zRQw`I@F4vEK$d}(Za08p5PA%M1$0D-7uT4qX3B0_b)mZ@gOx#jjDiZX;n5Ok!e`9necER|EAXE0imhl{pr>F4$sCOgsZ zYwh2pOQPEFix9OmYzthij>ar0gB=5TeZOwVz-t+)aMvs>i@}t8cH2aKO{_Xpk+P%1aZf1IXbZDR-%{|)NXh-QR z)KI-c&Xy{Dv#xSik*S)|o0WuJs`6EK+R#c>YS;E&|M1k|BHdvrxY>k^WuXpR89bf$ zX!icenTZ2e+Wh6JsvK|~iUi#*y_s=Bvv4ZqsH=@d%Yy-cm{DpoN&E=36C@ZJC>TVo zK=`R5FdY+G5-Kf+Ly$p05WpjV5#W#Mo&dHAsNQUWYXJF3=r~+sfge7H#`-9ahID4+ zy%O2({9fh!V87UL7A+b-?5}IDLYnjZaWXgRW6jmyjilqBd@*Bb{8?Gi8E0{*Cgkg@ zZmJGhZ(78a2b1Gl4Lzb$jok`tx6F(S?FrZ=evCJNWTMl zh6d7q#Z9sc=jO^+`?^*ucAeLVVYkPmnrGjQy!HuBuhOiB`)9G{mWF*9X&fvm*HMkx zu=2BvYDwWwQg+1Yt1HTV=o+Dr3nk?y`_eQ#&*PJ&%RYa~;>EtP|^aQI6e-RC-conbzgZx=Wr5@oU zzbGcNZgBr#VVtmS|yyD@eAFgKYnDqqzO~332I78qyV&1R3cD z#P8}!_tCG5b>k1qH>%VNM%&ARmB!l`^&aF|74pA$2BGkO-2p_Z`F#MRl;sI(a`BBS(e#*V z6bs=#65RDXVHK6}2{q=C-p-Hahbh>xlG<~hhFXpQnour;)?Uh{-|Gy|!J{g<>?PgX zcnYfmj6&(_W?@|TuatXa5EofC`tfOUEH};x~=$yaiOC`*(%#lkdZGE z#Hh(6?WYE_)HYERv#t{^14$J?O%51U^(-4@J5<$8PeYKEdK|Ly0>=1*w0 z3aaGl98ZHSf2~_96LjAH#i_08mN~pd_T{q(71&QJH;*x`@b{AN)s$ypZfasYHQd$K z3Kn;&0d$n-Dov8@;9H~_f`THTYAF2}t}TbjMQ&!K&p`vWS`A1;CfApTSU>A1fLm9Y z1wSK=*nrKx;&l2smQoQMh^4^N-aR|F&(4gYH6MBjBfuU(RRi(H@_)p z=a+Hg7zfn@^jaTx<9wP9(2hIG0t1Pbxy8o5y}OWr6P&-fZ0=<4KAj5M$J>``uM7S6 z->!4AuHCoPKd@!%Ez{$>PDvy3uBjRQwyid_?4;nMY94=2k?Sv{ob`2)YIG)q)@)O) zzeWJ8QLR2{%dq<3b0EtsYmVq_-7K~Og9ISe*a|1+W=7)9RPd z?y;~0u_%-erta!)fei%OM!Kx@7Sd%8_wG2W*#M8(a%xW&c;U5w(43VgXSOb?boN-v za}`q_6<BfF=% zs=Ta}1G~Z}h4K#896AU|q+Bol+!&cDSDWdCyw8b^iGP}&79ah`%3Wh!znyi?jm_+P zXgU1z8$Mlj%hv4P{6pyA!b%G`KwPHi*!}1@5r4U+2e40dMi$p9 zak*Sc7ex`8D5wp<3|}qfxWnnq5Hoa|1&>xG*sfrY72 zu;yxo>r=K!xZJ13TSfgR+$W?=$hcT!^U*Bs>H!mCG=xNlvN$fA82T}PjG?cpPb{VE zzG$tt3g~eb>P4ogo-mP%&CEwapaL8{i^Y9eM@`_zi4Q^7{Ijz5j_RJ~e|sJfSq;I` za7k6|DHJY&EkAI?QyfcFdxpb_%EzvGxTi1FWV<^Oa*nufc?%3wa*%z2t*cXbf6CgC z2nLX^XHX26W;|g-9{GJpnSwk=nl8ETP@t>S!`Uqe-^zvqW^iwr0gFUEoPd1ibw}k4 zSV~3f>qG&KHahD&5yhm`nh;7IQ2Yu|X9Iv{YF(&au3^TWvU+Z(MAYRoP&e`(QQR_t zbI-0^LTi%tZ9iW=w9qtJQeNy2lvNW=n#5Su-$@@r#N)`sE`nQdF5Jb?+y*LPt9+c( z<-*(Aqaf1R%&cK{8P{ccv=naoxBJytt7B3FOFMV_f2%1X6 zo_IoxiUsKwCU1IFj;UHiIwn0%3dHD%aQeSah>PC=BbE3SP7))tp>Jh11@UI^)pHZ0 zL+KxhCyAqAsHiLz8BErIMaa(W1gS=Z|4!M5`kI>(#YIL7*(s!a124=d8!dERQ0;BL zhlqr@+ff7Z1Vo1*IZhy?BBG9(LEu@*Y&if3Je#d7gSD0_Fol89S#lVbg-y(ZL?QiG z;B^Rx5NqRe3e4rwe+Vuw0=^p&kO7?yc6b#PJPUlcj^+)gXTgmDE{sO~Hgx9b-6tLp zzo2F4Z}=Abcz#aB+UMAT&rP>+m>%xYad+>CqI9!ulHZGMN(vuHS>q_*@*7R6j|)KU zl1<`W8&I2qlMmr$CExGTS<_yd9UEnFINQACq z=z;7C$TIW#1k;wNky}iDF9W+eBVN=J>x+Ry)YcWxCP^2S*c@UvQwh}@QM`1l0U_H{Y2le2K&lIX5UZf1d z&w>d^L!{g4N9%_yrNRsupw^6B4#) z{VJv(sAn{Y_21oLR^hRft*Od~oN}vKm0%r+#v06&{;Mw-rem9}F$PB5sq0+7$nwwa&MMO%&s(vnkhTvX#I`D$1QEyIQ+82v4+Rb)cOYlwuTGQqnnmhLqck(6(L1i6ECAi9VEE zIn8dUu&814s3}*209^*7Y;uy^@lci<8Ulfai3a3X5Ud<3I#34N)EKA_)JG#cPpFLG zGcuXzS;I+3Ueyn)oGdktr=_srd`2@|VE(0a_@xZNf8cRN$uY|z1+E$1d(Ymx42smu zs)>rL_Gx7YUiNx=6(22A9|w+T_W;K8>tB?=pW)PxWjQrlhG{mL3EjP6O$Miwy}%Ic1(}wRTM|vHu{pio$YdEgTYb<^j&~d)zMSx?{B< z&<$uJ!W;GnJIE&GdB_~`T(@$LbpFMEEeeTSD4;Z1QY?R7S?xO!2$6%9 zyrVpGHVNsR`&FnI#DU{EBzzc^=s+V>ZPYdZ&zJ#E2b&8(MHT=Rq4q#UC?aQ<8zqxS zJP{1gzzhaInW?b5;I7(WVBQ#bs+>;Byr-Zz=^ePVsDUc0%6IymK0m6{GbkM@JUJ&z zx5ggJAOULRJEsmaWDV`yC>@~mJdo=@n5}w~YRKxS#%x)3+!S!~c9n?FO)#5QPe&NF z6dQpJdml(?5gLU*y%hDK8AhBNv7JT}FfJI6pE@Qtl9R5Gm+D(Me!mda1f^)#riHN&w+# z7(rcEHZeioSQPRx<$usjz0AAXl`6T5a7z-z43&mMJ z0i98KNim+D$vLN4to5nR$(`xzv&WVjQF?~U0b6Isn88ZHjub+|TOhDhC8Q2n1kf?f zru#r4;1|F$W%dGWCxesVgY2tR9LcPOID-$u09*!|r*j`f$1sb9YRD}iOOD_IgR8w< z-3qQ+4Nj_JInlw?5lg!GQu?31uYd*>%b!#@ihzS&d4}nWcWx?F~12WDuG~b z5gxl3Ee39s#-|1?(R?2SGXP6P0l^Rvxh1m5LXKE6+!AoAt-@u*gcX5O!90Loxy~s4 z0N|)4kPky%wRlUSrK+;DrmTiem(S~QGp|~SSW?KV#!R9-FIr7IM>P#f*U#Tlv30JA zFJJy=Ad()LWIi<4Li)v?m4y}{^54ZUMipz3UGv<9#!$^aj=N1oHBUWaca7S z-=?g|nwZ}vn6klH2c(FDgpeJY>OD}eL_iE3#dhaI1UU)mCqFowKLb#LU{S7zG?X(9 zg0uP=7~qg23pkWJm3}-0XW`WDb|GL+r9V^}&myy=@^Z*eMdiIB+>qXCmEX43@l)03 z6aGn_cj#q>J6}Bg3iI>)72T=25bS%;xU;Ovb5|%WJ|Hv*@48f5X0tL_Pf{cPe>Dw) z!C*rWB~p4ChY(wn&>=hrlyf?^6j*D)0TiM2L-B;q+j7`U*7BCh3+;UZ{RXfZCm**A7rJ69Igq$%+gl7&f(~ru14>+w%5GZT4r5PVhT`OZ@ zueTW9VFqm#j21_A;ta}2Fr1B#F|d7dITBzd4?2k7vcG!dCm&O2cH;*`6T)JNXv{t9 zoFApgnYaML;v>`PxAdmU0#(M>$Hrb$LSbc9k>2fxrVpPMDf*zuLb5=S#v{bUYcBx3 zn#4X2hgl)@3Hh6n{r7>GShPtxhHDkpwvCYE3L!kHgWzPwFv1+CYK^1oj&frAY7uQ? zuc9jh8ZpML`#cYvsc+fjr_q5y^g~(C<~}XefN!vp&c#6lb<4?JKF_ePb~;TaXUvHM zf;cHv5|UVVp~le>qmUVJ;#kNG7aGMvRBs@`PHW9OsqdejOCNs~h)^$`JR{`ukl;Th}j1tF#5%B z8^^nzNjs#G^#Fa1wlrU~{LpD}+2?CbUi0{Rc)qeFBPBQ$9+ln#uC@zx!eYuAtu8Co z#DdCDn@*KkP!!?+Mc;C8YR2bRj9;K9g9#th{j!v@)zz|qj)|4=X3cmtpp%mf%9E+0 z;@2{!dQ|$z*}0;~UzfHeBgv*~x8LZ3mHuMZBoED zm6et4mF>lF*_Or;yUOhbB8DM|5WGWSGEWxE@lh~n?5H+>?APhvl)lHgIIz@QY~8*f zeu|=4N5;l(+W%$`7OxFkwa2^9H}_1Av<}gNk1+LQ+qS!I)+Ub0)D6fk#DyC#mzQDb zMm4cM3Y}k6nk&NWRnlF}9OM^}9z2ge%9|_ZJgR?cDdj~=l(-{agj^G^KdxfFs0&xS zDk>?i46Y2wgajvmzCF*DzSp_fKd~E4!#YmQ-(HsJ-qqQ&GhUCirtf1reM?jKl-j9k z-)?)wRM_GfZlGKp2H`FJFRZW^OuM56iOrBA6qiG6TE`V&FPw>n@cVk%rb8_q-* z6@8LhwzzXYNpKrP_cAIlHuFhzgZ)v~MuD9_&e|fFX)Hq}69{fXxkHxTE>WcuvK%)i z6NQkcHkiubur7nx4$rfqW*1n1AVtaf#Q*$~ z&sq|>GduI<&6_u`d|&LohS7}&uij#J*leMZzSg?vOx@VVgGG5|O&!zob&+jbGHsr$ zmKwEaU)0urV`{gnm`Yr?bjMZWCH{Oa(fag4BNZu0haPf0EJ zRWCVv%39TMoT8TQ?v|p^C2^2A1UkS$Q_|a`wtlsSD38zI;ZH#en=}EAPsBk* zI!vY$5AzE`it$|z^By^WZ+y3zv>QADn1ilRF4%Y7oc&m{0s2$UGOceu;& z2)H!y?4pSpLPM3bj2&RTvjN00pE6P1ihgrkTuA?##22?^4#$y|}j@*UP5^6$#z0_j8E)^_K2&HD;24&CS zdIzuWWN_+Sq+zrX{oy2%D6|wGOw%~|Q^JmbF;fl1Rsj@8c+dzvQ0)jvB0vQZO?wN4 zDk><#V(mi(D}dTXQy+}>R2LT(b=y1gn);Gyj^HKxOh>40`5sPkx$oC~!_HyXV4f>G z+Luh@=K97~{|y?24}rp6>`&)fDl1%0BVjm*&@vRFF___^RVPh}*0^js$#@9&HNfd1 zhOH7319)&5RJjC%gP?X4d2LBuzzAcv?2LEBF4_;IirNLf0*4A&cC|HFr7xF$AXp0u zE$d>UxD9p*MMlGZ==CC#UKd)XrOby^_z|qgMHYkrN(_fiPk(ms_|E?J_S2&ubT`kh zSP{!$Q*VW|aDG@slwDD|b9xEj#*wyLq?#1QZ?3NoRox@5#Mc^VQOs;m@}BE#Z1DSx zl(s?30yr&1M^cml<_U$G(l$&mmXKb|GMt8tBiw0+d}N%GcDu6V0M-cdHsD}Nq-}`h z8C$I@c!r%euJG{=sZ7b*{Xtbr85O>Y@@@)PL>=C0eI^YI%T#s*n-?|+At>V0xST=I@fwZK!>Cx0`GwFRnhoq+>zxc?#;C-MXN`llGMQJ> zc9}#@VG)G&7r1FWhk_zP2uIdij{gX$&1E#5p2;|GYfEiX79l4}e9AFBAarw4b$X?L zreR={+j9OH<$1YJ2Ms;jS&~l04_8TQK_$3a%ONoAY=HeTYV8i!)#kY31t#E*25Bg1 zR>2=+i+~#t_2wv5!X`mGgHSb_ElWJs20@o{yef;36Fn>1Q;|tpCEg2A_}1(MLCV_q zVanua9@;q4_oE*IB!ZvI0u(X|wel6I@B~YF)Cl4vaBOmg##`p|bGtjQ-@1a-Uq;)uO)!H|W;8D+nV+Ik}m^?4aCbHYJqf;-y;ajsgrV8@0^;viiH@dEIL zI(7GG^Ta- z)Qp~@@iD-TT&Ov_dE)yj!DTUCOsdfAVo){fSy zN}nt4r*Fd+l(F-Or(hXzkPA+|nb7vforVCqD1CaRhdvT-D>lB`L;Py9Mh6HrSHDaB z)83b`_tSTi^l5DRd@NHhBZm_XOH`Pv=BFj#l!RAasAhT;B?Ql}d&3(l^&$14{8fbV zcuQo<;qw3(A)PFa|G&_cpKg1%6$yYPoR#mA@50vIC|iY2ZJlguC@Zxg^)oN3{XJuJ zyH<78>^8X(Py?IZ`4w3s1h!fhkcL50ZB^A_9Ie8Xz zmfI-91S~Cj48A1BM@i~LZ`Mr2`(1W-v;{U@UUxXDsx$?ytx-&u%P4;tJBzpGH>dwG9b3@A%FWSIw-t-AZf3b_-_5w_9zntp{%J z)(Y+u{v!vOjY{FDH4JlFmXn|GT=q%39WZwm=zKzO#-uQkv$;gO^Sw8H#~^f!c|hR$7w&%eyj zcSd?ppOx0vl$%a>sI5C7bhry&fbw@M>zBr&Hm<`VQ;seM!o3UEKf+Ovuq8oVKzyW0 zzFD_0$8kB()^_b>2BPrFp6IfXveeY$>ProiNSa~w&X|k z9q}b6YhIG3Sc&|PbW6^2JuY?4-xpu=Pab;t*8Rn+>F)#eo!bwef2AR!U-S>1wOl#d z-<(!=ud1eH7oqI+Sau7n`Y7PZEqMw13R1Wbhh&mc?(nKVLR;}35v$%iLD4g1!aIS?PGM0I&LcAlJzrdqlZ{I` z#&hdXBDrDy(Y)gH+pa8s`3bGA@G#UH)c*OrD=XcOBP=6Mcw+%4{G9ZEQTx&J(*D_PhZ4oUzQj@Z-D%@699L@+ z2zRU%|mvsqrUa7$nkf|)8! z`pDUWh`M+W5D{dkB?Ilcx`Ay=?ExP_nOK=Xg~ec2=_+X$WEFt>X4C?EAT24`1%wej z9gvzpvR$vNk3-*aP=a0hG}Za*1No~2(e&2!sO18HM>(R$?+iAa+8M6RPA7VTojN2> z?!|#7ek)u9{{vVT7z*4OCZ>AhBB-fgvKZ*JR}f%+GpOYtap+)BSVU6P6WJ3tr@`ZZv=>5Srwly9&CHMi zKv@INdr25=6u7QQ<#v)}N+cI+zUwqypful+6axfoy{q&Cl|Q))d<|jk1i(haNz+&I zK(IJfly+r^7<6Yfm7McuiL6loq0(h6Q%${6-J$W=?RB2pyS^^n&&#+2-5{?fo%|c` z2$n8?fC{`zRb**HmKKr~@{KiV0}Gs|G=WDL&~_LJUrY8*L}Vl09{YyQBdAOgq1JJg z2@8`5;m|9|$(jpKHWjUsRG#GK$!(zQAVRp;0p*j*K-ATM!$qht=Wtzuw=NTAExPHE z1C@_xH&P^Vv|P3Mrhva4h=E)5v3yq`5C#B&dkU9(Q-jBckL(%OLj#gwN1y>BN=t;? z8omw+PO+avo#P|i4*~2Sn-&Ss4129nM&SEdu(%>4mssJ5KU6PXTCyWK0|sM2YwO?| z1@YUdAqCEywZcORkRPCCuBUahE#8oN$9D+6Dor0r9|aqi!c;86l}0s-K83|_=PGiP zGC9B_HyDHTX~QnocLx+@x=0x{e0@beS7FX7XGBj!ZHJ1t`8U)~Ck9VR^BQgUr9CH# zRrnvSr|SMP0k*H%$)?G!e_&v%vBcAJ>VRh{-(ffIZEKq!T5B88eO(^t`eJ zXe1IzUJ^-Js79TY<;@}!E2)EhD|&#Jz?Na$3Cw=cjV%L3FxTpa_TI{F9H`Dk{jl|Q z6YYr)gocYRYPS#CifKAao()|HtFSBgI`;0_y%RX;8)r!eB%4zhA-TFe>K8g-x^Vtg z_vkt~MZb@YuS-e=Sb_X`{Pv=PRqivr^)(T~0Bzky7@)gXWDTUCf4=(au~1r8DlbXk zfC`O+vL^=EPows>*2bEmLWj|!>4|`oawrbM$b+W``}Y`t7I@?cqDUxmL;_gS>b@d_ z!{{KWUA3)BH5tvM(qM&?YH>4j7^9?hsc$wJ&@Pp9QawMYx{Y@1=rEP0;l-6mkdwckDjP^~e}9%K$=|QxOs;o>`uG;-wg^$^fa!p^RN&4>dS?y3wNpWlAns%zh0OKa~hZyTLx@0;@$Y#-V8x0{T+@72Wy zp#+d)LA3Yw^Tzd&lTdM^SThh=K)#X^66ZjjTs{^c+IGGF?1`l9FOVfO#YR z6Iu>-1R!jV3#TDcuqkv>SpcjLNqZN7)FplJBqhS2hL+mciA$XmR}AQaP6Io-&OXQ# zaoGc)bK->#fUM1(sgs}?^U^-FJyNEVLIy;(Bq(5EPRrSqjdjX65jD97)yQBnnR-lw z_z;iAg^>Zss9BkA9!|isJXPJfl+rtSNc2VGas2^G3We3n_5Dvtx2u_-AFZgaYFc^E z84h(#S;FPZZbC`zmE5FZh#G!{HSK*XLUS8hM!eiYgEz)z5?8GfPa9SI;thz3?2k(973BF*q|xQ%YxbnP!8-)W=BRA$n9dNyoS89 zCFEd{Zs>AlEW(THb&@wDCQ=SxaR{-%v&fSQ`vFe<8Sm3pgr+H5iB3#g(O&6HiQ^+J_h%4=36 z(02C^_g;HT-=LJ`OMi0JmX>rpeEuOr!AWH6n$f2OVmh{H< zs23bj!vN@0URG3)o1F>VSwJbOR%AWKo~S&QoFavtBrlwv_5}U~g;z@IIsh1X<$N$V zP!<~D04anaz5LV%a@?m}{*uZBQQ42C1XmyD^>Sosv@X$R)O?NM7@ zO>vPAS+|L@4n{;a8TF=e$X2c5ij|aZ9VT5ZpvaUvv8&QHNq!r+bWmwq9e@uY-G*nQ zrj~VxUom;D09{T7H*#vuPRJBVOGD6wr-IjV`16VjWn|~U z?YsofaC>BAA~LI{;|hgx7G#N%LfI1m&N+d|CKO7=27n&~AHjd8m~F=p3?w6X3}^rr zJ$`JGR;QXAfyQGq*c2RbYFlKzS`0g3g}P`5P$<>594{7k845Ds16a{X(x++bg4v>k zcTUybxfhYrUg$2#V-DB2ORhqDz8X9)o?jnlQ?8HGr}9R2>la}&QdHtq8nClg+#2VG zyL5}u@AJniH1Oq69>Q|8u^Xbcit@rNFKksBf=>m2S>UxWqKF0fj-vWWq?1Aq)M!0& zAUw{pbZ5G^lU_ssEr`{|I4F1-h0%dK1z4b_cdtd0)J#U@A=0#WMuraR$uSvn5`${B zqn7Qee%;rnBSI)xky0Rv)aoB8$3Ti9_AWS7>uO7Iz;Tdwa;SCz#=&Zmt)x-|{}W^| zF{@(I3wnTSArKk$=6Ag~vfdz7=Q$p3}@ z;DH_ST|e!2)QyRxZJ8mG((oh@Sn}CM3D61y9W~WO?s$QNeoWhJWT#k$)sg`<0Z_!U z1++yqE|+XL!dy193nl^hd5|duHyCNEZWB^IrQMmhV2bEA;rB*IHU>T9h4e)F!Vre! zv@z7HcAzf@?ocZR#o%v8W(z*I>Zqba7_0-5`w}}#o*Zcig`^K58A0wlr5J*kuF4IZ$VT>S35{bYy1QZJD@=+JHE2gFXnhaTD9P9ai^F z=0M`V(P71wB)0KTrm(czo5VKb)S-i6cmF+l6zV3v3(ny^x@e4uV6(e2iCt0#3HEYR zt|koftBo=`gTVtEO~KXcGW$)QH*r+y4kV#(-iXS8&^gKVBEqb^UX`op3cV&*u@--p z3Dro~bctRPcS)}nnNS~kAxsvF@cPm6+Exqx&!$FUM#g{EOv&GwlB9sI7|xdQ+TIz zwQRbn3%qvrviiU=42(;X#p~(=5r+C9fd09-p-m1%38lBKrJ=4Q=o9jn6umWfN_nV^ zuLxF($LMOMY63+E_Dr|pz{nWp_ z^uVosEy1q(m&>n9D|elXr9(9>gH4EC-#6ddW$ricI$eL{#JxMFL&HW>e@hfz9)3nE z@8S#C!M^!;bycC;kf=aJnVncWh*lIh1`s}>Vv+U(k($WZasruwR!ytnr#g9XeY2tg zS$Z#}HOdYs7FsX0HTZy|Zgw*Z-kZxu|{BDRR#XhFddZmBbKOPxdLKS&7Sm85_$qy4?Fu zqk?tpNLm_Gy{1Iwg{Wc8Y!|*Hf0Il1diJD{?ymY;6r?H4_xs#PY=LM``hh`{>t4>= zvJn??X*VG2R53(Cy+E)%gt_>|1lb>?rNm350p!JBTI8af-r-qTyrvF*D}%Ms#me8( z;SAK6%5s6pjKYOh6AI=?LgK?Ds7m}KOU4R0Z>VkDv#I&#D0=l}L@ZT=>K<8|_l>RH z_XWYq2>G&h>u4)_CAHciJ0Ks-#kViUqp%F^+x{I;)sP2PWc`fEcu`Ptsv((>v{b@2kf52r6~m$DtfP}rXU_)^L1NK4*&Y6G3(ER0a=XcVmnRqZ5j)3-|b2Zwra$cuI85>U#@yk(X8s|e^AccLc3^wk=o>FN1B%_kbGkzadys`bjn+cOX~ z|M|3(y)z|>{^nCKJ%xfGm+QhwuIO3Vs8p&ddZYb9eg(_20~xBKm+~{KCJ<`qasVxy zd{!2Nu-w@Y&?XK+uKevLypM$P*OsmYs_&@BCdm)pKq!NWwzM@`F4|TI4(O3Q>^j%V zi>@dDeOIvHX@<%_92Ypcb|i1yBf~viFvwIv!OV6OfS;ydwyDxa_`m`Iv&csxZ&)}0 zznV}k13WrDRS40oQfi)VnlEd4|EEvQIx|XZTv-FY(x!savDQdULF??yso`k2$XL+b z^HlGL_mb|pzh~ZHb!U?P+284ljzIl<>ZgXf(xTjol8WxyqVNXr)A5brO;sLeb+IS+ zB~4cj?IksI+facIsyJfJF8nWFXcwTGBkU()shyE9__U^~D9dS6DC0=?Z!;}1IjM>v z#<7qPW|CxtqE47ns9z;3D2ApeUWLLRNax4FE#AW`3~8j&vDCNdm_W)GEY-|#HvSfn zBh{`Zc+|btD@yvI+M~%RL5hkdP_W>pgX07(kVU27Dj>_|C8%1tW?ThOLZ$&IE;-nB zR9CJ%p}D{nR3Wdp8>s69!*1$z;OicH`-b{p>ulEN;unL!bbWMgpuIKc^NIVw&m}`& zeXwS(I}fwfT@4=FP*ykI*EE-z<+wi0gh zZUR^r(jXDKq3tBv4b}X85@i={5Ur-3aJZ&vlF~WIh?qmdDHWha1bN5}Di>8@jBANF zfoq@cXpr8L#-zdvQ>K+=xoJ!&x~h~fhp{q?<*{M*tEi(p423<f3h%8h!su_n8cBdMW${lb3*<%C#gBQY<{A7Cr%B;VTX@?MF&WvCO8W# zT>~HwSN4F$xMbbA-X4-ZPpd*X{Cz0Q(2fudvZj{@TY@4fAhX06PQ|#FgxBI?c8E$5 zpN-3v{Pgm365`a3jUpXXg|%CLW-!v*teDe+;|=e2^=;X8WUt{N$t5+%l%Z*utT>{b zRP;|HBP~){8azB?2uS-5K0QcDkQe^laJRZ#BdA~P?CI3j%ciYYFSFb1aA}#bY7Ua% zm$hnr7wP5VOQ-e#JL(#PN$zIF`Vk02v=_m=>DDiF8S5tsucRzs#<2|vqocZhrr4`s zjy!nvX4ogK04GJKKT*G=eLsELMbD@3ZB7vKsod(D$}JAz}Gz1$9mM}Dq9 zi|Sz*Z6>G=%wUIJ@5R{}GPj~gr=R;MH4A}u2Zi|tmCfGqbK?zXejSkx?R&U?WYZ=M|Lk4P0q+Z0Co%;o+__6j0Vik zxk!msUMG|eBo2XbO+bmhSo@TwD8G`Q@5#&`&Ih-23mJ^4SlrDDvICiZkH4}MJ~V(| z10qh%xe&>i<(ydIG7v6~d-oY>? z6BHFxqbWdqwKvlV(wb~#Hbho?NzS!a62BmHShewCmS&*A$FtQqx8S1k`bgx=fBeEY zjTvnmt=m&j+keH4-`kx+e2Ri(p>R1Taq1f<^pBw-Z6vf_lX8jevt2eXMXHcW*3 zin1RzqXSH1UvQ}fKLk>56K}QhZ74llr}a;)Y)A1(m;N;;T3yc9GA`?Dq)J};*DiHh z&;m&jtjx_N`I6h43r&Wg7b)l=AKd0~X8>|V$e9e1Ge$0F%E3fl!UwJNX)MH}0knS* zKg9t=xvNkJptngD;~O4`{WbDLdtIg_GSpQ&F#C<8Um2L&IMQ-mq0=+bdU(UW_J#wC zTX)NSPc_yZ{LRM)`y;XaBe?SSw$z4a6fdMxxQ$CElQH(z8%DQ`w2gb}59#F8^YT1c zjViWfqwYZ@+K%u5F9JkHAuORWLIeSH9YG(*EW9!UFFolsO`@DveNKI5pvD^tmReyQ zFV_JwaqR$?6~HVR+rwl8=YWU&!a|a@#3y}twtryr)~@K**w4e^#-6-D?9T{KoS9j; zZSTUZJ7*5cC*B&&ERIyHo8@4~}iflY#$+B+JEnf@ZlV5ZvEts^Iw78aMT z?%&u_Gjl*btz)YGh{{yg1bySpz1!UPlOW#O+dQ5XJVngK>lqrhV}6Lh#Qvya4?R}w zG{=iv7F#5`G6B^L_6b~D0fK0!0%2RklaGejsXbzM}$Tq_x)(=&dF(^ zU}NVYHSqO(@jWaDg{XSjXON0jQ=a2ZWcpN-9;5I)S{pg-YzkBzGd7ylrpBrYz)F?m z7UdQpHK+orPfk+ZM>vtvQ1oY)Hj|FzpBm=Iw6<~`Rz#Ps(jfHodE6mNzuo|hn1X)3fP&k4ZGf`dw zFlEb8_xapzUxg2*UhpO_>gUdK zXO&YqTIiHoaycD`I2;r@9902_qO=+TPYKps z_7#7DI1`EFlXHSE1$AB%r%ok18?|DifIcRz{07BNVdj8DROckjPN_4>i&o$lX4I8Q zc|G+-ZRVA}NB%EZj78g7__N`1yyY2`)oZ;$*KW(GqtH5jqTt!oVgeMESjn1e8gv0X`3=y zQqPLrZZa@ogQKi#ZFPBBabYfQ0_uWftj3BZ@hgumb0Lvt9$%#raA<2dG_kC5D6AU4 zN}EuAb@d<#Q^T9o%yE@z&-?P8zPoW{3i;TqZV{C?VG$w7u*1vP1LyKw4&WPTfvgaG zD3?q)SqRcJS!e^p{Yy%}IESd<6CFcN^%#oQisMBUm&r}6DR1M7=yu!fNL49wLpB!X z^U|ECdS}nDgNraIh1Zm%?X2zO030*gDMMxd;(Ph~Uyt3(nK|b0sFnZBhQ5u&%*ZEw zhv4MDI*q@iT}+v!8P16Qd?EO62d>Zsxc~PfNYGjvEGh_?S=?+h7M-k4Z2;N9T#csNNtECq@tp*u%f>L!GYbKp|;lMhB~@97M2&52mPg$ zx+6p_URvI&R{k?;Vy`{itkFxHBc?K5Qz}6>!#tHQb#3Y#*|L0YK&=TFd$|w`SWBy& zYD=PSjao?%JCd7PcuX*_5jZt1iUdXliO-`fr1A?QGHRO6*k9HmXPZk?)swZvEGVXik<*C_WMsm7K;fc#?U;>SYf`9a&#h)6k9?F)*})UV1=~Wz zW%1*+EfC-V(SjfcIVA?86^(-1L{ZI8g9u)hi)#>~$IFXzv#b^bMB`8;DOO8!x6s^C zF&Rpgy`|kiHUxdC%AH_ydUH+ zfGa#G8B)!ziP}pFvOEqu5S6uq^rDJJw1~4rLLW(UbY^FJz1h{-R13INl;7|Myn*rx zO=$?UlbsFh#K;B_(^pcusIf2r&_n%s}J7V-YH^;`$H6O;ZuhDEIU zcN`Wm?ASVIxel%sU4eDUd83hkRk9^_n2vP`O&eI+-9SG6yRfcsI`-wqtMP}Nee2m4xgzSE8i&&-;IPA- zLKq1=VKzf@0F>TM4pX-WNsMmGak#l4SaDZF`eCLEH4u<74d8@icm$C!>#-;nk8)Pu z3A1?ImZR(HgP1j>Z+j^NAP((jFKhsW6g;qcAE@mB*D*y2QuHBnu0amL;Oc0|1#KdV zW-t?=i$GaH6kaPr#@z)SLXTO!zvvjz-2pf0CHI)JQd~9z{h^_uVN1i7&6{SYQNoB4 z$pH+|-bQ6hQIO3WMCk?OC~@=$VJA&3sg@Lak&xvHTd9_psoK;llbPRG5OX$+4mCFR z=`^J)H4z?b&HFUTbY-W&6e!8B=C#@&!(SHP1`?F0dz*pnxv1B9`LCP`$9Ywb}G-3pE3V$Fr~_ zXd#fsIxU@%4g!vY2c`yqGL!_E3Gg_czY8A&&UhF?5kAOoS-Ol%(k9!HZ$su}1j{MO z{2`CUK9~2O*T^HMXX++K_U;|c^(QJ`Z5^{dxBIz62~POHt8kP{AuM=mm8%Cw=aks* z)m(3JjEh{%My!0jH1c?Psmo~~2L&yA11?rnv>6&tPk(Xr#Exi3M@Q%A!kl!| z@lhp!yaDSwq&v&_6+w9^*3iZpq`{~)SQ79%OeVS~ ziiHFKEK^JjR{|IgDHES8-f*xQm-w~WVYe!>Y+FDKkJqN%3PQM50>~4$0vN?DRE>L` zjm1J<>LUq-*(Zf~$t>}n0P@v>mKrxf_Ph+Ky% z&V&AaSvt`k4<$%m!4lu^zM6k#+HHx=Nz3}GI`UodRaEYirXqs~`MtfPh1Ndu2z85ONIQyqhO5}D!ii!)3nDq_bKN*u7LW{MqXcfvYo zHvnD^6~`D^Os!Va0uCUu-M~1=&zDR|1H%vsrPE+B0CyzO34mPehNJ83gBBJDESEO` zTH$U0q+I?0U>;DL(<}kHLa9UX(WJ~Ig#vudtMg!VhRZi`9cck<8+jcI3t$t@@;Y)| zxfMWarIk+vn8Vx|p!%rl6+5An!C|Qd(5$kx4M5_0z_GatM$ZeLBaMfOmT%AdX3h~M zgG_qB*DD;#8k!v&^%yBBMZPD&Dsdy027G-So(}ImDt1HhwRoH`ouAe4UD~S!QO|R z)MBE&zh)cajdg#3c;V7M5Us;lO$Ny5^rK3i17Gbd$mU8rxvxB>SX5X_1b#)_QWEBh zl)19JqJow&c{j`Nirt*Il({st@h_)le$_0wGNN^%-YaN@J~9xg`XA}F@5Z9^j6Q-z z`PsRauUEH>^y+ppUkqap79*PtO7}#qT^$XDE~iPeZFE7%7#-xFa=@HnC2O0A;y40b z8Hx{VvNoG}0inip(q@>jLhi*(NpE!g9!9=6l zjA+_$g8;eXVslHT3}5$R#9$2O0P6r)8XU2=4icX1@?|9@UID|b-mqF*5fG?PSmz;3 zs%j1CE^M?u5%!)U?G4wTzd!HW9q;{mU2Edb1=!5CzDqEyTKpt%E|=l)@Yvii<2@Agn|YugXA~` z&T$zO0DA)<88>7TDck^Lvja>C7wkn8>D8cm={N`>@7-ZDAxap*9S(_O{fgEoPHwQR z-k5l%k>Qgl7({CNI=@NgfXn_S1p%O**E$9aJs>gJ36u;?nm92l3ZAXMA85V|c@uWK zb2q%lxfH9~1F|YIyh3aCqK;!ldty>t_pO1LGHejcnpHJihZ-S;MLBupR3YSz9i3E*~ zDJ%AS;Jrm=OyXZ|jY~U#QGiSSDV!*ok_jLN$a*m&4}_VWfTTBD0VYSskq3@pa&5|s zZo4eYURhH|`(LG&0S9$l|5%jbYZjYxzpylfHtwcf}N1nNiEucY9l~L%@tDT#>hPTE} zpvDfe{tgf9zGKT>>)02&qF2u5SmB1feFX^W_|A1~l#b|h;~@9X(ssG zJos2?QQ}_K3=P&`G{Z=O`x(5k@jEsJKA08&oCI|q=OF;B7EtjaaXIV2Wu3ypNSRkV zfEH(oU$fV0Put+KK1^2O7xH1^QY7`H3>?Nhi^)g{0?8Ag(4FL|Lv$mH*<=MY&pJCv zYA+nHyi@QiS07izt(YEO#66;k+jpYmKee>j#ShvLOr zsuy=&EhpS!%Gb^SJ9+BBy?vF5iab|t(n(k$NEHt_12=XG>k8&(c>(mId7}|T3B-3J zLX@!gk>N%a+mQ!t0lFEq#(3~sv>ZPd&~8a@r@RLnWAd$+LfX_DuO;Z zZk(Bv8;-)1!nUZn3#DACd+hiql%7|Ylyv3>2Ol2Zylu90$oA;Mqi_rUSnj*mZYmu7 zEDwZ{Le9eC>MVb6Uc}eg7b#a_ztB8^B2wWgP6Rirl5!p^F7PXq6hOL71;n&u=7Ac> zI78GGVwIeXqZui=?Gol`zYUG`8;jXsgX(#|0P2Y&N!umf!{CkO?h}PrN z6hpGgz*6SHbpt;vfmNA2Al6e-ia=|afXS?sh&MzkKE)oYwqV2>CTj_hIBo5S=lcCO zEgIB&5r}!I1E3{@b?5~QAli+&nXK@=tgn+~8t`qGOKH5g zG6L@fe!Cjjb4$In^*97$Jk(cRw(IG8`<_h~UAZ-tGn7ArGdzg)YLkYd_PXj~AObt=7R>})PnrT^DY&XZA?#$% z=K!ff%K+>;*?^r%HsCgxR~1QBGel$6xVm;*;)YB9AaTLveK6XFIhaj%UTn0*=rFbCSrl_Io86}&uVK6#~;_T_KqeLCZsja9W( z6%EB-D;?99_L)0lxjVkdQj6roC2PZWQJ!b&+47Fw8R`EZkKYz-IJj}e@}9%;D!6i$ zvj-k4$VGlHjz}U|qds^Ro;J8gZE&emu)LKYdv?Cx6XyMB9ez$x;9B@>a-)>j5kBj1 zfHTS+h~uMhwj7vBVOa#QjMbu+oXt>6wisIp&_q3$M5&$Bqv?-dkA3A?i}MTedw7wS zEWHyN5wyrg`K2oUD0;Tpts?^u>@WS*SJ2 z3^JLx;d$m^Yz|&A&1FKl5WUA4zFUb?<6`YoTSBQSDk|zLg6yD7bAG?6p))&^VrPZp zmTbu@VrTV~N(!1yA(-Jry2#nDJY#i!!BC0oE+#ovW@WDKHzgGk^U$5}hTh=}4>UZht>DY?V)3L=8Kh_QcQ5&Th^|5Jz2& zrv*#u!-A@6Ski)0*<|t#s6qkqAk}K4gg%nJsoOQvIlN{0$?C~lcNWHeA^(bs?7Sn? zKknZ&_F)l8hpT2~d;fyBy=y93IMx~p##ii(`hCFdF9y_nfF-0$dNOKjZK|yBIZzlu zRhkJWA67pEkwXChkh}z{0PY;#cc=nZtC9Rfq_DXR5c%nV`bA?cjKPkm3%djzdR=`8 zMc^_AK$Z~#>VF{vAeq>&>%$_ER-;Y=E?t=*+AmHG7DXN^+yTxBpHG1C8EjerwO zReI8?5rIIUG0@n6q;|NRxW8c)H9`%}O*k7;1iq5B{MWqCxDRbeaV$(;Wzy*m!kf@H zmEuiUoYgI)xLH4kg){;=wo2N7n{~qUR7FZU6eghIAh!-Se|8i$YZ42j0KlJ+q6${P z{Agl3@HQ&1pvm!7-zEugDZP_fY5l#^_HJNE^aAJ)T~=sRbUBf27Wv33V~RG=FX$S+ zO1qRPi>;fTk&#iAAreyyOQ^&Ks>*U(k;IE^7)9W8T;1V;ImtUzZvXyMvA6wer0Vzb z=TKGSM9-s3|JHRyk0$TO{`5d!PF?f8clSs(+LZ=t?04|##eO9f_0~7tG01I)x5)>w zgf`ZL!gKcK+M2R_H(ayi)@=qU+F|~aj0TVba9u`176Tw8)OyP1umA!32#2BKaXOSN zXrrQKTszZu0h;)pbt z(aGq`B7CoqV0+;xM-6Npc(}Abi|VmAWuA%swxd4WfAFk*+}?4prET=c-maGJ@bwQ) z4h^?I9or?}aQDluQIykV1qD)1eM`3Q*kZ6euYRg*@l<=yp30pYc4qXuZh5-9W?UeK z6CC^X@(B>Hi%mx-8i9rp@MjuP(Gyrvib00)6tO-shh4!|pui^Jgo2EyXJj^87Lh^k zwM^1%0r1vZ3!`;$VOFr%M)`ItrkP?a(@&S8H}&)VX6z3gZSBJ+Ut*tdI&KKmgmM}~ zx7K#;+;#PiP-RWznm5ml4YhwMwpYIGwWyKNmhU|}+MHWi90+t+eMNQInY{%yfv&)| zzR^WTzx}rThr1glRETs;_(A#in6Q&|v&YW0*3}l9jTDd<0H<`v>o=mlh>_}xm=M*C z{B<(D%D4j@0}*hr0V0%VG?Q|mOEA-we}o0rbTc?|?OssKOV&K_0{?pSp z4=Qex!)TVPr+Wr=&bI_>>#o0j2yFE7*y}zm-SDOze%C;&Mf$|x@_S#iXw0?y9BzlH z#%5`s?itx)?YG@{aCf+Bn5fFP;Oh|Ib}RE?3ob-=wAI%Y=eaF_^(Vu%h3eBMz%RzrV*%`>3O-AxO^Y%3uka=nP-~E& z|IJ_Q$Z3uYZ)&Zwx0Qv)o;p2Mx2^xMlFU zhs!%`*@dIhZ$OI0uDK2F)~1>MiG8N1gWb(HsV8qiKUE$;>mX4uEh4fb?58u^`z zBsX9MOp1x>t)Qx}nOF5iZ72vL9*}LZQ583F(j3S35=C~%Ev+wKL)F=3*q3F{@{)Vg zcZ9@c!dIRc-!RIHFhl1G4iNSi_AS@8R_xoAnpP=Y>v?c36f(F3DpXXHw6g0vkXd!1 z;e)qkkLMViuG(%mwCXFJM#X99n`y1euQD3T1Lo@YZ$G>zn44E~!vmA3fACCfQNH$N z*xM}u{}oI9J&~b6rZJM8+gg-UUJ0|nKzCzzt~V>c0a%7h=6=&1&-H3m5NIXN$kSMf zA@-)Iy`#A)n46Pf`-_13JLFVrSq{Q7H-CJ0OIvUAjSox>(kZbZ?>_~~Hs|n zvOQW}Ute5QKV1(drbGe+vG9QK#)hhjqPpU`%Bl+78nTlE)Y>X5DhN>1Wib0eRAWo8 zBC67_g0Z|3s5(1awh}EdT_Q0x{qfB`kZ732tiqT9Q#QChf0*bYF>(3aX$3EFUl8rU`X7)T+i! z_{zi%_r34*sp->KUv>SV1Jkd+ zY{#P+sLQ5~(67a788JM#p7ulA%91d)BEsM#Fn%7*h2P3D+sR+rP4CTebY==V1T>eC zxg|HDGb^Pgl;|p}5Yh+x#MIW#>m&44v^8YU=alalt;@|F&aWvbs8M!Cwr+6vH`ER7 za*euftI5x=$wQUhFDe79UHJfZeRkA`ozJA57!q5;U)YS-BO|y`Ryz$BH53;&D7)#u zg=qSO{6qFiIoP3@s9NIhg$a^k5Qd2GW#Q*L2td6oP_e|7&x=V(Sl zEok4pp2DLIVE&bu^G4v=7WCFL4$`!VpyF1xoUy2zQ)TW&<*} zDdNgtMo;9VL`O$)z+Fm5Kz3jZAeFrsCDeiTw&q3xZ3|{*!9WmfYo?kk66^q6LI%Qq zA^^5Bc(>J0I~}}SX%^hV3-QGHMs3mRtI*18y!zc`%{8T4Mke-*Z4OV3WKK6#hiZab zdNyqzS%|$|nrPiI1{Ojgj$;44CyBrEXAKwSs&AWasbiXgI?&Zacmn&Z-X z%ph(Z-`1&ZQntDF`u3=+u)tI1g)s&Hvr+K9PruiRiPWtwwo*l#*zuvQEz^6(C-%=1 z`xnXI-YWL}=4QA8JXxDJZ!X2ID1={;&!}5@6)TbMdaRIwG_d!{H4W(wzBR+yOip<6|?yzGm5%jv!)U1TbAIU<)-Oh$boI)86J6ajbDkk-EfQplZ>k z;A+DvD@~`H)LmQ@Y`Eq$WV=}Dqcy>)GUd#OtFv`ZEcF3e>az09o2Ld;z8!(QC;>9S z|2>9)aK6q&lRA`#W;UY<;i%wWE2g&=`%XMeL1HzDHVEMWw8?618F2;Cuvw3QX(R;A zi#9|XIsh-yP`7ayM}78?u25W9s%;v&!LPPyxT3&`9p621nl6qVswvuClAE7b-@2JZ zM!x*3LrJ9Fv}JS~4yQg@6%PEIC*hC-G9P}_n;AdpgV3nVCJTY_taai8f}JL;zN?#= zUNP7nb$C7E?9a5Wm>Y@4^b#Si1E?b5UkXxHfk9Oy@OgA0(XWhsheto2E6ND~!rMHW zr~b`CQIBNIE?lt}XuF!1fQe=%X(txHYL&O3ReC1G{*DU+I>PWikU#Z%M)bP!eaMZ} zS0R#w^b~SRbc~G_b(9IJc>#Zzevj#hM^~d3sf+J2od)%}aYwYRBx#?;RjEA<5hiom zjbfvfv08THxuQbAlY(%94z+Qk0+!ffPP@|*`X96m;s(tQA)2hp6mFFA1Q3bJ7=%ur z%=D>q6WWc&_U}KXo8%XV4ddNK`GvVEGhU+ON|`44K(%#fXs>=Yf#m;*a^f=jujr;I$zS6B}qbw zs~(q#g59?pceW|Se{gMF5pK1mC*2%OUkJBX(-&NE2JVs(h zI@j{lUqCJ~VK$j-|v`M;cL8g8x3EgY&W$m}-c&zDBB3WJ`OVWl9y zzSA+5Q60<=yG*yYnTAYIf)VlhhD(m8*o8^Xb$@^}$68{Dpu`+=NkX5cpl zT76{+WAvar0Nou-xI3i0mUshK8*e7UQ?g3=)rN~_x;N+t%;#cKwLf!ikS-9@ieDXg z(?F4JrlYQgOKs(WQ5W4M41D;N_2JRmGj0^iRZo)7i z0=$~?xarnIY@%^+PBu`sN^(lLugjuwG8mbz`+}l@08zJ`MhJ6DTYGGWr}kLSi6b48 zwMBW^g*5|py}Rnh3#GY0NpW_dutyDQ(+yklvIST?J#j!T#U=(4iMXkK~}Q| zqV@`)9OZ!Bfz~My?8`u8pd}j#P?*>~!PS}=j7#AX?N!<#P*1cSqI)q~f^G~DI%=od zn{k;+g%zUqGE6)(P*z5D72<5gmGVGONj3#4m3Ni9Q zA|+T@7jcca;07pgBHcPc5%Um|t2s5i5Ut%jjA zQ|K`oCpxQgi7Aix^HD=7FHe5IC)=JpmnCy}8X`1OTRzFz5x4yd*Wz+f45?;D4ba1n z2K+MV;-ozVF$oDqnPXr=A4(}Hio9ULfGitl zAVmHc7rm5wEo=x0xe)kqLlGqKJSj!THbNjnDnK~PKPV(Y{8FJn+(=@fwh>o}GwS$@ zrJK*?<@z#QKqVGZd3_3y78AQdNwQe9BVA`85vhFZ?U}@O#Y**Sm7Yn0ueWCs=IifS zEa%@*9aQfS4liv={Eshc!XTtuOpTN20C*oQ>4}Y+pf8Lc0Gfq}uWC(`CjaZfo~QZp zJ_KP|4b>($CkqSw4^eGs4%n_@dR(C)lgq&*qzyIZ^P@8y%e4R@nzcF(!;U{OwX9M_RT04-LairFDiC3peS>`xe0 zmf(~0kX@x-?9bFjNgFls{`P2r#Hx_Mo1Yu-sUc}d;6{oZs+~Ew2?;wF8Wf_h;`B%> zc>`a;3FF5}(?QhO)-qA8KZ8i@_Q>DmTe@(Y*wYnd+Cc=d3j@}LeJUB6*q8Vz#J4wG zjp7t)#Ib3@9Wv>DV~4dE0tz)ImJpQ#JxeF5gjhpKAGH~jTnoAEbUR;du4@GPag8{o zk*X4}cpoPf2v`l2y2AXNfXD3w&W0Ivso_3ulA1UHFG4nL!)QmF|3fE0zwPPhr$5_d zQBNCY)?_m3PBw!b`)LoS>04PNN-(`aM^!C9qK(L7C#pK&li^b8pa7sVz>W zbZwI^5Q%0;*=ue>iJwSwgeb;OcoHTebwoQE(sNfTnG%QO<409~3j~V;n$E-dO`MTr zk;`&8dbDFw-Hgd(iyxE~o{amovoiJ>`6sMS`7a(TSs$&T3nIciaQwqDWHjufX?mnd zi2?T@!v=@0K|vy@!_3Xl6`@vg=HtJnN^$Lgj&|47q3QPB;i)4x7St6M`UCm$PiCj8 z+uN%rHa_PsEUYWYM;PIASh8;ZRUa@;Z&a_hRKZ>Uah%7Lmx}CW(;`$SFSqeyGOp@PE^Xm3!k>3xSae*I&3J5hkc^>NaPs~G{;m|b|r1;P|j_FK=cehU;xv7v( z=Ps%J^mJlMPvVDl1+kA(`ik6#4Gwg0`Cj=}R>iJ;yx8fG4H_3#lR6AkFK)3>vvpuR zhpeOIElL2jE@FQZOm(yxA$X=cS8Jeu7e=qDN(74G&KfLrbE8-KkaHItr&J-2aQs4q z5+mOm`%rykYWv;|Rau^*rf^GbZoR+GRzGC>#?rqJUKjh5{0_PA6=jQKvx}AiOSr9} z!{e#91`%`;=->S^xMTQK32?fO-Sc>veyS}LE`cJ%XGxcY`GHSaA?p^BaZs>EOxbRe zEtbTbTVNT-oG;QcsSyA~q0rSaqzZxrK_qVn%Xs>}&qwlHn88DSVFD-NLl&KIJU@w( z!6yyWP0#JvGf|aSnA;p~uB~hwmFl;|iST~8?;clp|M;duwn0m8dqYoibtLRGwaFSG zI3+GL%GIDmKYQonq4J=~Kw)tC&}Vv?3ZAwkLmlG4b&XE35}2`Hh3k_dmR(a81B zRCjClsvRKDLMCW{l#Wuou7K;Ms$-F+#xj7DX9cs$h1a!=^47_02P*LZ9H<85U{!xa zmo0z_3DV&%2G?O~c*+yccjS9(!kf3)rd-WU1LGYX!OH0L(p>A&vZ^C>&7twq9QWou zeeh#H9J^WWI|*-VZiO{tCR~!0RZv{rQ{B*|cm^YVvqiZxh1InsJzmMYdvrr%-H33v zk_+3%sXD;6MYpu0n5Ged#t5b`VrQsuAVnwk ziI01qd5|vAAwh;VjS4M=imy!j7a&-DL=d7tIx^H%H*Mc#pK^uT`vxa_+BY{9*)~j1 zmDV(tW;ru+qnjI=JG-MgGBoEnry?Z*??6>YWn-sQ-7`B_yz9pDqLNZ$)HodN47#UU zM(bu+473`V16d0r2~^67Go&BbGpjJTkI55&z3NF5fSyJ)2*us^C;Ri>w= zELc*?OHGhb94p<5Gn=n?Vs@e;GnD$#>hA668w~9l8C=?WRVU81om0j6 zv5&}^a^IWWa&&O0t|D08GG0B}*Az7y!wv02%H}~t!{Au1k{?0tw+&TX-x+l^)&oVAzdYxPj`{3d1PulKOWfpb?2TCUEm+h9&K7 z+%i&MG%mt3hj;+~9xi<76sk;)9ZIIX#SYlL>dI_CiXJ%--H4M-xDvq(oE50#Avi)xys>h9jQ#@_n6!HGQs?f<;(nch#G-o9aSX}0IYN2t2w zhOjSMR@rV@{({_CUQ(4a5EvP19C5z2wDQKLQ=^BvcI=Gq?9a}X_6cF~r0l|SchJSW zt~}_;MEUDcx`m_SChd1HKWLVyQe(z009YD?>4G>wC=e~P3e~8~5Q|27zNBMwTKhOd zuNf$W15mo-^Bol}z2Wx3@}}m--kPpx>A>8+-SxFi4QKA}>l+T;8T*hN{3q<~x?EpX zaqfuCSJ0nR77PqH0~W31%%;Z*x!vNd&sNWYi?29tTdP_AeTf&Bm z-=|oz^}pX9^+^nhDYSZ_nzDctuwX?clKFAvRJii}xZ6mc#xPlGPw$&)IWgMvA*Cza zxJhX2nddwIr_DS zTO)j+pc@S|+_X`Ub<-5xen>fb`b8gT&UIh7`o~`hb@G88QU}_sy8Ge-1>XOQz4ZBa z|M2?X{ieN}5A?8dHrxV=Y6IOktx{BJ`Ns|v2T97Vl8Rsd$6I5|h{5XNLp`DnwPjW; z{@nC#vG@x3_aC;M3;|!7p_aa1a^4+#KK7N)UOv`i>R4N6Qpfs_+)?SrTK;jV{GVe# zh&|FBjgPf;>SS0O>+Gz?0$&DQeSdc`CDQjuszOX5$X19cG1e3*RrQS2{rcEfV)xy| zM|vDo#Ym4$3!=`6RVh^Eq>%KPFUL+UKl3U+ z(9>A@wuzHhjthcLY*t5V{0Hu)^ds$)My2n5J+^201Fz;Iy#`AknmBpYhSZVnf3cag zU)m=9_B*ld%P)J7kM!E)k&bWCX!_ubJ<=iRm~8n`Y{T-wH}H|ZM2z(0n4oE5r2oLv zDgEk?N;k-bzm7$gN8ZdwdPa=&>QOP$4O=yu#z515kh-sqG*y+FknWY+o{v>8S8ST* zW4#VzZ67}g*k&=twlT{!>A?Q?vzH>#uU8WyA- z*{+TDOE3Cp=cRAS_e##?|2zNYog1~$wui@0M!JVmN4xx@k9NECEBT$0Z}~^(Z`!q) zkM?F<0`;RE-o8g%Sj7_2i;G+MXm0^0gg2aw^a!WJ;Lr|rw3dAs zt&c6}trfWhT?A9%zErCP00E=9!jY=Jp)*;?ldx0BEXhvclf?y~*pP-}r7PvbO20I* ze8b=FKeE7w37SU6PIgB71P4Sv0jppk3;=ENmk^p+!A?J3W&`lQR%fgjDffW#cPQi( zLC`%w~PHc%&MO6DdGE~p{M_V3w5m5C{jIUI#J{8A z3uBhLhK6WtSo$bE(Z=zuWo7CNALlcyWH&utT2i3IJwT;qcmiAwixcS#igeUu0A3&9 zu#j%cmdNv+MXsMx`Y~`rliy8x2|1D+p{>#iP;x-6B*YC|h#FuI( zD%+yqD#1g-6W*)PxD8SP4rEFe4 zB%gBc(5*1V4k2m!d+a2frSw0Ub+SqJa{TSX&J+A6;y>5mk95yh(SaY&=h5_4=;;|4 zuz!vq%K)CucwP&OXBVFP@O%=_9}r$vgJ(CMpTTh!#)F?*??#TE7td#bY^W|RwfeXGw*?c5)n|I*WvjsVhT3kc{SFd8qZ7dybsTx z8S_o!xq~r(86M2e|2xJ4Tkw2~vFz=Ps(H3fl2p$yg!&EX16O4l!0-ga^Mb!M960@w^ic##)B=$}q38KQb147h~nkc;1UW zjW(6}c+jS50uSg=J%9&us=;d1;M+AnWULnStJ{X>Aym%z7-J3SpFd|AYs7nvSc9hb zGuC_*&zBf$`2=IF1$aQ;wo`b%&sYfK4^1)FUWI2L9;{Qi2M@;4fj>L0Wh_#Q=M{Lc zmYsONa~==+?&@Hyy9E!%-@BEuK06+a5xx!yh zH)GS+|iamKb_oER?KHi_rgjBS4dV>|Heof&w3#MrKO zJXrT#_}#)T#umYAON)5^#@Ox$8Qas(*xu_H+t-Naqm1o8!q|ZE@I24h$uBc@^#;aH;pe9w zX6*DqJpYO9gzsKkjR$=Dl4}?{gWsPy&)7>buIsZIyJ0t;_u=_7V>e=QH=@l=c;}`A zc>aU2o44WlFk`nk@nB51e2lTPd3cWF0l(eq!}E5=ZUfD3!#Hk#KVx_FGIl3oZ|=OE zv6tZ+FT-5#!uxk)?019LUVa;6ub9DuxxMmn#_rj}*uD7XeQ0yvlZ?Fz^ZRGe?|$&Z z{TTNHJMdtgUcDDjjIq}oW$d;2c%ESF!G{=oT@9Y!F!p-T_6@msKE&7?(e{o1#@L&% z58m_$V{h)j^GU}3Baur?1}%h+2zcqZ_?5)bJ4HX9z$WvZ#`MT*e6C9`(zm&w0jEs_frwZ zK8<#t{s3d2S!C?9`1$8v&)DbBGWLZ5JXo_Yevh#)VZL9!lCh@?@PN+G;5*M2GWHeB z@2eQkSAWOY*M7;^*TGBw{w!n9VII$Yjj?ZlFTU|j#=eQ~e+%^c)*Bi7Ht73p{Qf(b z!*?+5@1Wgxk2ChYY&;J$_I=Fr`|oA!2Y+VlKe5g~!nc2nZ~tTyV?Ui`>}UA%=QlF; z3yk%bpx>_^XY9WuJR9(U-~M|J&qo;hpB;?-Z!aF~=ih)&o(FF{f1a`5VqJa<`uuKz zvESo6{P}mr{!oPnH24F?_J{8?_QxQe&3Lf3e*z!;3FG?HGmQPY0}sai=RYv^SFH12 zKhD_S6g-WLoxh5)WzZ%D8ppoK*o8OXd?Fl=L&!R|;`tV8*S;JHrue(zDm?!Vh)p}5 zaXfe6`7Z>JzX|FgerEnx#KmsI^Dsk99G+JJ;Ncl2Ii~SEi;4lKn3QoXlic`5<_SFb zod;T{_kJd272){~lYDz|yp`km5|aY&WKuRliF3M{lpDeGMkeJ&@tkK;{*Reda2=EW zUwdyJ9#xeE`tG4J4=k-R(ZQM%I)N_Qro(>5#J1#|ip zN~eFMbXUriQKob^cEr0=mhSgpjw*dd52btTP&%^}hID&9taR^dl=C64?^C+CHReaItWxHYge&C?e_0j=8J8p1@_kB=x>o6mdzC&H z*;h8lysmWBqe_on%8lF;F;^=+wn6FhsMB#A4Ia0Xd$1Fgu098IKS*Md>TnD!u3qrLSJ6^kUMw_Cuww!*A&|O8>c!(l;X8n?6zcmRFU&b(Ye%A5{9z zCzZY%p6-FC`>t2|!IPC<(M{=xs+4~CJ*6K-4lB!*UcEr+wKJ4{iaL0P!`K@LyK$h> z&yn^E*f){)X7YH6^j{(ES2L7;Jw@p^i3#62FEr&|69$zDeotuT=U6{El={`lmTcAAL#bUj{4v>%+V&c2Y)_ za#CTKGUjb%xLR#|dz6X#nZxv_C=)vw1;baOeCRc05{IBE^*v>p-Jwi#>@5_BlS*YI%X-;sh2XRovBQhd}U6b zs!V!cWjH==GDxEvSKzvnN00ZF$^2TGKDeEEjWYfADKp>_WzHhrz!A!vJzbe|?p9_n zM@F-jDw91=nVc!gBWu*UyXO&rqY_2*% znZ?NBTKHW;nCmzbdi^`fEK6pZeVH;h?pEd|^1k_AWo}um%wJwm=C3)*+(y{jKT+n+ z`O4gVnlj7b^&aZ%zLv_|U#83h@U#M+9_pdY!{y36a)UCDBIn2O3uGv>k}|Bqe|2kR z))XuAIQ6=gbe~wI%(_RESr7db<$Z>$J{u_4vo9#~TrXvwC+rIi%50)uHg8ns3Y!BXyd)}gKuQQeHeX+8AJ1N_bbO!K2@qrzb9YorLUsN{h5oNPCDVtlS zY~DC!hdiZh{^!aLAEj*JUCOdIZby*M$X?2pl1|w!Wk(HC_T1Byt$a+`(eOEDy|U+# z@3?--j(N(0z*sbiudz7thk2$97l(x!Fy;<35tCc-JpzL(Q%(z6^x_!#d{6g7T zN0hzrpUO5|tL#Pj%FeG)_RO6E zWtZKk>J!g?Cq5Cu8zvy{k5|9kng?V`#x6o0m}0rviaL{ z%KrT%WgmjKfAqmnzK7djreTo7qtwr1naZvttyPq9HTkZ&LfOYJ!hELe6Sc~&>xS8; z?30vvJ^4OGxM#*HyJ4iV&sHkC@nL13qm0iZ%NMBoP4M#~-%i}TNZFUJQ}*R7WnV!S zTL}BA4?~^2M)_Y0@@l(6**D5C&~H-it>u_sm3`|$Ww#-pZAX=T8#%u-9P_=h@7}HK z_5#dz%D%T;*&Rg~!n{v9ACTsUr2pY6Wp|#d>__nOaTjHGwPL=b72Xu$_+|sY zSIsQ*J7$PCXEJY7>fOxdCmuWZSU&4wUt*=LyBKr@#oSLRT_iB{I}HArkLaAHGR$Vx zNB^Yy*b%Cyd6rY1ck`vZzA9h$4gR2SRi~QMIcdHpctno{Kd4&k8-qU@zv`-UR11Aj zb=KQdXVXrl>tEGbCK*M`FQ`P*TJ_RLR7dqCYQ~6bnyLPh4!Eb@q`KK_)j*ERrJ1u- zkr}Oen449R{vPuM_PelOsfyH(s!UH-?akS^f24|Rl^SC1!T)LeQ@}5RJAxBcw%)5+ zn5$HwxlDDm52=o(R-I->sy3!S{PZRM4Z&Stt6x{$Oi$HLKcHsouhbcaH4Xiq>T1r! z#8ajM^6P|5+NlEd1+v%|+@^Osy2xg#0&zE)E_{K+(L<2a9jc$cP_@D@2RWW%TdPy_ z$C$7AGS`d9vRL&{`&2PF$()N!!m{6_x|8SGrh`f~1u8|t@G{j4-Ujf|i>`VcPuSh6 zE&QA!ve(aXbngL`rzgTAveYxsM46}3q%0;CzEZea`8n!79sU zVJ5&UvUhS9+5g7and)Sz3s(VoM)s@G&2OfDC*cI-sy65I^)8Ps=d8Kwby%s2b_60c)&a!JYai*f5LQa zG!o9<88VhI3HS}dEDYiK;EOOzFh64MBh7EXy)ki^49sVk;g~81ts`J5VSwyKW4r=h#jR!>)ceP-}}dok^_SoNll4>q~#9FxyD`#o{i z@`jMa^CcVk`WTnbR~<}g@O}McXdIgy+@ubvLFPM^VsqegKrm>gsZ960=tz1U;k7sT zCfXgFD*71lzEQo*w%}e9gItCp-yWC?ps5Qjbw3mQAh-?qCCqQ?Tz`w(WthjjI@b?D zOFfkmXDXO_q%TG5@nF((bxwWjGR&j!a31(-!cy0+4V(x+8h)DLmWSV9%-^8LNm~e> zrk;0g;%VyafDMH)*WfR0=kk#GGk($zA0saOxi(68(+%@aOdrgZ%J16$0>T`@-kmt7 zfoF-oYHqT@4VZk)I^?_$Jd7|+^Obxg&PkX7q$6ehE9M@|4&0>7r2ShS^pC;ax)%2} z9uImwG;L9jAkG-@TueP`yM(ttV34C}j%k{Yq)*r=)XO=8Jbl!g??!l{j8U=RKVm1% zsJFqCIcgPn3#K)G$j+C88H#&POb^faD8G;X>C7$QuQA9n>QCTJm;tI+)ZbMvUp}S> z=5^Bg5_|$?km?mpUyJ#H@IwfT{KQ!D^Ia4&_kzVRHi(Ie!cYd^JA|vl+>fD-eeJ=O z7|IjX5z~h9N}7McZ4ssjnzC5hk6nS;ik)_6;a}n#+LXNkBkAtP559cKxG%)M8uKl7 z^71`_A#GJ$CBWS03CeGPL($4q>(h4@rDU$9@K;Er_xEF!1W5y}EK`fzvUR z$G4O`kuPoesQm?;iV^>DU}-xNPTV?U2-$5cD}75%$A_6p1!7}}Tl5Yq#bjX4MNG)CNLE9MLgva;V}2ycJI93btMq$_Qv z3R6m$9bodb(&i|Og(n|;+v~x^@g0UnMz#~?bj*0%UIdQ@uOq(Hxs(SP+BDpRf8=UA zfG@*L4!Pe3uEFGDq+cu!9*8~@UPLwtq|+874z9#vaPR!w`PuK4*1k3V0so6x=6bXaiBwmde1V;ZD6oNm}=lzVtuJU{~TUZhJBJ;Eycq z9^9nvH)5z$GXhhAp>E7qm|>WHgxSitA1CUJg3RfHvQEEFj8Wnq9NB1&oh#wIu*YVE z=0WGnTqtaq6V1iU!!%$fU?yT}@ZSV}$6QRF3oz7~82u^ucIGTcTwdPuoPOq>>;DPU zzDe(Y&V00C`X}=@kY7m*Ny1`S zmvQ;GB+q>8OVt7ujoN#*&ei3dgE>*R)g5%2MhC1uQxDSlx=4@FwfX`*TVJkkFm27# z<|Xrr`N(dJvvEmrC&YD$>lN2OE-$Vit|+b~Zd}}~xO#t*zooy8zr8=z-`U^8Kfs^s zU*Uh)zux~$%84ndDVi#;5yVxaqoIYRI>3Q(e8h$pz&kp#}aZz#2xImm9*C%dZ+|an; z@KYIA4L=F~6aB6I?fibnPyY}5)el+~pAaA+BO~H-94Z){_>w{~8 ztAdXP9|`^=xFYyq@c!WP;9bGng4YDiu?fejj#VBT_UqImU5=b~r1OzZM>-x!JCbt5 zf26~aQ;)Pda?+8OdoJB`(Vm7qv-i~RnYm~3o^g9d?LM^oo86!6-n09<-IwpaWOu`^ zdv@Km>y}+N@49i&{n6}IIO+T!0|F|;A5fzz^Q!#*;p?<60n`BO2<^Dq@}c7Qt1zrl;AYDs;xiJ zPpE!XRsNM;=$c7^E;xm3{y-1$?;#;KmQ?!TW=V}-w0BkG;upVoq52Bdx4LaLI#Ale zZ6H2pVnCHv29(nzL#Q0CW44!2?T6Q_Ypy0rh;>nFLRHnInyP^AT2+-6P$iYMRaM;r zHp8Fi5BNIOP?o5ilFC3-T6Q2hEt`@Pw7Ofsmyt$E{F7EjP003(kCd^k$FsnIsm_}i zu<0py=J=QRmyp5A9#NeT%gD;=lD0LaRh4N~DOLW!;Ic~m+KMnj`F9IMWdve!y0V__ z$u=5mT6P+Bl$Ko+FcT&R^hCG_M5T8N#ANt|)kMnTQxgaRvxBRvBuI6xV>LEoRZODF z$;(bpiPTnH#__cm@1>%WvnzNFEFVlw_6}Ng97;dfux*aQZ9(J z?5aSr*h;Y_W9t@ZMl#KvNc>1(B5VhmHHQI#v3H_r*^n(RQcuF}eBP1!4x1SA6jx)n8H zJC#(fl%|icvX@Z5WSg9xl18*JO=}Q;i9+WQ-zrKn6#j?edVE#=n+jaX>83P9oD)!k zR&hne^|TW+6gwq+fi%!OE!&?LNTl&4q|xBA{ncduc#9UAuO($?FR5PHBD!nf+OBO= z5mQUbc4F6Vfs-;;YQe3Lv*436R$9TWGgkTppOUdMN^qNumC=IRW~_`6+%98ftl(2K zR>lcFJp(Ctat}mTBjGfE_kcc6I!L!bdK1r95zh-f&#p~8J4Zb0J6a#B=zk1BGwc@V5w6;mi7|Q7 z(gJ6suZ+?spJXbYAs z8Jaeffv1vZ3rY&@J730EhoXSZ-~JVz3ZR7D`V6Se}pBGUw~692X3Ri}k&3x2x= z&JO41q#vrTYMD#?w#eZs9>n<3U8Fc9a6(RHNn4(z{()89S9aGe>9^+`=Udvg{5RMeiFgqjAzv~j3pR}a?YT#=<2clIP- z6NpdC_KGgeIgOsyou20vD3^hWXN?Ioou z#AhA@aKEl$sSLr^ziW!rnaCwnnurL7B7&2=ZqJ;A9)4o?KyP|^{=acAAUWOg#6Tay z49f_d2^ua^%tPG%Av}D;(kjf51|1lVn2Rzv2$u^{455V>k+DiUml6o)GE&0i;Z-VO zgea3RLX=AwAx34aW;D!#s({jtIyYlAb9iy9g!0^~B%Btv(Gt#4V}Da3fmQ;2HGQ-~S~GX!FSgb`w*gb`wrgb||F@s$lV+3_XR6vvlPQypJIO>=w+ zb-v?Es0$olLQQvk2{i*54~SG?owEf7;W5)A&w-pJLYH8H!PqY3Sqmv)>OE4z%ywbK zL&7u=`K(B)bDYh^nCp=e<06lg;PXi5EHBB6JyHV9_ecqF31J6D(!12zTzZ#zqy)d* zBPIABh&j+pZ-GZjfGa#w0xTr#*^%_FbT*gXB9D~dS9zoaznYk5d+A-{krH6BM@oQe zGgil;Fg7%!&F&hAtqs_YCG*0M@ow^D(Lp}r=TYZIxhRE*p0ryycfh_OUQmo4d(A`R^_hjs27i9_P@AtrJanYyajqLX9xhlAB#% z7Mg`B;n)#h;jvlRu5PrcQvO5O&%c+&iWf9zM}vbT6nh^>%p2^a9QEwvk*pq-RSeE` zayS{|(V7>`t3$LQ%+e5TRd;nqi1x9sxFtmM4HvaHL`QRm;g=8{qbiJBB_VyT>99BD zr60#0*0K>D4Bwr6W~v$F zl^+USN~%)`F`b<1$-g@s2oGn$K{>gNfC`80Mtw959d`Hs#=U}2^=dXb%yis0O|^tG z0)En$e9ofuGbz9DRHx=f+`B8;VLS^yYfy|<>%vSX#&lAg;CSqVtuLwcM^~?;<0q8{ zq)L9E;7ZnwJpI&DE!@{Q|BHYUyBik@1Wt6Y5}3+AEU|wt$!W;V@6u|3qZ*gC$e|ud z_$is>_dnJ)y8jP`D4WEphMdo zvY*AxpELMhTrn4QX?JRfPDP8H-kqx6{R;F-8iL6#%nyYRn? zPA#c6s;z3LPGudt10_nKRi|-YsT0>1Ph&JXU8Sq8w3}{};|%&wPx9x?4n3nVPR8?xU z8l%Rl^VB$WrdO*P?Nj%uMd~W`jJk!BO;R$DTdPTj&^J4&xAMCYwC6N2B&W(tGCrw z^_F^!TKQJ}S#4MEsCTKCFV)xTTKa?Zl^N7romx)aT}XY(=qDr5T-w6{HBZf_|6HOj zQK^q6bvbM7SE#SlLA9P0_E;UK<8^{gRKKcYD##QsNhj-OOz@iP6Hw4`B45Tj ziB<2D)e-fRZmmzzZCI0Ur%&Ys*L$pmchG*FqEmI6?x;KQ1p7pH)~D$%`gGRFyXp+x zjg|5uO!2C+LZK61xYJ^%Ol-Ph-{o0zF;NVC{aUo~19;_3SD%=s9|> zzKGTQi}ieciM~`{#!kZ@^a6c_UZ}6si}Y3cYJH7ftgqEe^dI$g`g*-o|4A>?f7UnX z8}&{4W_^qPi@sI=Ro|v>*LUbU^P59sJy+`lWpXh!1 zQ@vk*ra#wT=mYvo{gwV&AJpIIZ}mU*A^n{`tiRVk=pXeF{gXbbf7ZX~U-dB^G}76P zu_)o^BMOGupouf_C=^aKNhsHAW}2hHu!T9%v@|D~R_0{(QBE;!*xhMoPBraK2je#> zCe@^wj;538Y)&&>&_tPTx|$5r&2%?sm>#C5$uzyV%-qNHHD{WBroS0r&N2hd*=CSA z#|$=ECfnqgT$5*pn4u=$6qsRVxG6N82r?r~i5Y21O_?b-qfCW4*HoG+Gun(XW6gPH zoEdMbO^umgCYnj6)=V~2%v3YYoNq2L)A>+sotbH7nF~$5nQa=(95dHkWagQR&3to- zxzt={E;oNL3(OVFHLo;_%vH=XuQ7|wwd|?=(OhS)H%n1ayUhIA++c1rH<_EwE#@!g zR`XYLo4MWGVeT|{nY+z$bC0>#+-L4b3+#jDZ)S!0yLrg`!#r#rF^`(ZOaSGMtITS% z#yoD;nkURU^Q2jCo?3{?tq6W%j7Hm{-kf=5=PXZ}W)`NZrqpPK#VGxNFm!W=MPny<{) z=Aik;d~5z`4w>)xitYF22lJyjVtz75&Cli+^Q$>#f(-K-je+RIv}jGVF*er5*?614 z_3|W}Y@6BU_5{A7aiVQ$PqMA-$+opU#kR3+Z999aZErhRzfG~JHqCaloor`&n(bmw zx9PU4&9L2UcYB8IVSA!?t(Wa>``EtrOxw@)w*%~1cA!1m4zlOi!8Xfg+Z>x~^Xw2i z)aKg)JIoHZg|^5R+Yz?JjZO7QL_B=bzjnk2rSZH!eW9HON>(L{tM+oP7IJ-|w){L5o^)u^Y zYCIgBHKD$CZf$gpLor!1r_8LYy&$H>!_m1DYX}@Y$wRrstZ9hJ3nfwO;rP5sGaG6q zPOPnKh_8*1F?pe+YC}ood1=%-pVhTcOP7C3JQ0!?TEXC>BtFITn*O}3U zH52DF)J9KtDCC+Q!a31}US88ZRP2SVYZA71A1`e0zR|^ApgNDQ5uyBNdN^ss)H!ui zYU=0Am|iodA!%k)TXd%Dk|%n}*Hvc<3|4!+k^2=-Vs0 z+>6xU@iZ#L(;N>+jjEqkHzjJ0z@$-4IZB$-)D|-;EW1z*jP`h#?@;{cNL9tpkC2X& z%%1&1xPJ&|g>ZIK&8(TT8|r7ynp!(!<|NNGr+?C_GOsktTCw|i0thza~ z=hoEM#7&x8F>Q8D{gfJuqYsk>Q2E6)n&?<>rbdH`ntombm3Ekc*ou zB!0L$uM)ABID58`*^Vp{|0)5c;#fLQ$U-3t3x%u@vdraBRwfP(YNK2YD89Z zYo^rKOsyf{j4TN?4ku5Yi*VfM@)QGxTVEIKeNvwQoeQhmXLuSsY7c_0I_?1nYhhG_^P8~RJ+LWmc zcot8qt8IZaCdfcEt)^kx%(~grrqogYSzi4o&nJV6rcG*?I(t^l#M%}SYu(Jc^Jfyf zzFEY{vq#m>nN?fs%bQa_Gl7OVt)|X7NUP24k?qIts zb?rMdvxn=`nVCJ^m;vseNPoe5;h@lWe^8v*} zvE@MIi1RRrVa~YDY{!aV^18B9?53Y$1v;RhUvt zA*KS4GD)SZ44W9S6iWRGuOML+r{VL+kk$Y>RKPH?Q}=`@t(`ShI^@N*(`#l=rHhw> z8tQALR$MxzQsm+J<4dJQ4FzExDpqi@*m2JBtT~}j!#wM-aHuNJUS1BSsUif=Avf1^ zKop)saWR9uC{T&#S`x}M+p}hetVLJ}D_MgoJkPR_XPM_3%60fW ztnh_^ykJ8^cv#2-N#P+P95207gn@;!V-ZncK>|Puj+2xdR7~C=DYcYE3WHV3EM<|x zNFWMBM8Zf=FD*hyK+od&Q&ya$s05~@Sfrp>C?}AtfRqwQ;qaD1k&i1ARw)ulN`$K` zkOUe(+!cJ@cm@m!J)Y6lx#xIjnCHrX>U@ifJ!j84Z+y9nJ-&Q=RhaMuiAzN&W+**3 z2oE10ieKUd57prC@eH^k|9L{t7#-m;G;e&imt~PlZ{GMK&syc7LJw7V=~cjoO@L*cCz;j*x}UJ6}X5ndXP2L0j>} zlTT?qk0LLmFz-2d;v%HSZ$8orwZ9NCK2!pNK!yCugw>(rhe{$KC)uInT@?)-?^Vsv z@wuKak2H#bHQy_>qg+`DDhYz{aS1X;ik(NDi$cQ+c{o`Q#pc47hMk?zhr+Xq?S@2p zfh#Q7l@aXH$Qhp_iGy6?g1vY-UQ@{N>NAJX5-b#J7|oKjhfy|irp@x~f;H?i@`@8w zgm5hl7ng&C@Ddv)RY{`5q#|8vZdQQRv$>`?%xhl5JT@dzi6QmkVt7f1%0{<#Wdpll zWRxS!2=*TJRUX4Qc$G%i_nMO;6`do;!2iMpI|&Z7bkpIcb?s`U+f7VG~V_0Vz2*zycQN})2>=c zpBfh~Kwcq*aCIew>zEL(h6ED^CL9&Y%#Cm)7LF9+7ne{Z$DfM?Rq92D3PpDVNpZL) zi^sc~1QC)lL4;Cqk7(!OjWNXtE6fa3C^c8jG)jD2(LyNX>jvmz8I0X%ER=+FrI#vp zQJj!UBna+;U7bLL>|VGMZ|o_7Uzh@gLb;kN35Rj5s>EZi#1kgv7$!21$0tLQ7+3$<-tZ1`*@0mXrXd{D*Zg)2`I39%yu zkPJfE7I|zHd1Gyn$3&4Q2oUXqRExYW1R@b+DTHe{5Uv=4@j~E^a?Q_Cu1OSmV|J*y z6v2Q?(=lEYVjS$bx?)s$e8}@5F*4&l-r~X)dYur2C#8Z2xet}p3cWf3xk@YyH8;Vo z{T0fXOL+u`;<*+<09P!*B5oRpB*~3W88fCdY0zDA<(@!ad*wyJrW4*V=^$MR6?x zyBp5HPGVr!9>8uw1EwWO9%bY~g$kz3ND0d8(T*TGUBn~ZRLdh>(HxmC(>aeKY$F{` zi)WjcK=`pn*pg6=((b$*k*~*0QOHYLk>?V|9^Ym1phIB7wnU9^4dGfEE>6B>UZZe@ zapB#NgO!9`#L&PjE}@8CYrrAY8p^!hA`dQ?f*UrxIj67|8m7u<6wccXm);=g?5<+V zyo!}aopW^kmTv2kleIbuhAc*m+8j2?i`9n^74f7{GqR3n3~QLN5E%(A36F@_B;gT}ggq+a=@K3lu}X=v zMl~kvkr8i^LTJV3IJeMxPsEMZP?|MWkb}eGlZ(ULQt4{qG`AF|2r+}o z?a>n#M`VVHUSXnlnCKHG`i6-!!$iL@(LY4=>=7oyDfbMg+%ueV&v42;!zuR+r`$7~ za?fzeJ;NzyhEvWAr<@s1IWwGcW;o@{aLSqClzU~`$>S$SVa88$5G{A?dCTpcW?)o= zhBn4U39r@Yu#z29sID4)SnOerV#};T*FaCulW?!qwa}CGROo5?0_f>_I`j-Z1G-M5 z!AN#4q1n5{{bJ2&JN65A;l5k%#$}J*1HBjR2UdS#xrfH?0y@RmVOXv#`wREu@__vt zE-Ng$W7t<%jmsLl2KsUPH1soQa?tDze84#^DMLJa?Imda8B$oTT288+o9SQ;JN7;) z9c48jtxU~?xieJqgy|Q}VE10h%`$Oyd;fA;z}x?CZWc$ii@7|}G+)(nkxN0&P-!I9 zf|B&r=p+ND1DA#NmAxJ1Ci}_kB@bc`ncZWzcRXB=aQngMvI|@n+THzx-ODc`yOxLb z5w|xfyNc=TCdwY7>>tV=;aIn?H^=SZEnu%s_UUAoPWI?zhwe7FJ9jU8a;tuKf9=)K zZko4$Ci`XIh4#jNWfv^g?SGxbPF8=nM-|?gl0B(n_Mj?{+j*KA+HLaon(EnMl6|Fx z>>^!%+>Vj#{j8_1sGWqpYFSbuyGQrihmu;`fKIh**_ZF0e1G!&Nr_1<5 zBB^iU;pCQyM-z`GsibJ}N$Q*2GATQ$byEAJj)dru)Hi8h^4MlwaLeakoK&7PI;lEo za?lH)(y+3e2NPYk(V*HYdH7v@K~z(#OfWllGDB zFG&ZIzD@ce>6c`a9GjdR-7&dka+_woll{q^lQWVtllvtPO3qClmi$%nq2!X}isZ4$ z6ZlU}u1ju6o}auR`Re5Bl5a@9HTf>e@lbLgd2RC3$%H-H}`?@r$DVjoF9 z*38!|zFG5Tt(vuKmfEaKv+m7$HyhAwaI+!J3i+2dtE4@Z*}+P)|GN`7emS+WD--{(Stc@pr}FPlx~^o=(`AxB|DA`M(kW zPW%V)yGiA%_(O^L@kip1CHNBJ6PhQqN@$mmnlK=t3#NNQZ{XmBAqj;Er3sY@;}WYA zCMDdIaB0H%39}OBf)^$%PFQO1$L+SnH3`cT9!z*RVO7GqgbfLs61F5xPpnVany@`# zXTo0opC=qlIGk`aQ6)wvCMLE>Y@OIXv14L-VvoeWi31a}`Ijf=Cl&)oCsrp;me`5& z5-(3&l(-~uS>i2;cO>4MxFYe<#5IZQ6E`MqPJE63wnQ`;GHTH3wBJGP;CcrO1TxY9 zEw}xTYm@DW(M9wcGM00SMJYF08(QX~|Jw>ftuPjC-TVHdSrl_9=19yNG4F6R`ABTL zm=9u)#_Z<5Kjtg(iES5qG`363u~=Vhd~EaBR@hVHvg4CuyTo?q-#d0d?BLiTv4ydv zv6XR;#*T}f6nlQ`tk}7+m&PuPT^zeSb}8nj*xP^)#y%XoDt2A$hS*JUn`5_-?%vp~ zvD;&JfsP!#(1*#qEge%gy2JxP1P_apiHN zxjj5NZhBmO+`PEU;}*p&iCY$TOWYlC_r|T@zdr8KxHZ6yahu~_bFn{;+ZT5r?%TK@ z;(m!Y@v-sA@h#)q#QWnr$7jT6^6wXq4pN?P$G0%iH2%A2iWexynYk}i2rM&UUcqg-5% zhl4JhNT#DmTVzRDwpyf$kI3Am;yBw$jjSR>dsog?E;o_JD);xwo=!?ALyY_>1@vBG zilkcD4ajPh%tEPU<7MaLzViS8wav^3#L>SMc;tVc_oNn2`7i#sg55Uw?nmh!pQ5#mqm zuD5t?-p8z2r}JG19Wz>>KF`5r0;84+oi@UU|qD^UL^(Dx_jKE}~5 zmUXdw--`<~Twqief!6u@oUe6xS?6nAYMgl^jDA6&Pg0Y2hVYEPB|hzR26ooT*SQ>%AyLUjeFQP*&ubR%a#H)CGoT<8wYfbP== zIOX|+{)O{=hWDg4oZ(F7yk;BDW_EUOPW@~tXDxF%S6RXt%CVf6oXR^+bIwOLa29d_ z|EoFgcmr=vck#~j5N8(Gaz62S&LY0So6-lIG2G1=!u^~nJjD6IW1JNvHm3pGaq_PV zr~GxoJ)m+%Nz_i_=xQU5s8a%kkme zFe*K2GH3roqm-_WDvuhiSwV}M9>q#m)I41uwJ2&y)G`^fqVCm;q8^oTOWzW;(Hpm- zc6cLK)VGXXo4s)>Iyt&!bem{@bm!=d=*;MT(SxFMqlZP8L|1qtT6A4>L-hRU1<_ZB z#x@guzln_wM6c!lboBGbk8sgnMIVYj!r5|flp7Y)Tt>Q>)R-m?WKBjMKY zjSqYex)hFzFSm3?U&$NxQ}w~Bb@sdfi}nS^Qm)xL!@EebLqb; z>7(6EINvWJO@V`=kx8SKjIx;3F30HLo236;khL1^3%>61%E9-27xF3>CPgHp(}J?< zlkOzhDmaRepQHIw>lnV*(X>am!L7CKjeit(My9(PA$zf1_Fv6I{&T;UI|BcHh4FvI z`r_}cE>_zbJAsqza*DliUGYDyD$2TTtA8;%SdQCex}W-m8(p#79%{)QAwTzZI`hxq z&QCv9WplA#%`Ke@)?z1c`-V43?$<29?K=K9a9`#w?#4W%1A47~n!745b1&r`?x5_} z`?+Ouh#MuxjE_4b&AA`aj=LaTxcAYUJ06405N>gla${qhnZ%upS=_(4l)Dy-8NqL2 zjdnTrB_3vlb{+R1HgV@+EB70=bFX19cNh+GU*RZs6Qa3?(1JS$?YUo&&Rv4O+#AT| zjzBT@0Y=+uPW(^jbpJe7To-X_e;FtA@8C543RcM1u-dwjRZZzHlQUgALFp2Oow0#`XCh zf?UR@x8qK4UxM$olBT{w!qcX&1Wpjzj&V@#&N0Ilnz2AQne5#8QV(Hnb}&i8m@mcG zJRzwuMom>L>dOIz(6FZr7rUkp=($&%RXr|VtzoVBrcz5tD(!4_;I&+23GlFw* zxz4#CbX*;EFk9P(oS~}-GOct6W{$VR)K@@LB0;dD2BAn zYL`yD;{n~vlq=dj3BGe<`jTV+z{Q7_ZsC)CAigCeW#P#Ryh`Gti&y< z2`-uFPS$8>1kyqpfUSb_NarUP5&-=FY*F+1HWXE7phD zx%utAO&LSOAq?SVZ>RBQXR_SuWH)HGnox7W)H*fY!3K7QCad`lE&$F}S5K{(K3QGo z;0?e!b=&l5Q)<-mI!?B$2WQpS&Q=f4n%yv4t*O7DezIC$KWpk_wQ+7u!yN9*G2sZ^ zAeG%Exnb&YD=@~wNAG}puhQH%6`z(4GJC;C?xTuZ3kRbe^meckxL-P1 zEnrWeIWw0@`f~2=th3vqZi`8bpLcTL)GenTY`>#JdWY*e9Q8k+5}ndArFTkpN=eGN zl<6t+Qx>P(l5&5_s+5f>Z=~!@IgoM$9fU1YQ&W4S4oWRd9i2Kgb#CgS)EoE~pO zTV>P!wS2E>KK$@mKnLAB^QqO`@AS$kduEf7c`N1TK5TE=W}e_D`lW&I!#| zHK2Jmlg0p@bzIp@hY!p+d}z;5V@6TkZiDazl3#_g^pN zrtM8?xq6uUuA8_!yOZ{Pn4}VUo_FM(cp!7ka$OA<^LY1N#_VwgZ@e3sG49a&Tk4@+!P3WJR(0u(P68GmOG3$+t1zXquR&Zr}e2NrWM=>ct4PIYPY@pD-E6pq8}R+UA2c``R32 zoVZJ^XmfP@Te>MHHGDB7M%bN3X&XPqzPAvW&!~ zybny~_WgXu;-$O=+{=ylwT#AFnEiiDUWZt5jAqu~hP&V0dH2p{wqIeYndvw1*0h-Q z#5f4o0YNBGk7L>YownP=xv}LLH7!-$$q)BGiu&>PUq8DMB5MP(MegUn116 z5$afk;%ts57e?eTCC_9hE52e8rfh`rMX0CDCs?34Cy@{CB4U^PKr>{k32W&M;;~p$fKkmd6e`ckCJ}m zQPPh*O8SvUNk8%^=|>(V{m7%FA9_W4{dd9M+(cf?y zx*N8tF6d==Tb+eohV5z~IvIAMza-Mv5`U4W6f66Sc_$vo+wXjHgm>BAoFJOYyXqbG zW8Ws<$5Df$rblmJrD}StFSc{+=GYzV6Yq;35`Q3JE$15!CALcRCzf(z;g-a8i63(^ z=n&_$1~6(Cs&ZzIlNdJ}m{%=iX0?=leH+ig2bo{3VurPWIo1|N&h0z}_cGHuXok_( zwxe63!tez#s2@$f!v$uj!$ZsvhjYz2;J0;|=>guXD-G`);4(7^NmZJ&ffZ&Tu*?hq zmYTl65vC9DN7EZvYfCG3pXwIy&9rK4SXpre`M&Vjz%7B%8t4sJ80W3Aez#>x!EHJ}?XYp>( znHYVUYm3&LQl2&AkeX;Kn%gKhGl}xOK`J%iE#UFsS4exD!)2z{rG7qejF|`=X(j+m z%rs!7sRkCAslW;|8CYh{0~VUGz~N>LFyD*@W|=DB*`^XWkavby=07dX3~Xg)I1d#tXXcaM2GYCO;WEApBRMYwmhcWPsV@Ky=bJ_%#mj+1%w@n_a|tlpTn(%= zi-2Wj9&oLh3(VpzUTP{_s%xG9VqmGc23SPTi1%vIT#voVTnEfDe*_LTOMr61D;(m_ z*elI4V43+7FwZOn=F&%_RU%&>689U#y-A$EV6QZ{IKP{LL;30tyocia)w$m)?#R6b zI*Zz?j`UC`Cvy+(m8`Ewx_1Lh`4X4Z+MU3m<__Qx_kDmoa~pIn&s48P6{CM>9Fi41 zWtXF6=sGmL+{(=5el!UM&>8czdLFGoZ=f0I1GSs4Zb`4JG*3BPX4X4g#M*{M(@U9I z36|dZC|Ft{-ve~L?;(fF%md&jh<~5MWvoyL*8$*<<}qNgc>-8r9sw4yLL|NJabTHw z5;(^E9avyi0QaHsUwYSrz{gqRkP_by{KTvRjzG6w)4F^XTcz0mEHlpli+J;HLo4gd zDbq~W!Ur)P4dc9N1z&f1)rH;S!oC75H7^54nwNk-na#iw^CGawYyuXV7l6af^T4ys zbHGo{M&LkJClYzvbh((IqM;0gK>6=8)CsUYdngr3H+I%czCr zY6W$$PHk+g0p13_LhI8Jb&NNHc-975v6r1HXD^ve4&bd|2pk=DqomY_yp?SS%Uj!a z+P}Q*iMzZFzCrHthA5+kym1PD@(%d z;4oI4_?`vp>@wbd0UW{Fl+^!r;1E{Bq({F49BkeOo?|`-{%GC;4si7w8f$sl3~n4d z%~6kMs|i_6*=i+a355Uuu(bWB^NSSKyB} z9awBn2Nu~bz~S~ZV1YMw+Owd`tUT$9*aH%7^Xcus`y~B$GZ4$SNtsa$vE^W?g<;^A zz%tW#0(>s1kFjOI3R~*(8wo76CBTt(1hB*w14q~*V6iO(9=5}Q!)+yStc6=W%;p0N z>`>rPI|Mky<^l68&kov44)8*o4a~Axz=3u!@GRDqrS1j+2e^?Z^n9@A;WE~ab-rVO z6;__(Wwr|VA4Wkt4gV@T6;z!0tpN_U)xdM?cwn6! z2OQ9(eTc*vU;njT%k##{vz(F1Hh^CQUkH94JQMsJJj`&o%w9yQBkWw@k9H2Q*j@sx zw6lTvwjOxU&Igv+S-?DdDR8u{1AcAi0ZZ+4V6MFY_=!CqIDjW<^9-Jc zi+I;u#@fss=+j$)F1Ta{smZSZvhsuOM}d0-X%9Sn0LwS#kCug z4gd0-kk(daq~%o_X>Fx$mL@VSJ3c4AwTQ2gURz?Mzcv`@qa#c=V1bd*qwY5`Tz@eY z_*9v4V5M=r#z=oDHPT1u55!4i7ecs@n!m8gh|~=G7@GiWura^_>x+bFp?L1vvnj>3 zw0>r);4LIXN{V--tvpS)>79Is7HxH^qr2NK>KC-gs`Lu?z+(9|W?9q#LdBl&M zbd|&`Kz2ljpv_S3rF_PHlyBhTCgv$#_~J z`ih-jPKmJ(J4rOJg~H0&Ku_B3p_1LnkqXxS{)x81O=!16j~(}FmWVDjFGlRqNQ@3p zC$e)flNqW(BVjS8W8M$xxogyIcaU`?d4HnTV>d+N`k_wJUvl1KBDw&tL1*53=*IiR zX~1*Z?$Acp6HRpexxcfJ@xhDVSpO-+@5pZTd7O`%hWb!r(X2Ug|*9hdgZPUr7k>qvPgwWce)EjOX2yn>N#csyWn@AD{wWs z0oSoc7DN-D=-Ko1>veEi^)lS~x_)TP%Voz~G~Qi;wz_MbhPpqAUOF$Q81|k*Ii*2$ z;m%Yh`|m>|S`cTW>+ni*HMgafp}FuOcHTw%;OnAc(6+LtpvCV@^zmhdbnumMj<3c} zM5o?-bmA>#9Cgx)DT(CL5z6mQM4iFO!ZDn$5$%c#jp$Ll1-*#(p#AVk^A_uUQC4&a zc0&JOSgYSiboot2Pu~?@s?m-0--%RHI6=@YqAyZ(MGi7qXo$?`^uS_tGv0^>#^q>I z{MvkHPeco$-{}u5Kv!TXdI4vk>o3%|qwkGyE9bxX^0n#DN{nch6upvV=#;GCMBXK6 zd=zbuw}qwkXMTHT|5f z%QfbED_R-5*}<$LT`kX17k+&tJbU~q3N4(&&C}>=qN4*I*Gae64t|>$K7Y|VK7c7l~`GYu=n#E*sas;eYozn_c}ibwdS}`^5!j} z{_aApIL_~pkl(}3?;p-jQh5BhP=QdW$6TmKkMmm{@>}KnRysdP;m!~hr_Vq)?&Kyq zad$V7hT;9GFC`o7%C69Uy^=uNRJVji-mRNqO$& ze8BNL?UPv{n9sa)DYIsYBcT!ID?+^&rc82#lKGWO*))$( zCq$@|LR6BQZG`W{mNSP4YwcwfBGRU%mSaOJB5nHirQ$~VWu>(ZDF0Y(eG(iU>j|Zn)933 zmb04L=ywAvtc|usthzSZ=CX#`Xq(EqYNKtmnbpKrXfAAG8)WL6*m|%k+ZZp^$aor- ueoIzI8*S07n2PKhCC4YKR4jM8-eX@tbjmtivV@7Hk5)4V&`(3HTm3&MQ2a^& literal 0 HcmV?d00001 diff --git a/assets/fonts/Hind-SemiBold.ttf b/assets/fonts/Hind-SemiBold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..306f399de25dc6a84d13a96492beef5cdc44fc5b GIT binary patch literal 274412 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 =m>oma3NEa8MFkfL^>sFovIXHT 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

sM@9GxO~? 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෷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 literal 0 HcmV?d00001 diff --git a/assets/fonts/OpenSans-Bold.ttf b/assets/fonts/OpenSans-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..efdd5e84a0397ecada7b9cfde51db87db08766bd GIT binary patch literal 104120 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

n{#NV($fZ=b2Ttd7 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 -Ui0>vvum!cQP#SwwX988o3plLZOz)* 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 literal 0 HcmV?d00001 diff --git a/assets/fonts/OpenSans-Regular.ttf b/assets/fonts/OpenSans-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..29bfd35a2bfdd92b6e8b4ec2970f4d1eebf49357 GIT binary patch literal 96932 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

_T_kl)Xoan=RX{3lY#VQTZ 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 literal 0 HcmV?d00001 diff --git a/assets/fonts/RobotoMono.ttf b/assets/fonts/RobotoMono.ttf new file mode 100644 index 0000000000000000000000000000000000000000..7caacd828752db113fbeb01d3f856eadc8ac4242 GIT binary patch literal 184768 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 z

t|MLN5_GUNo`jbzIBgKJZa6&_S>}+L??f#HR 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 TmAPpWX~qklzyGmRF_i%T0ICWh literal 0 HcmV?d00001 diff --git a/lib/backup.dart b/lib/backup.dart index 1567608..3a6f65e 100644 --- a/lib/backup.dart +++ b/lib/backup.dart @@ -4,9 +4,9 @@ import 'dart:typed_data'; import 'package:archive/archive.dart'; import 'package:archive/archive_io.dart'; import 'package:file_picker/file_picker.dart'; +import 'package:flutter_file_dialog/flutter_file_dialog.dart'; import 'package:path_provider/path_provider.dart'; import 'package:permission_handler/permission_handler.dart'; -import 'package:sound/file_manager.dart'; import 'package:uuid/uuid.dart'; import "model.dart"; import 'package:path/path.dart' as p; @@ -43,14 +43,6 @@ class Backup { return Directory(p.join(root.path, 'files')); } - Future importZip() async { - File f = await FilePicker.getFile( - type: FileType.custom, - allowedExtensions: ['zip'], - ); - return await readZip(f.path); - } - Future import() async { File f = await FilePicker.getFile( type: FileType.any, @@ -60,7 +52,7 @@ class Backup { Note note = readNote(f.path); return BackupData(notes: [note], collections: []); } else if (f.path.endsWith(".zip")) { - return await readZip(f.path); + return await _readZip(f.path); } return BackupData(notes: [], collections: []); @@ -71,7 +63,7 @@ class Backup { return new String.fromCharCodes(l); } - Future readZip(String path) async { + Future _readZip(String path) async { List notes = []; List collections = []; @@ -195,18 +187,23 @@ class Backup { return readNote(f.path); } - Future exportZip( - List notes, List collections) async { + Future exportZip(List notes, + {List collections, String filename}) async { // Zip a directory to out.zip using the zipDirectory convenience method // Directory tempDir = await getExternalStorageDirectory(); // cache directory which is located at /storage/emulated/0/Android/data/com.myapp.de/cache/ //Directory tempDir = (await getExternalCacheDirectories())[0]; + Directory tempDir = await getFilesDir(); - print("saving into directory ${tempDir.path}"); + String path; - String path = p.join(tempDir.path, - "sound_notes_backup_${DateTime.now().toIso8601String()}.zip"); + if (filename == null) { + path = p.join(tempDir.path, + "sound_notes_backup_${DateTime.now().toIso8601String()}.zip"); + } else { + path = p.join(tempDir.path, filename); + } print("saving to $path"); var encoder = ZipFileEncoder(); @@ -246,19 +243,22 @@ class Backup { encoder.addFile(File(notesPath), NOTES_FILENAME); // collections - for (NoteCollection c in collections) { - var filename = "${c.id}.json"; - var collectionPath = p.join(tempDir.path, filename); - File(collectionPath).writeAsStringSync(jsonEncode(c.toJson())); - encoder.addFile(File(collectionPath), filename); - } + if (collections != null) { + for (NoteCollection c in collections) { + var filename = "${c.id}.json"; + var collectionPath = p.join(tempDir.path, filename); + File(collectionPath).writeAsStringSync(jsonEncode(c.toJson())); - // write sets - var setsPath = p.join(tempDir.path, COLLECTIONS_FILENAME); - File(setsPath) - .writeAsStringSync(jsonEncode(collections.map((n) => n.id).toList())); - encoder.addFile(File(setsPath), COLLECTIONS_FILENAME); + encoder.addFile(File(collectionPath), filename); + } + + // write sets + var setsPath = p.join(tempDir.path, COLLECTIONS_FILENAME); + File(setsPath) + .writeAsStringSync(jsonEncode(collections.map((n) => n.id).toList())); + encoder.addFile(File(setsPath), COLLECTIONS_FILENAME); + } var audioFilesPath = p.join(tempDir.path, AUDIOFILES_FILENAME); File(audioFilesPath).writeAsStringSync(jsonEncode(audioFilesMap)); diff --git a/lib/dialogs/export_dialog.dart b/lib/dialogs/export_dialog.dart index 593fa55..f4c1513 100644 --- a/lib/dialogs/export_dialog.dart +++ b/lib/dialogs/export_dialog.dart @@ -4,16 +4,21 @@ import 'package:sound/backup.dart'; import 'package:sound/export.dart'; import 'package:sound/model.dart'; -showExportDialog(BuildContext context, Note note) { +showExportDialog(BuildContext context, List notes, + {List collections}) { showDialog( context: context, builder: (BuildContext context) { // return object of type Dialog - ExportType current = ExportType.PDF; + ExportType current = ExportType.ZIP; - _export() async { - await Exporter.exportShare(note, current); + _share() async { + await Exporter.exportShare(notes, current, collections: collections); + Navigator.of(context).pop(); + } + _save() async { + await Exporter.exportDialog(notes, current, collections: collections); Navigator.of(context).pop(); } @@ -25,28 +30,24 @@ showExportDialog(BuildContext context, Note note) { child: Text("Format:"), padding: EdgeInsets.only(right: 10), ), - new DropdownButton( + DropdownButton( value: current, - items: ExportType.values + items: [ExportType.ZIP, ExportType.PDF, ExportType.TEXT] .map((e) => DropdownMenuItem( child: Text(getExtension(e)), value: e)) .toList(), onChanged: (v) => setState(() => current = v)), ]), actions: [ - new TextButton( + TextButton( child: Text("Cancel"), onPressed: () { Navigator.of(context).pop(); }, ), // usually buttons at the bottom of the dialog - new ElevatedButton( - child: new Text("Export"), - onPressed: () { - _export(); - }, - ), + ElevatedButton(child: Text("Share"), onPressed: _share), + ElevatedButton(onPressed: _save, child: Text("Save")) ], ); }); diff --git a/lib/export.dart b/lib/export.dart index 87b2165..6744f51 100644 --- a/lib/export.dart +++ b/lib/export.dart @@ -1,6 +1,9 @@ +import 'dart:convert'; import 'dart:io'; import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter_file_dialog/flutter_file_dialog.dart'; import 'package:flutter_share/flutter_share.dart'; import 'package:pdf/pdf.dart'; import 'package:pdf/widgets.dart' as pw; @@ -10,7 +13,7 @@ import 'package:sound/model.dart'; import 'package:path/path.dart' as p; -enum ExportType { PDF, JSON, TEXT } +enum ExportType { PDF, JSON, TEXT, ZIP } String getExtension(ExportType t) { switch (t) { @@ -20,118 +23,65 @@ String getExtension(ExportType t) { return "pdf"; case ExportType.TEXT: return "text"; + case ExportType.ZIP: + return "zip"; + default: return ""; } } -class Exporter { - static Future export(Note note, ExportType t) async { - if (note.artist == null) { - Settings settings = await LocalStorage().getSettings(); - if (settings != null) { - note.artist = settings.name; - } - } +class PDFExporter { + pw.Document pdf; + var textStyle = pw.TextStyle(); - switch (t) { - case ExportType.JSON: - return json(note); - case ExportType.PDF: - return pdf(note); - case ExportType.TEXT: - return text(note); - default: - return null; - } + PDFExporter() { + pdf = pw.Document(); } - static Future exportShare(Note note, ExportType t) async { - String path = await export(note, t); - print("export to $path"); - await FlutterShare.shareFile( - title: '${note.title}.${getExtension(t)}', - text: 'Sharing ${note.title} from SOUND', - filePath: path); + static Future loadFont(String name) async { + var data = await rootBundle.load("assets/fonts/$name"); + return pw.Font.ttf(data); } - static String getText(Note note) { - String info = note.getInfoText(); - String contents = ""; - - if (note.artist != null) { - contents += "© ${note.artist} \n"; - } - contents += note.title + "\n"; - - if (info != null) { - contents += info; - } - contents += "\n\n\n"; - for (var i = 0; i < note.sections.length; i++) { - Section section = note.sections[i]; - - var sectionTitleEmpty = - section.title == null || section.title.trim() == ""; - var contentEmpty = - section.content == null || section.content.trim() == ""; - - if (sectionTitleEmpty) { - if (!contentEmpty) { - contents += section.content; - } - } else { - contents += "[${section.title}]" + "\n\n"; - contents += section.content; - } - - if ((!sectionTitleEmpty || !contentEmpty) && - i != (note.sections.length - 1)) { - contents += "\n\n"; - } - } - return contents; + static String formatText(String text) { + return latin1.decode(utf8.encode(text), allowInvalid: false); } - static Future text(Note note) async { - Directory d = await Backup().getFilesDir(); - String path = p.join(d.path, "${note.title}.txt"); + static List splitTextPerRow(String text, {int maxRows = 60}) { + List rows = text.split("\n"); + List split = []; - String contents = getText(note); - File(path).writeAsStringSync(contents); - return path; + for (int i = 0; i < rows.length; i += maxRows) { + int end = (i + maxRows) > rows.length ? rows.length : i + maxRows; + print("Split from $i to $end"); + split.add(rows.sublist(i, end).join("\n")); + } + return split; } - static Future json(Note note) async { - return await Backup().exportNote(note); - } + List getPages(Note note, int totalPageCount, int pageOffset) { + //var data = await rootBundle.load("assets/fonts/arial.ttf"); + //var customFont = pw.Font.ttf(data); + //var textStyle = pw.TextStyle(font: customFont); - static Future getSize(String text, TextStyle textStyle, - {double textScaleFactor = 1.0}) async { - return (TextPainter( - text: TextSpan(text: text, style: textStyle), - maxLines: 1, - textScaleFactor: textScaleFactor, - textDirection: TextDirection.ltr) - ..layout()) - .size; - } - - static Future pdf(Note note) async { - Directory d = await Backup().getFilesDir(); - String path = p.join(d.path, "${note.title}.pdf"); + // var textStyle = pw.TextStyle( + // font: await loadFont("OpenSans-Regular.ttf"), + // fontBold: await loadFont("OpenSans-Bold.ttf")); String info = note.getInfoText(); // final Uint8List fontData = File('open-sans.ttf').readAsBytesSync(); // final ttf = pw.Font.ttf(fontData.buffer.asByteData()); - final pdf = pw.Document(); List sections = []; List> sectionRows = []; int rows = 0; - for (var section in note.sections - .where((element) => element.content.trim().length > 0)) { + List

noteSections = note.sections + .where((element) => element.content.trim().length > 0) + .toList(); + + for (var section in noteSections) { int sectionLength = section.content.split("\n").length; if (((sectionRows.length == 0 && (rows + sectionLength) > 50)) || @@ -144,15 +94,31 @@ class Exporter { rows += 3; rows += sectionLength; + // separate content to multiple rows + sections.add(pw.Row(children: [ - pw.Text(section.title, - style: pw.TextStyle(fontWeight: pw.FontWeight.bold)) + pw.Text(formatText(section.title), + style: textStyle.copyWith(fontWeight: pw.FontWeight.bold)) ])); sections.add(pw.Row(children: [pw.Container(height: 5)])); - sections.add(pw.Row(children: [ - pw.Text(section.content, - style: pw.TextStyle(fontSize: 11 * PdfPageFormat.point)) - ])); + + List split = splitTextPerRow(section.content); + + print("section has ${split.length} splits..."); + + for (int i = 0; i < split.length; i++) { + var text = split.elementAt(i); + + sections.add(pw.Row(children: [ + pw.Text(formatText(text), + style: textStyle.copyWith(fontSize: 11 * PdfPageFormat.point)) + ])); + + if (i != split.length - 1) { + sectionRows.add(sections); + sections = []; + } else {} + } sections.add(pw.Row(children: [pw.Container(height: 10)])); print("rows: $rows"); @@ -169,35 +135,42 @@ class Exporter { // add capo information / artist information... if (info != null) { titleRows.addAll([ - pw.Row(children: [pw.Text(info, style: pw.TextStyle(fontSize: 12))]), + pw.Row( + children: [pw.Text(info, style: textStyle.copyWith(fontSize: 12))]), pw.Row(children: [pw.Container(height: 10)]) ]); } // add title titleRows.add(pw.Row(children: [ - pw.Center(child: pw.Text(note.title, style: pw.TextStyle(fontSize: 20))) + pw.Center( + child: pw.Text(formatText(note.title), + style: textStyle.copyWith(fontSize: 20))) ])); // spacing between title and content titleRows.add(pw.Row(children: [pw.Container(height: 50)])); String artist = (note.artist != null ? note.artist : Settings().name); + artist = formatText(artist); var copyright = (artist == null) ? pw.Container() : pw.Positioned( bottom: 0, right: 0, - child: pw.Text("© $artist"), + child: pw.Text("© ${formatText(artist)}", style: textStyle), ); + List pages = []; + for (var i = 0; i < sectionRows.length; i++) { var page = pw.Positioned( bottom: 0, left: 0, - child: pw.Text("Page ${i + 1}/${sectionRows.length}"), + child: pw.Text("Page ${pageOffset + i + 1}/$totalPageCount", + style: textStyle), ); - pdf.addPage(pw.Page( + pages.add(pw.Page( margin: pw.EdgeInsets.only(top: 50, bottom: 20, left: 50, right: 20), pageFormat: PdfPageFormat.a4, build: (pw.Context context) { @@ -211,8 +184,220 @@ class Exporter { ]); })); // Page } - final file = File(path); - await file.writeAsBytes(pdf.save()); + + return pages; + } + + addNotes(List notes) { + if (notes.length == 0) return; + + int totalPageCount = notes + .map((e) => getPages(e, 0, 0).length) + .toList() + .reduce((a, b) => a + b); + + int offset = 0; + + for (Note note in notes) { + var pages = getPages(note, totalPageCount, offset); + offset += pages.length; + + for (var page in pages) { + pdf.addPage(page); + } + } + } + + String save(String path) { + File(path).writeAsBytesSync(pdf.save()); return path; } } + +class Exporter { + static Future export(Note note, ExportType t) async { + if (note.artist == null) { + Settings settings = await LocalStorage().getSettings(); + if (settings != null) { + note.artist = settings.name; + } + } + + switch (t) { + case ExportType.JSON: + return json([note]); + case ExportType.PDF: + return pdf([note]); + case ExportType.TEXT: + return text([note]); + case ExportType.ZIP: + return zip([note]); + + default: + return null; + } + } + + static Future exportNotes(List notes, ExportType t, + {List collections, String title}) async { + Settings settings = await LocalStorage().getSettings(); + + for (Note note in notes) { + if (note.artist == null) { + if (settings != null) { + note.artist = settings.name; + } + } + } + + switch (t) { + case ExportType.JSON: + return json(notes, collections: collections, title: title); + case ExportType.PDF: + return pdf(notes, title: title); + case ExportType.TEXT: + return text(notes, title: title); + case ExportType.ZIP: + return zip(notes, collections: collections, title: title); + + default: + return null; + } + } + + static Future zip(List notes, + {List collections, String title}) async { + return await Backup().exportZip(notes, + collections: collections, filename: getFilename(notes, 'zip')); + } + + static Future exportShare(List notes, ExportType t, + {List collections}) async { + String path = await exportNotes(notes, t, collections: collections); + String title = p.basename(path); + + print("export to $path"); + await FlutterShare.shareFile( + title: '$title.${getExtension(t)}', + text: 'Sharing $title from SOUND', + filePath: path); + } + + static Future saveFileDialog(String path) async { + final params = SaveFileDialogParams(sourceFilePath: path); + return await FlutterFileDialog.saveFile(params: params); + } + + static Future exportDialog(List notes, ExportType t, + {List collections}) async { + String path = await exportNotes(notes, t, collections: collections); + await saveFileDialog(path); + } + + static String getText(Note note) { + String info = note.getInfoText(); + String contents = ""; + + if (note.artist != null) { + contents += "© ${note.artist} \n\n"; + } + contents += note.title + "\n\n"; + + if (info != null) { + contents += info; + } + contents += "\n\n\n"; + for (var i = 0; i < note.sections.length; i++) { + Section section = note.sections[i]; + + var sectionTitleEmpty = + section.title == null || section.title.trim() == ""; + var contentEmpty = + section.content == null || section.content.trim() == ""; + + if (sectionTitleEmpty) { + if (!contentEmpty) { + contents += section.content; + } + } else { + contents += "[${section.title}]" + "\n\n"; + contents += section.content; + } + + if ((!sectionTitleEmpty || !contentEmpty) && + i != (note.sections.length - 1)) { + contents += "\n\n"; + } + } + return contents; + } + + static String getFilename(List notes, String extension, + {String title}) { + if (title == null) title = "${notes.length} notes"; + if (notes.length == 1) title = notes.elementAt(0).title; + return "$title.$extension"; + } + + static Future getPath(List notes, String extension, + {String title}) async { + Directory d = await Backup().getFilesDir(); + return p.join(d.path, getFilename(notes, extension)); + } + + static Future text( + List notes, { + String title, + }) async { + String contents = ""; + + for (int i = 0; i < notes.length; i++) { + contents += getText(notes.elementAt(0)); + if (i != 0 && i != (notes.length - 1)) { + contents += "\n\n\n\n"; + } + } + + String path = await getPath(notes, "txt", title: title); + File(path).writeAsStringSync(contents); + return path; + } + + static Future json(List notes, + {String title, List collections}) async { + //return await Backup().exportNote(note); + String path = await getPath(notes, "json", title: title); + Map data; + + data = { + "notes": notes.map((e) => e.toJson()).toList(), + }; + + if (collections != null) { + data["collections"] = collections.map((e) => e.toJson()).toList(); + } + + File(path).writeAsStringSync(jsonEncode(data)); + return path; + } + + static Future getSize(String text, TextStyle textStyle, + {double textScaleFactor = 1.0}) async { + return (TextPainter( + text: TextSpan(text: text, style: textStyle), + maxLines: 1, + textScaleFactor: textScaleFactor, + textDirection: TextDirection.ltr) + ..layout()) + .size; + } + + static Future pdf(List notes, {String title}) async { + String path = await getPath(notes, "pdf", title: title); + + PDFExporter exporter = PDFExporter(); + exporter.addNotes(notes); + + return exporter.save(path); + } +} diff --git a/lib/export_note.dart b/lib/export_note.dart index ce92277..6ddbc13 100644 --- a/lib/export_note.dart +++ b/lib/export_note.dart @@ -33,7 +33,7 @@ class ExportNoteState extends State { showSnack(widget.state, "Please select a note to export first"); return; } - String path = await Exporter.pdf(note); + String path = await Exporter.pdf([note]); await FlutterShare.shareFile( title: '${note.title}.pdf', @@ -88,7 +88,7 @@ class ExportNoteState extends State { child: Padding( padding: EdgeInsets.only(left: 10), child: ElevatedButton( - onPressed: _export, child: Text("Export"))), + onPressed: _export, child: Text("Export PDF"))), ) ]) ]); diff --git a/lib/home.dart b/lib/home.dart index 62838af..4c97dc9 100644 --- a/lib/home.dart +++ b/lib/home.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:sound/dialogs/color_picker_dialog.dart'; +import 'package:sound/dialogs/export_dialog.dart'; import 'package:sound/dialogs/initial_import_dialog.dart'; import 'package:sound/note_views/appbar.dart'; import 'package:sound/note_views/seach.dart'; @@ -209,6 +210,11 @@ class HomeContentState extends State icon: Icon(Icons.clear), onPressed: () => clearSelection()), title: Text(storage.selectedNotes.length.toString()), actions: [ + IconButton( + icon: Icon(Icons.share), + onPressed: () { + showExportDialog(context, storage.selectedNotes); + }), IconButton( icon: Icon(Icons.delete), onPressed: () { diff --git a/lib/main.dart b/lib/main.dart index 266226e..9f989bc 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,5 +1,6 @@ import 'dart:async'; +import 'package:flutter/foundation.dart'; import 'package:flutter/services.dart'; import 'package:flutter_flux/flutter_flux.dart'; import 'package:flutter/material.dart'; @@ -12,14 +13,20 @@ import 'package:sentry_flutter/sentry_flutter.dart'; import 'package:sentry/sentry.dart'; Future main() async { - await SentryFlutter.init( - (options) { - options.dsn = - 'https://1b2a119a53224f48966b710bc30123be@o1005300.ingest.sentry.io/5966036'; - }, - // Init your App. - appRunner: () => runApp(App()), - ); + if (kReleaseMode) { + print("Running release mode"); + await SentryFlutter.init( + (options) { + options.dsn = + 'https://1b2a119a53224f48966b710bc30123be@o1005300.ingest.sentry.io/5966036'; + }, + // Init your App. + appRunner: () => runApp(App()), + ); + } else { + print("Running debug mode"); + runApp(App()); + } } // ffe57c73 diff --git a/lib/note_editor.dart b/lib/note_editor.dart index 52a169a..80000a2 100644 --- a/lib/note_editor.dart +++ b/lib/note_editor.dart @@ -2,6 +2,7 @@ import 'package:audioplayers/audioplayers.dart'; import 'package:clipboard_manager/clipboard_manager.dart'; import 'package:flutter/material.dart'; import 'package:flutter_flux/flutter_flux.dart' show StoreWatcherMixin; +import 'package:flutter_share/flutter_share.dart'; import 'package:sound/dialogs/add_to_collection_dialog.dart'; import 'package:sound/dialogs/color_picker_dialog.dart'; import 'package:sound/dialogs/import_dialog.dart'; @@ -83,8 +84,8 @@ class NoteEditorState extends State RecorderBottomSheetStore recorderStore; NoteEditorStore store; GlobalKey _globalKey = GlobalKey(); - List popupMenuActions = ["share", "copy", "add"]; - List popupMenuActionsLong = ["Export", "Copy", "Add to Set"]; + List popupMenuActions = ["export", "share", "copy", "add"]; + List popupMenuActionsLong = ["Export", "Share", "Copy", "Add to Set"]; bool get useTabs => widget.view == EditorView.tabs; final Key bottomSheetKey = Key('bottomSheet'); Map dismissables = {}; @@ -179,10 +180,36 @@ class NoteEditorState extends State showSnack(_globalKey.currentState, "Songtext copied"); } + _sharePdf() async { + // TODO: open dialog with "Save" and "Share" Options + + String path = await Exporter.pdf([store.note]); + print("generated pdf at $path"); + + await FlutterShare.shareFile( + title: '${store.note.title}.pdf', + text: 'Sharing PDF of ${store.note.title}', + filePath: path); + + /* + String path = await Backup().exportNote(note); + + await FlutterShare.shareFile( + title: '${note.title}.json', + text: 'Sharing Json of ${note.title}', + filePath: path); + */ + } + _runPopupAction(String action) { switch (action) { case "share": - showExportDialog(context, store.note); + _sharePdf(); + // share text.... + break; + case "export": + // export as pdf + showExportDialog(context, [store.note]); break; case "star": toggleStarred(); diff --git a/lib/settings.dart b/lib/settings.dart index b7a0746..8f4bf54 100644 --- a/lib/settings.dart +++ b/lib/settings.dart @@ -177,8 +177,8 @@ class SettingsState extends State with StoreWatcherMixin { } _onBackup() async { - String path = await Backup().exportZip( - await LocalStorage().getNotes(), await LocalStorage().getCollections()); + String path = await Backup().exportZip(await LocalStorage().getNotes(), + collections: await LocalStorage().getCollections()); showSnack(_globalKey.currentState, "Exported zip to $path"); String filename = p.basename(path); diff --git a/pubspec.yaml b/pubspec.yaml index 252990e..824c5c6 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -71,6 +71,15 @@ flutter: # To add assets to your application, add an assets section, like this: assets: - assets/initial_data.json + # - assets/fonts/RobotoMono.ttf + # - assets/fonts/arial.ttf + # - assets/fonts/Hind-Bold.ttf + # - assets/fonts/Hind-Light.ttf + # - assets/fonts/Hind-Medium.ttf + # - assets/fonts/Hind-Regular.ttf + # - assets/fonts/Hind-SemiBold.ttf + # - assets/fonts/OpenSans-Bold.ttf + # - assets/fonts/OpenSans-Regular.ttf # An image asset can refer to one or more resolution-specific "variants", see # https://flutter.dev/assets-and-images/#resolution-aware. # For details regarding adding assets from package dependencies, see From 4943cc042f95693a76b2921faa3d40a292ce4901 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 19 Sep 2021 18:53:58 +0200 Subject: [PATCH 091/146] Export collection and notes from list --- lib/collections.dart | 9 ++++++++ lib/dialogs/export_dialog.dart | 8 ++++--- lib/export.dart | 38 ++++++++-------------------------- 3 files changed, 23 insertions(+), 32 deletions(-) diff --git a/lib/collections.dart b/lib/collections.dart index dfe3518..5a2fe5d 100644 --- a/lib/collections.dart +++ b/lib/collections.dart @@ -3,6 +3,7 @@ import 'package:flutter_flux/flutter_flux.dart'; import 'package:sound/collection_editor_store.dart'; import 'package:sound/db.dart'; import 'package:sound/dialogs/choose_note_dialog.dart'; +import 'package:sound/dialogs/export_dialog.dart'; import 'package:sound/local_storage.dart'; import 'package:sound/model.dart'; import 'package:sound/collections_store.dart'; @@ -260,6 +261,13 @@ class _CollectionEditorState extends State })); } + _onExport() { + String title = + (store.collection.title.trim() == "" ? null : store.collection.title); + showExportDialog(context, store.collection.notes, + collections: [store.collection], title: title); + } + @override Widget build(BuildContext context) { var notes = []; @@ -315,6 +323,7 @@ class _CollectionEditorState extends State ))); List actions = [ + IconButton(icon: Icon(Icons.share), onPressed: _onExport), IconButton(icon: Icon(Icons.play_circle), onPressed: _onPlay), IconButton( icon: diff --git a/lib/dialogs/export_dialog.dart b/lib/dialogs/export_dialog.dart index f4c1513..c594666 100644 --- a/lib/dialogs/export_dialog.dart +++ b/lib/dialogs/export_dialog.dart @@ -5,7 +5,7 @@ import 'package:sound/export.dart'; import 'package:sound/model.dart'; showExportDialog(BuildContext context, List notes, - {List collections}) { + {List collections, String title}) { showDialog( context: context, builder: (BuildContext context) { @@ -13,12 +13,14 @@ showExportDialog(BuildContext context, List notes, ExportType current = ExportType.ZIP; _share() async { - await Exporter.exportShare(notes, current, collections: collections); + await Exporter.exportShare(notes, current, + collections: collections, title: title); Navigator.of(context).pop(); } _save() async { - await Exporter.exportDialog(notes, current, collections: collections); + await Exporter.exportDialog(notes, current, + collections: collections, title: title); Navigator.of(context).pop(); } diff --git a/lib/export.dart b/lib/export.dart index 6744f51..f8bc8f7 100644 --- a/lib/export.dart +++ b/lib/export.dart @@ -215,29 +215,6 @@ class PDFExporter { } class Exporter { - static Future export(Note note, ExportType t) async { - if (note.artist == null) { - Settings settings = await LocalStorage().getSettings(); - if (settings != null) { - note.artist = settings.name; - } - } - - switch (t) { - case ExportType.JSON: - return json([note]); - case ExportType.PDF: - return pdf([note]); - case ExportType.TEXT: - return text([note]); - case ExportType.ZIP: - return zip([note]); - - default: - return null; - } - } - static Future exportNotes(List notes, ExportType t, {List collections, String title}) async { Settings settings = await LocalStorage().getSettings(); @@ -272,9 +249,11 @@ class Exporter { } static Future exportShare(List notes, ExportType t, - {List collections}) async { - String path = await exportNotes(notes, t, collections: collections); - String title = p.basename(path); + {List collections, String title}) async { + String path = + await exportNotes(notes, t, collections: collections, title: title); + + title = p.basename(path); print("export to $path"); await FlutterShare.shareFile( @@ -289,8 +268,9 @@ class Exporter { } static Future exportDialog(List notes, ExportType t, - {List collections}) async { - String path = await exportNotes(notes, t, collections: collections); + {List collections, String title}) async { + String path = + await exportNotes(notes, t, collections: collections, title: title); await saveFileDialog(path); } @@ -342,7 +322,7 @@ class Exporter { static Future getPath(List notes, String extension, {String title}) async { Directory d = await Backup().getFilesDir(); - return p.join(d.path, getFilename(notes, extension)); + return p.join(d.path, getFilename(notes, extension, title: title)); } static Future text( From dfbc524dbf9a00101f427b93e5633b0a9e8e71f2 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 19 Sep 2021 19:19:56 +0200 Subject: [PATCH 092/146] Fix import new notes frpm zip --- lib/backup.dart | 39 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/lib/backup.dart b/lib/backup.dart index 3a6f65e..2223b2c 100644 --- a/lib/backup.dart +++ b/lib/backup.dart @@ -95,6 +95,16 @@ class Backup { } var noteMap = jsonDecode(decodeZipContent(noteFile)); Note note = Note.fromJson(noteMap, noteMap['id']); + note.id = Uuid().v4(); + + for (Section section in note.sections) { + section.id = Uuid().v4(); + } + + for (AudioFile f in note.audioFiles) { + f.id = Uuid().v4(); + } + notes.add(note); } @@ -125,18 +135,35 @@ class Backup { final audioFilesFile = archive.files .firstWhere((a) => a.name == AUDIOFILES_FILENAME, orElse: () => null); + Map renameMap = {}; + if (audioFilesFile == null) { print("cannot find audiofiles json"); } else { print("restoring audio files"); Map audioFilesMap = jsonDecode(decodeZipContent(audioFilesFile)); + final filesDir = await getFilesDir(); + audioFilesMap.forEach((internalName, path) { final file = archive.files .firstWhere((a) => a.name == internalName, orElse: () => null); - if (File(path).existsSync() || file == null) { + if (file == null) { print( - "Error: cannot find audio file / already exists $internalName that maps to $path"); + "Error: cannot find audio file in archive $internalName that maps to $path"); + } else if (File(path).existsSync() && !renameMap.containsKey(path)) { + final data = file.content as List; + + final ext = p.extension(path); + final newPath = p.join(filesDir.path, Uuid().v4() + ext); + + print("write file to new path $newPath because it already exists"); + + File(newPath) + ..createSync(recursive: true) + ..writeAsBytesSync(data); + + renameMap[path] = newPath; } else { try { print( @@ -151,6 +178,14 @@ class Backup { } } }); + + for (Note note in notes) { + for (AudioFile f in note.audioFiles) { + if (renameMap.containsKey(f.path)) { + f.path = renameMap[f.path]; + } + } + } } } catch (e) { print("unknwon error occurred $e"); From 2804333b7aef169cf23c43560cbcfa71e5bf4ad4 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 19 Sep 2021 19:29:24 +0200 Subject: [PATCH 093/146] Fix seeking to start when looper is changed --- lib/looper.dart | 6 +++--- lib/recorder_store.dart | 2 ++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/looper.dart b/lib/looper.dart index d1f1406..b53d462 100644 --- a/lib/looper.dart +++ b/lib/looper.dart @@ -44,9 +44,9 @@ class _LooperState extends State with StoreWatcherMixin { _changeRangeValues(RangeValues values) { print("CHANGE....."); - AudioFile newFile = store.currentAudioFile; - newFile.loopRange = values; - changeAudioFile(newFile); + //AudioFile newFile = store.currentAudioFile; + //newFile.loopRange = values; + //changeAudioFile(newFile); setLoopRange(values); diff --git a/lib/recorder_store.dart b/lib/recorder_store.dart index bed0fc4..7fcf722 100644 --- a/lib/recorder_store.dart +++ b/lib/recorder_store.dart @@ -339,10 +339,12 @@ class RecorderBottomSheetStore extends Store { }); setLoopRange.listen((range) async { + print("SetLoopRange $range $loopRange $_state"); if (range != null && (loopRange == null || (loopRange != null && range.start != loopRange.start))) { if (_state == RecorderState.PLAYING) { + print("seeking to start of range"); var start = Duration(milliseconds: (range.start * 1000).floor()); await _player.seek(start); } From e3d34bc66189bd96f0f1595d56283c1bdae0e5e0 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 19 Sep 2021 19:49:58 +0200 Subject: [PATCH 094/146] Update collection ids --- lib/backup.dart | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/backup.dart b/lib/backup.dart index 2223b2c..ff18eff 100644 --- a/lib/backup.dart +++ b/lib/backup.dart @@ -84,6 +84,7 @@ class Backup { } final noteIds = jsonDecode(decodeZipContent(noteListFile)); print("zip contains $noteIds"); + Map noteIdMap = {}; for (String noteId in noteIds) { var noteFile = archive.files @@ -102,7 +103,8 @@ class Backup { } for (AudioFile f in note.audioFiles) { - f.id = Uuid().v4(); + noteIdMap[f.id] = Uuid().v4(); + f.id = noteIdMap[f.id]; } notes.add(note); @@ -132,6 +134,16 @@ class Backup { } } + for (NoteCollection c in collections) { + // update id + c.id = Uuid().v4(); + for (Note note in c.notes) { + if (noteIdMap.containsKey(note.id)) { + note.id = noteIdMap[note.id]; + } + } + } + final audioFilesFile = archive.files .firstWhere((a) => a.name == AUDIOFILES_FILENAME, orElse: () => null); From 4da02ddb62aa30d18edf0cc3d14c7c6f83af4638 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 19 Sep 2021 21:17:55 +0200 Subject: [PATCH 095/146] Remove note from collection when removing note --- lib/home.dart | 126 ++++++++++++++++++++++++++--------------- lib/local_storage.dart | 23 +++++++- lib/storage.dart | 108 ++--------------------------------- 3 files changed, 105 insertions(+), 152 deletions(-) diff --git a/lib/home.dart b/lib/home.dart index 4c97dc9..10a34b6 100644 --- a/lib/home.dart +++ b/lib/home.dart @@ -202,22 +202,47 @@ class HomeContentState extends State } _sliverNoteSelectionAppBar() { - return SliverAppBar( - pinned: true, - flexibleSpace: _sortingView(), - expandedHeight: 80, - leading: IconButton( - icon: Icon(Icons.clear), onPressed: () => clearSelection()), - title: Text(storage.selectedNotes.length.toString()), - actions: [ - IconButton( - icon: Icon(Icons.share), - onPressed: () { - showExportDialog(context, storage.selectedNotes); - }), - IconButton( - icon: Icon(Icons.delete), - onPressed: () { + var actions = [ + IconButton( + icon: Icon(Icons.share), + onPressed: () { + showExportDialog(context, storage.selectedNotes); + }), + IconButton( + icon: Icon(Icons.delete), + onPressed: () async { + bool contains = false; + + for (Note note in storage.selectedNotes) { + if (await LocalStorage().getNumCollectionsByNoteId(note.id) > 0) + contains = true; + } + + if (contains) { + String oneOrMore = + "One or more notes are part of a set. Notes will be removed from their sets. Are you sure you want to continue?"; + + showDialog( + context: context, + builder: (context) { + return AlertDialog( + content: Text(oneOrMore), + actions: [ + TextButton( + onPressed: () { + Navigator.of(context).pop(); + }, + child: Text("No")), + ElevatedButton( + onPressed: () { + discardAllSelectedNotes(true); + Navigator.of(context).pop(); + }, + child: Text("Yes")) + ], + ); + }); + } else { showUndoSnackbar( data: null, context: context, @@ -228,42 +253,49 @@ class HomeContentState extends State message: "Moved ${storage.selectedNotes.length} Notes to Trash"); - discardAllSelectedNotes(); - - // showSnack(Scaffold.of(context), - // "Moved ${storage.selectedNotes.length} Notes to Trash"); - }), - IconButton( - icon: Icon(Icons.color_lens), - onPressed: () { - showColorPickerDialog(context, null, (c) { - colorAllSelectedNotes(c); - }); - }), - IconButton( - icon: Icon((storage.selectedNotes - .where((e) => e.starred) - .toList() - .length - .toDouble() / - storage.selectedNotes.length.toDouble()) < - 0.5 - ? Icons.star - : Icons.star_border), - onPressed: () { - if ((storage.selectedNotes + discardAllSelectedNotes(false); + } + }), + IconButton( + icon: Icon(Icons.color_lens), + onPressed: () { + showColorPickerDialog(context, null, (c) { + colorAllSelectedNotes(c); + }); + }), + IconButton( + icon: Icon((storage.selectedNotes .where((e) => e.starred) .toList() .length .toDouble() / storage.selectedNotes.length.toDouble()) < - 0.5) { - starAllSelectedNotes(); - } else { - unstarAllSelectedNotes(); - } - }), - ], + 0.5 + ? Icons.star + : Icons.star_border), + onPressed: () { + if ((storage.selectedNotes + .where((e) => e.starred) + .toList() + .length + .toDouble() / + storage.selectedNotes.length.toDouble()) < + 0.5) { + starAllSelectedNotes(); + } else { + unstarAllSelectedNotes(); + } + }) + ]; + + return SliverAppBar( + pinned: true, + flexibleSpace: _sortingView(), + expandedHeight: 80, + leading: IconButton( + icon: Icon(Icons.clear), onPressed: () => clearSelection()), + title: Text(storage.selectedNotes.length.toString()), + actions: actions, ); } diff --git a/lib/local_storage.dart b/lib/local_storage.dart index 51b230a..d839376 100644 --- a/lib/local_storage.dart +++ b/lib/local_storage.dart @@ -293,6 +293,18 @@ class LocalStorage { _collectionController.sink.add(collections); } + Future getNumCollectionsByNoteId(String noteId) async { + final List> maps = await (await getDatabase()).query( + collectionMappingTable, + where: "noteId = ?", + whereArgs: [noteId]); + + if (maps == null) + return 0; + else + return maps.length; + } + Future> getNotesByCollectionId(String collectionId) async { final List> maps = await (await getDatabase()).query( collectionMappingTable, @@ -373,9 +385,18 @@ class LocalStorage { ); } - Future discardNote(Note note) async { + Future discardNote(Note note, bool removeFromCollection) async { note.discarded = true; _updateNote(note); + + if (removeFromCollection) { + print("removing note from collections"); + + final db = await getDatabase(); + + await db.delete(collectionMappingTable, + where: "noteId = ?", whereArgs: [note.id]); + } } Future _updateNote(Note note) async { diff --git a/lib/storage.dart b/lib/storage.dart index c2d62e4..919b6c2 100644 --- a/lib/storage.dart +++ b/lib/storage.dart @@ -7,107 +7,6 @@ import 'model.dart'; import 'db.dart'; import 'package:flutter/material.dart' show Color; -List notes = [ - Note( - title: "Why am I, why am I the way I am", - createdAt: DateTime.now(), - lastModified: DateTime.now(), - key: "C Major", - tuning: "Dadgad", - label: "Song", - starred: true, - audioFiles: [ - AudioFile.create( - duration: Duration(seconds: 5), - path: "/data/sdcard/files/test_file.mp4") - ], - sections: [ - Section( - title: 'Verse 1', - content: - "The world comes crashing down\nand you are the only one\nWho helps me though the dark/past\nSo Drunk and fallen apart"), - Section( - title: "Chorus", - content: "Why am I, why am I the way I am I don't understand"), - Section( - title: "Bridge", - content: - "Lately, I dont like myself\nI cant even look myself in the eye\nSo shockingly evil and vile") - ]), - Note( - title: "Time", - createdAt: DateTime.now(), - lastModified: DateTime.now(), - key: "B Dur", - tuning: "Standard", - label: "Song", - starred: false, - audioFiles: [], - sections: [ - Section( - title: 'Verse 1', - content: - """ EM Em. D C C C -Time has gone and young love passed - G. D. C C C c -A blurry dot in the dark -Its difficult to go back to what once was -A flame sparks again -To take me back to when -"""), - Section( - title: "Chorus", content: "When we were young and full of love"), - Section(title: "Verse 2", content: """ - Em Em D C C C -Its been some time, since we talked - G G D C -when was our last walk? -Em G D D -oh what makes us happy and what not? -Em D G -please ask me again - em G D D -or take me back to when - """), - Section(title: "Bridge", content: """Em Em D/F# D/F# C D D D D -Em Em D/F# D/F# C D D D D -Em C Em G -G G""") - ]), - Note( - title: "Sleep", - createdAt: DateTime.now(), - lastModified: DateTime.now(), - key: "C Dur", - capo: "7", - tuning: "Standard", - label: "Song", - starred: false, - audioFiles: [], - sections: [ - Section( - title: 'Verse 1', - content: - """ G G D/B D/B C D G G G -I'm 25 and I don't know what I want in live -My girlfriend and I we're moving along the lines -We're havin jobs that pay nice, they make us feel alright -But if I am honstest, is this leading to a better life?"""), - Section( - title: "Chorus", - content: """I think that I just want to sleep alright -And wake up without a gun to my mind -Mmmmmhh"""), - Section( - title: "Verse 2", - content: """times' changing, its better to live alone -without someone looking under every stone -the next thing you remember is having children on your own -rolling around and looking under every stone"""), - Section(title: "Bridge", content: """""") - ]), -]; - enum FilterBy { LABEL, TUNING, KEY, CAPO } class Filter { @@ -247,10 +146,11 @@ class StaticStorage extends Store { trigger(); }); - discardAllSelectedNotes.listen((_) { + discardAllSelectedNotes.listen((removeFromCollections) { for (Note note in _selectedNotes) { - LocalStorage().discardNote(note); + LocalStorage().discardNote(note, removeFromCollections); } + _prevDiscardedNoteIds = _selectedNotes.map((e) => e.id).toList(); _selectedNotes.clear(); trigger(); @@ -453,7 +353,7 @@ Action openSettings = Action(); Action triggerSelectNote = Action(); Action removeAllSelectedNotes = Action(); -Action discardAllSelectedNotes = Action(); +Action discardAllSelectedNotes = Action(); Action undoDiscardAllSelectedNotes = Action(); Action starAllSelectedNotes = Action(); Action unstarAllSelectedNotes = Action(); From 4e2badc8c5f78f4409a9c6ae0c23e5b3eca3dbb8 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 19 Sep 2021 21:18:05 +0200 Subject: [PATCH 096/146] Add permissions to production app --- android/app/src/main/AndroidManifest.xml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 7bb626a..51514a7 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -5,10 +5,25 @@ In most cases you can leave this as-is, but you if you want to provide additional functionality it is fine to subclass or reimplement FlutterApplication and put your custom class here. --> + + + + + + + + + Date: Sun, 19 Sep 2021 23:14:11 +0200 Subject: [PATCH 097/146] Allow changing fontSize of sectionContent --- lib/dialogs/change_number_dialog.dart | 52 +++++++++++++++++++++++++++ lib/dialogs/export_dialog.dart | 7 +++- lib/editor_views/section.dart | 32 ++++++++++++----- lib/model.dart | 12 +++++-- lib/note_editor.dart | 11 +++--- lib/settings.dart | 20 +++++++++++ lib/settings_store.dart | 16 +++++---- 7 files changed, 126 insertions(+), 24 deletions(-) create mode 100644 lib/dialogs/change_number_dialog.dart diff --git a/lib/dialogs/change_number_dialog.dart b/lib/dialogs/change_number_dialog.dart new file mode 100644 index 0000000..df34ddb --- /dev/null +++ b/lib/dialogs/change_number_dialog.dart @@ -0,0 +1,52 @@ +import 'package:flutter/material.dart'; + +showChangeNumberDialog(BuildContext context, String title, double _value, + ValueChanged onChange, + {double step = 1.0, bool asInt = true}) { + showDialog( + context: context, + builder: (context) { + double value = _value; + return StatefulBuilder(builder: (context, setState) { + return AlertDialog( + title: Text(title), + content: Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + IconButton( + icon: Icon(Icons.remove), + onPressed: () { + setState(() { + value = value - step; + }); + }), + Text(asInt ? value.toInt().toString() : value.toString(), + style: Theme.of(context) + .textTheme + .caption + .copyWith(fontSize: 20)), + IconButton( + icon: Icon(Icons.add), + onPressed: () { + setState(() { + value = value + step; + }); + }) + ]), + actions: [ + TextButton( + onPressed: () { + Navigator.of(context).pop(); + }, + child: Text("Cancel")), + new ElevatedButton( + child: new Text("Apply"), + onPressed: () { + onChange(value); + Navigator.of(context).pop(); + }, + ), + ]); + }); + }); +} diff --git a/lib/dialogs/export_dialog.dart b/lib/dialogs/export_dialog.dart index c594666..e7868e2 100644 --- a/lib/dialogs/export_dialog.dart +++ b/lib/dialogs/export_dialog.dart @@ -1,3 +1,4 @@ +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_share/flutter_share.dart'; import 'package:sound/backup.dart'; @@ -24,6 +25,10 @@ showExportDialog(BuildContext context, List notes, Navigator.of(context).pop(); } + var options = (kReleaseMode) + ? [ExportType.ZIP, ExportType.PDF, ExportType.TEXT] + : [ExportType.ZIP, ExportType.PDF, ExportType.TEXT, ExportType.JSON]; + return StatefulBuilder(builder: (context, setState) { return AlertDialog( title: new Text("Export Options"), @@ -34,7 +39,7 @@ showExportDialog(BuildContext context, List notes, ), DropdownButton( value: current, - items: [ExportType.ZIP, ExportType.PDF, ExportType.TEXT] + items: options .map((e) => DropdownMenuItem( child: Text(getExtension(e)), value: e)) .toList(), diff --git a/lib/editor_views/section.dart b/lib/editor_views/section.dart index 56a9a46..06d8211 100644 --- a/lib/editor_views/section.dart +++ b/lib/editor_views/section.dart @@ -96,9 +96,15 @@ class SectionListItem extends StatelessWidget { final Section section; final bool moveDown, moveUp; final GlobalKey globalKey; + final double contentFontSize; const SectionListItem( - {this.section, this.moveUp, this.moveDown, this.globalKey, Key key}) + {this.section, + this.moveUp, + this.moveDown, + this.globalKey, + this.contentFontSize = 10, + Key key}) : super(key: key); @override @@ -136,7 +142,13 @@ class SectionListItem extends StatelessWidget { padding: EdgeInsets.only(bottom: 10), child: Editable( initialValue: section.title, - textStyle: Theme.of(context).textTheme.subtitle1, + textStyle: GoogleFonts.robotoMono( + textStyle: Theme.of(context) + .textTheme + .subtitle1 + .copyWith( + fontFeatures: [FontFeature.enable('smcp')], + )), onChange: (s) => changeSectionTitle(Tuple2(section, s)), hintText: 'Section Title', @@ -144,12 +156,16 @@ class SectionListItem extends StatelessWidget { Wrap(children: [ Editable( initialValue: section.content, - textStyle: Theme.of(context) - .textTheme - .subtitle2 - .copyWith( - fontSize: 13, - fontWeight: FontWeight.normal), + textStyle: GoogleFonts.robotoMono( + textStyle: Theme.of(context) + .textTheme + .subtitle2 + .copyWith( + fontSize: contentFontSize, + fontFeatures: [ + FontFeature.tabularFigures() + ], + fontWeight: FontWeight.normal)), onChange: (s) => changeContent(Tuple2(section, s)), hintText: 'Content', multiline: true) diff --git a/lib/model.dart b/lib/model.dart index a78b8e0..35c0c05 100644 --- a/lib/model.dart +++ b/lib/model.dart @@ -390,6 +390,7 @@ class Settings { bool isInitialStart; SortBy sortBy; SortDirection sortDirection; + double sectionContentFontSize; Settings( {this.theme, @@ -399,7 +400,8 @@ class Settings { this.isInitialStart, this.sortBy, this.sortDirection, - this.editorView}); + this.editorView, + this.sectionContentFontSize}); Map toJson() { return { @@ -410,7 +412,8 @@ class Settings { "sortDirection": serializeSortDirection(sortDirection), "name": name, "isInitialStart": isInitialStart, - "noteListType": serializeNoteListType(noteListType) + "noteListType": serializeNoteListType(noteListType), + "sectionContentFontSize": sectionContentFontSize }; } @@ -422,6 +425,7 @@ class Settings { sortBy: SortBy.created, sortDirection: SortDirection.down, name: null, + sectionContentFontSize: 10, noteListType: NoteListType.double, editorView: EditorView.tabs); } @@ -446,6 +450,10 @@ class Settings { ? SortDirection.up : SortDirection.down : SortDirection.up, + sectionContentFontSize: json.containsKey("sectionContentFontSize") && + json['sectionContentFontSize'] != null + ? json['sectionContentFontSize'] + : 10, sortBy: json.containsKey('sortBy') ? deserializeSortBy(json['sortBy']) : SortBy.lastModified); diff --git a/lib/note_editor.dart b/lib/note_editor.dart index 80000a2..f59a040 100644 --- a/lib/note_editor.dart +++ b/lib/note_editor.dart @@ -45,15 +45,12 @@ class NoteEditor extends StatelessWidget { @override Widget build(BuildContext context) { - if (view != null) return NoteEditorContent(note, view); - return FutureBuilder( builder: (BuildContext context, AsyncSnapshot snap) { print("snap data: ${snap}, ${snap.hasData}"); if (snap.hasData) { - EditorView v = - (snap.data == null) ? EditorView.tabs : snap.data.editorView; - return NoteEditorContent(note, v); + EditorView v = (view == null) ? view : snap.data.editorView; + return NoteEditorContent(note, v, snap.data.sectionContentFontSize); } else { return CircularProgressIndicator(); } @@ -65,8 +62,9 @@ class NoteEditor extends StatelessWidget { class NoteEditorContent extends StatefulWidget { final Note note; final EditorView view; + final double sectionContentFontSize; - NoteEditorContent(this.note, this.view); + NoteEditorContent(this.note, this.view, this.sectionContentFontSize); @override State createState() { @@ -358,6 +356,7 @@ class NoteEditorState extends State items[TabType.structure].add(SectionListItem( globalKey: dismissables[store.note.sections[i]], section: store.note.sections[i], + contentFontSize: widget.sectionContentFontSize, moveDown: showMoveDown, moveUp: showMoveUp)); } diff --git a/lib/settings.dart b/lib/settings.dart index 8f4bf54..285bc03 100644 --- a/lib/settings.dart +++ b/lib/settings.dart @@ -1,6 +1,7 @@ import 'package:flutter_audio_recorder/flutter_audio_recorder.dart'; import 'package:flutter_flux/flutter_flux.dart'; import 'package:flutter/material.dart'; +import 'package:sound/dialogs/change_number_dialog.dart'; import 'package:sound/dialogs/initial_import_dialog.dart'; import 'package:sound/local_storage.dart'; import 'package:sound/model.dart'; @@ -90,6 +91,24 @@ class SettingsState extends State with StoreWatcherMixin { )); } + _changeContentSectionTextSize() { + return _wrapItem(Row( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + Expanded(child: Text("Section Font Size: ")), + ElevatedButton( + child: Text(store.settings.sectionContentFontSize.toString()), + onPressed: () { + showChangeNumberDialog( + context, "", store.settings.sectionContentFontSize, (value) { + changeSectionContentFontSize(value); + }); + }), + ], + )); + } + _editorViewAsString() { if (store.editorView == EditorView.onePage) { return "One Page"; @@ -224,6 +243,7 @@ class SettingsState extends State with StoreWatcherMixin { _themeItem(), _audioFormatItem(), _editorViewItem(), + _changeContentSectionTextSize(), SizedBox(height: 10), ElevatedButton(child: Text("Backup"), onPressed: _onBackup), SizedBox(height: 10), diff --git a/lib/settings_store.dart b/lib/settings_store.dart index 90e35e1..19f1fec 100644 --- a/lib/settings_store.dart +++ b/lib/settings_store.dart @@ -8,12 +8,7 @@ import 'package:sound/recorder_store.dart'; class SettingsStore extends Store { // default values - Settings _settings = Settings( - audioFormat: AudioFormat.WAV, - theme: SettingsTheme.dark, - name: null, - noteListType: NoteListType.double, - editorView: EditorView.tabs); + Settings _settings = Settings.defaults(); // getter SettingsTheme get theme => _settings.theme; @@ -77,10 +72,16 @@ class SettingsStore extends Store { updateSettings.listen((s) { if (s != null) { _settings = s; - print("settings audio format"); + print("Update Settings in store"); trigger(); } }); + + changeSectionContentFontSize.listen((value) async { + _settings.sectionContentFontSize = value; + await LocalStorage().syncSettings(_settings); + trigger(); + }); } } @@ -90,6 +91,7 @@ Action setName = Action(); Action setDefaultNoteListType = Action(); Action setDefaultEditorView = Action(); Action setDefaultAudioFormat = Action(); +Action changeSectionContentFontSize = Action(); Action updateSettings = Action(); Action setDefaultSortDirection = Action(); Action setDefaultSortBy = Action(); From 5494509624425e47ca58b62fa3261cae2b57eba6 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 19 Sep 2021 23:50:34 +0200 Subject: [PATCH 098/146] Fix default NoteEditorView - don't show discarded notes in NoteViewerCollection --- lib/note_editor.dart | 2 +- lib/note_viewer.dart | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/note_editor.dart b/lib/note_editor.dart index f59a040..bd899ee 100644 --- a/lib/note_editor.dart +++ b/lib/note_editor.dart @@ -49,7 +49,7 @@ class NoteEditor extends StatelessWidget { builder: (BuildContext context, AsyncSnapshot snap) { print("snap data: ${snap}, ${snap.hasData}"); if (snap.hasData) { - EditorView v = (view == null) ? view : snap.data.editorView; + EditorView v = (view != null) ? view : snap.data.editorView; return NoteEditorContent(note, v, snap.data.sectionContentFontSize); } else { return CircularProgressIndicator(); diff --git a/lib/note_viewer.dart b/lib/note_viewer.dart index f2df0ff..7fc81ec 100644 --- a/lib/note_viewer.dart +++ b/lib/note_viewer.dart @@ -16,7 +16,8 @@ class NoteCollectionViewer extends StatelessWidget { @override Widget build(BuildContext context) { - return NotesViewer(collection.notes, + return NotesViewer( + collection.notes.where((note) => !note.discarded).toList(), showAdditionalInformation: false, showTitle: true, showZoomPlayback: true, From 0836d5ec5f2c642a131534a437480dcda2440197 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 19 Sep 2021 23:50:53 +0200 Subject: [PATCH 099/146] Add signing config and updated targetSdk to 30 --- android/app/build.gradle | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 85075cf..1244b80 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -6,6 +6,12 @@ if (localPropertiesFile.exists()) { } } +def keystoreProperties = new Properties() +def keystorePropertiesFile = rootProject.file('key.properties') +if (keystorePropertiesFile.exists()) { + keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) +} + def flutterRoot = localProperties.getProperty('flutter.sdk') if (flutterRoot == null) { throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") @@ -40,7 +46,7 @@ android { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId "de.onenightproductions.sketchord" minSdkVersion 19 - targetSdkVersion 27 + targetSdkVersion 30 versionCode flutterVersionCode.toInteger() versionName flutterVersionName } @@ -62,11 +68,20 @@ android { } } + signingConfigs { + release { + keyAlias keystoreProperties['keyAlias'] + keyPassword keystoreProperties['keyPassword'] + storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null + storePassword keystoreProperties['storePassword'] + } + } + buildTypes { release { // TODO: Add your own signing config for the release build. // Signing with the debug keys for now, so `flutter run --release` works. - signingConfig signingConfigs.debug + signingConfig signingConfigs.release } } } From 64595cf57911b3d90000300fb391ae6cdeb343fa Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 26 Sep 2021 14:35:55 +0200 Subject: [PATCH 100/146] Min/Max for Font Size with long press --- lib/dialogs/change_number_dialog.dart | 77 +++++++++++++++++++++------ lib/settings.dart | 2 +- 2 files changed, 63 insertions(+), 16 deletions(-) diff --git a/lib/dialogs/change_number_dialog.dart b/lib/dialogs/change_number_dialog.dart index df34ddb..0c09820 100644 --- a/lib/dialogs/change_number_dialog.dart +++ b/lib/dialogs/change_number_dialog.dart @@ -2,36 +2,83 @@ import 'package:flutter/material.dart'; showChangeNumberDialog(BuildContext context, String title, double _value, ValueChanged onChange, - {double step = 1.0, bool asInt = true}) { + {double step = 1.0, + bool asInt = true, + double max, + double min, + double longPressStep = 2}) { showDialog( context: context, builder: (context) { double value = _value; + bool isLongPressed = false; + return StatefulBuilder(builder: (context, setState) { return AlertDialog( title: Text(title), content: Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ - IconButton( - icon: Icon(Icons.remove), - onPressed: () { - setState(() { - value = value - step; - }); - }), + GestureDetector( + onLongPressEnd: (_) => + setState(() => isLongPressed = false), + onLongPressStart: (_) async { + isLongPressed = true; + do { + if (longPressStep != null) { + setState(() { + value = (min == null || + (value - longPressStep) >= min) + ? (value - longPressStep) + : min; + }); + } + await Future.delayed(Duration(seconds: 1)); + } while (isLongPressed); + }, + child: IconButton( + icon: Icon(Icons.remove), + onPressed: () { + setState(() { + value = ((min == null) || (value - step) >= min) + ? (value - step) + : min; + }); + }), + ), Text(asInt ? value.toInt().toString() : value.toString(), style: Theme.of(context) .textTheme .caption .copyWith(fontSize: 20)), - IconButton( - icon: Icon(Icons.add), - onPressed: () { - setState(() { - value = value + step; - }); - }) + GestureDetector( + onLongPressStart: (_) async { + isLongPressed = true; + do { + if (longPressStep != null) { + setState(() { + value = (max == null || + (value + longPressStep) <= max) + ? (value + longPressStep) + : max; + }); + } + await Future.delayed(Duration(seconds: 1)); + } while (isLongPressed); + }, + onLongPressEnd: (_) => + setState(() => isLongPressed = false), + onLongPress: () {}, + child: IconButton( + icon: Icon(Icons.add), + onPressed: () { + setState(() { + value = (max == null || (value + step) <= max) + ? (value + step) + : max; + }); + }), + ) ]), actions: [ TextButton( diff --git a/lib/settings.dart b/lib/settings.dart index 285bc03..e15c458 100644 --- a/lib/settings.dart +++ b/lib/settings.dart @@ -103,7 +103,7 @@ class SettingsState extends State with StoreWatcherMixin { showChangeNumberDialog( context, "", store.settings.sectionContentFontSize, (value) { changeSectionContentFontSize(value); - }); + }, min: 5, max: 15); }), ], )); From 60d1d3fad5447772582c79444a676dc6db626258 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 26 Sep 2021 14:36:15 +0200 Subject: [PATCH 101/146] Does we have anyNote? --- lib/local_storage.dart | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/lib/local_storage.dart b/lib/local_storage.dart index d839376..a2eecaa 100644 --- a/lib/local_storage.dart +++ b/lib/local_storage.dart @@ -69,6 +69,16 @@ class LocalStorage { return f.delete(); } + Future anyNote() async { + final List> maps = + await (await getDatabase()).query(noteTable, limit: 1); + + if (maps == null || (maps.length == 0)) + return false; + else + return true; + } + Future getDatabase() async { return openDatabase( // Set the path to the database. Note: Using the `join` function from the From b98d0a4098a581dbf18fd411fe184655a4c3294a Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 26 Sep 2021 14:36:49 +0200 Subject: [PATCH 102/146] Add length to Note --- lib/model.dart | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/model.dart b/lib/model.dart index 35c0c05..a3af56c 100644 --- a/lib/model.dart +++ b/lib/model.dart @@ -193,7 +193,9 @@ class Note { DateTime createdAt, lastModified; bool discarded; Color color; - int bpm; + + int bpm; // beats per minute + int length; // length in seconds double scrollOffset; double zoom; // text scaling factor @@ -220,6 +222,7 @@ class Note { bpm: null, zoom: 1.0, scrollOffset: 1.0, + length: null, // seconds audioFiles: []); } @@ -239,6 +242,7 @@ class Note { "scrollOffset": scrollOffset, "zoom": zoom, "bpm": bpm, + "length": length, "color": color == null ? null : serializeColor(color), "sections": sections.map>((s) => s.toJson()).toList(), @@ -259,7 +263,7 @@ class Note { lastModified: json.containsKey("lastModified") ? deserializeDateTime(json['lastModified']) : DateTime.now(), - + length: json.containsKey('length') ? json['length'] : null, // additional info key: json.containsKey("key") ? json['key'] : null, tuning: json.containsKey("tuning") ? json['tuning'] : null, @@ -319,6 +323,7 @@ class Note { this.artist, this.color, this.bpm, + this.length, this.zoom = 1.0, this.scrollOffset = 1.0, this.starred = false, From fd85da0d63ce99d74d271dda8517b3bf8e833f11 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 26 Sep 2021 16:07:59 +0200 Subject: [PATCH 103/146] Adding bpm and length of note --- lib/dialogs/change_number_dialog.dart | 12 ++++- lib/editor_store.dart | 16 ++++++ lib/editor_views/additional_info.dart | 71 +++++++++++++++++++++++++++ lib/local_storage.dart | 18 +++++-- lib/model.dart | 21 ++++++-- lib/utils.dart | 17 +++++++ 6 files changed, 146 insertions(+), 9 deletions(-) diff --git a/lib/dialogs/change_number_dialog.dart b/lib/dialogs/change_number_dialog.dart index 0c09820..3b853a8 100644 --- a/lib/dialogs/change_number_dialog.dart +++ b/lib/dialogs/change_number_dialog.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:sound/utils.dart'; showChangeNumberDialog(BuildContext context, String title, double _value, ValueChanged onChange, @@ -6,6 +7,7 @@ showChangeNumberDialog(BuildContext context, String title, double _value, bool asInt = true, double max, double min, + bool isTime = false, double longPressStep = 2}) { showDialog( context: context, @@ -13,6 +15,14 @@ showChangeNumberDialog(BuildContext context, String title, double _value, double value = _value; bool isLongPressed = false; + String getValue() { + if (isTime) { + return toTime(value.toInt()); + } else { + return asInt ? value.toInt().toString() : value.toString(); + } + } + return StatefulBuilder(builder: (context, setState) { return AlertDialog( title: Text(title), @@ -46,7 +56,7 @@ showChangeNumberDialog(BuildContext context, String title, double _value, }); }), ), - Text(asInt ? value.toInt().toString() : value.toString(), + Text(getValue(), style: Theme.of(context) .textTheme .caption diff --git a/lib/editor_store.dart b/lib/editor_store.dart index 6ca9c4a..9f7eab8 100644 --- a/lib/editor_store.dart +++ b/lib/editor_store.dart @@ -189,6 +189,20 @@ class NoteEditorStore extends Store { await LocalStorage().syncNoteAttr(_note, 'audioFiles'); trigger(); }); + + changeBPM.listen((int event) async { + _note.bpm = event; + print("setting bpm to $event"); + await LocalStorage().syncNoteAttr(_note, 'bpm'); + trigger(); + }); + + changeLength.listen((int event) async { + _note.length = event; + print("setting legnth to $event"); + await LocalStorage().syncNoteAttr(_note, 'length'); + trigger(); + }); } } @@ -207,6 +221,8 @@ Action changeTuning = Action(); Action changeKey = Action(); Action changeLabel = Action(); Action changeArtist = Action(); +Action changeBPM = Action(); +Action changeLength = Action(); Action changeInstrument = Action(); Action changeAudioFile = Action(); Action> changeContent = Action(); diff --git a/lib/editor_views/additional_info.dart b/lib/editor_views/additional_info.dart index 7264740..eda3cb2 100644 --- a/lib/editor_views/additional_info.dart +++ b/lib/editor_views/additional_info.dart @@ -1,4 +1,6 @@ import 'package:flutter/material.dart'; +import 'package:sound/dialogs/change_number_dialog.dart'; +import 'package:sound/editor_store.dart'; import 'package:sound/model.dart'; import 'package:sound/utils.dart'; import 'package:tuple/tuple.dart'; @@ -126,6 +128,8 @@ class _NoteEditorAdditionalInfoState extends State { Map focusNodes = {}; Map controllers = {}; + TextEditingController bpmController, lengthController; + @override void didUpdateWidget(NoteEditorAdditionalInfo oldWidget) { super.didUpdateWidget(oldWidget); @@ -145,6 +149,13 @@ class _NoteEditorAdditionalInfoState extends State { TextSelection.fromPosition(TextPosition(offset: data.length)); } }); + + if (widget.note.bpm != null) { + bpmController.text = widget.note.bpm.toString(); + } + if (widget.note.length != null) { + lengthController.text = widget.note.lengthStr; + } } @override @@ -165,6 +176,10 @@ class _NoteEditorAdditionalInfoState extends State { String text = getAddtionalInfoItemFromNote(widget.note, item); controllers[item] = TextEditingController(text: text == null ? "" : text); }); + + bpmController = TextEditingController( + text: widget.note.bpm == null ? null : widget.note.bpm.toString()); + lengthController = TextEditingController(text: widget.note.lengthStr); } _edit({initial, title, hint, item}) { @@ -248,7 +263,63 @@ class _NoteEditorAdditionalInfoState extends State { @override Widget build(BuildContext context) { var edits = widget.items.map((item) => getEdit(item)).toList(); + + // add bpm and length + // default length: 3 minutes + print(widget.note.bpm); + + // show + var bpmField = GestureDetector( + onTap: () { + if (widget.allowEdit) { + FocusScope.of(context).unfocus(); + + showChangeNumberDialog( + context, + "BPM", + widget.note.bpm == null + ? Note.defaultBPM.toDouble() + : widget.note.bpm.toDouble(), (value) { + print("setting bpm to $value"); + changeBPM(value.toInt()); + }, min: 0, max: 300, longPressStep: 5); + } + }, + child: TextFormField( + enabled: false, + controller: bpmController, + //focusNode: widget.focus, + decoration: + InputDecoration(labelText: "BPM", border: InputBorder.none), + )); + + var lengthField = GestureDetector( + onTap: () { + if (widget.allowEdit) { + FocusScope.of(context).unfocus(); + + showChangeNumberDialog( + context, + "Length", + widget.note.length == null + ? Note.defaultLength.toDouble() + : widget.note.length.toDouble(), (value) { + print("setting length to $value"); + changeLength(value.toInt()); + }, min: 0, max: 300, isTime: true, longPressStep: 10); + } + }, + child: TextFormField( + enabled: false, + controller: lengthController, + //focusNode: widget.focus, + decoration: + InputDecoration(labelText: "Length", border: InputBorder.none), + )); + var extra = [ + lengthField, + bpmField, _extra(text: dateToString(widget.note.createdAt), title: "Created At"), _extra( text: dateToString(widget.note.lastModified), diff --git a/lib/local_storage.dart b/lib/local_storage.dart index a2eecaa..448e2af 100644 --- a/lib/local_storage.dart +++ b/lib/local_storage.dart @@ -36,10 +36,18 @@ final migrations = { ] }, 3: { - 2: { - "ALTER TABLE $sectionTable DROP COLUMN createdAt TEXT", - "ALTER TABLE $sectionTable DROP COLUMN lastModified TEXT", - } + 2: [ + "ALTER TABLE $sectionTable DROP COLUMN createdAt", + "ALTER TABLE $sectionTable DROP COLUMN lastModified", + ], + 4: [ + "ALTER TABLE $noteTable ADD length REAL", + ] + }, + 4: { + 3: [ + "ALTER TABLE $noteTable DROP COLUMN length", + ] } }; @@ -109,7 +117,7 @@ class LocalStorage { }, // Set the version. This executes the onCreate function and provides a // path to perform database upgrades and downgrades. - version: 3); + version: 4); } Future createDatabase(Database db) async { diff --git a/lib/model.dart b/lib/model.dart index a3af56c..b132024 100644 --- a/lib/model.dart +++ b/lib/model.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_audio_recorder/flutter_audio_recorder.dart'; import 'package:sound/note_views/appbar.dart'; +import 'package:sound/utils.dart'; import 'package:uuid/uuid.dart'; import 'dart:io'; @@ -179,6 +180,9 @@ Color deserializeColor(dynamic data) { } class Note { + static int defaultBPM = 80; + static int defaultLength = 3 * 60; + List
sections; String id; List audioFiles; @@ -200,6 +204,13 @@ class Note { double scrollOffset; double zoom; // text scaling factor + String get lengthStr { + if (this.length == null) + return ""; + else + return toTime(length); + } + bool get hasEmptyTitle { return this.title == null || this.title.trim() == ""; } @@ -219,10 +230,10 @@ class Note { starred: false, sections: [Section(content: "", title: "")], color: null, + length: null, // seconds bpm: null, zoom: 1.0, scrollOffset: 1.0, - length: null, // seconds audioFiles: []); } @@ -263,14 +274,18 @@ class Note { lastModified: json.containsKey("lastModified") ? deserializeDateTime(json['lastModified']) : DateTime.now(), - length: json.containsKey('length') ? json['length'] : null, + length: (!json.containsKey('length') || json['length'] == null) + ? null + : json['length'].toInt(), // additional info key: json.containsKey("key") ? json['key'] : null, tuning: json.containsKey("tuning") ? json['tuning'] : null, capo: json.containsKey("capo") ? json['capo'] : null, instrument: json.containsKey("instrument") ? json['instrument'] : null, label: json.containsKey("label") ? json['label'] : null, - bpm: json.containsKey("bpm") ? json['bpm'] : null, + bpm: (!json.containsKey("bpm") || json['bpm'] == null) + ? null + : json['bpm'].toInt(), starred: json.containsKey("starred") ? json['starred'] == 1 : false, color: json.containsKey("color") ? deserializeColor(json['color']) : null, diff --git a/lib/utils.dart b/lib/utils.dart index a94be40..a9889f8 100644 --- a/lib/utils.dart +++ b/lib/utils.dart @@ -6,6 +6,23 @@ String getFormattedDate(DateTime date) { return date.toString().substring(0, _date.length - 7).replaceAll(":", "-"); } +String _formatDateInt(int v) { + if (v > 9) { + return v.toString(); + } else { + return "0$v"; + } +} + +String toTime(int length) { + if (length == null) return ""; + + int m = length ~/ 60; + int s = length % 60; + + return "${_formatDateInt(m)}:${_formatDateInt(s)}"; +} + String dateToString(DateTime date) { String _date = DateTime.now().toString(); return date.toString().substring(0, _date.length - 7); From 3141e81b357c732317fb485dcba5586e37b70adf Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 26 Sep 2021 16:08:43 +0200 Subject: [PATCH 104/146] Adding proguard and obfuscation --- README.md | 7 ++++++- android/app/build.gradle | 5 +++++ android/app/proguard-rules.pro | 10 ++++++++++ android/gradle.properties | 1 + 4 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 android/app/proguard-rules.pro diff --git a/README.md b/README.md index caf3b8c..ffe8e77 100644 --- a/README.md +++ b/README.md @@ -4,4 +4,9 @@ flutter run --flavor prod flutter run --flavor dev # flutter run --flavor dev -d chrome --web-renderer html -# flutter packages pub run flutter_launcher_icons:main -f pubspec.yaml \ No newline at end of file +# flutter packages pub run flutter_launcher_icons:main -f pubspec.yaml + + +# Create Release +1. Change Version +2. Build bundle `flutter build appbundle` \ No newline at end of file diff --git a/android/app/build.gradle b/android/app/build.gradle index 1244b80..e4c35ac 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -82,6 +82,11 @@ android { // TODO: Add your own signing config for the release build. // Signing with the debug keys for now, so `flutter run --release` works. signingConfig signingConfigs.release + + minifyEnabled true + shrinkResources true + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } } } diff --git a/android/app/proguard-rules.pro b/android/app/proguard-rules.pro new file mode 100644 index 0000000..7f16557 --- /dev/null +++ b/android/app/proguard-rules.pro @@ -0,0 +1,10 @@ +## Flutter wrapper +-keep class io.flutter.app.** { *; } +-keep class io.flutter.plugin.** { *; } +-keep class io.flutter.util.** { *; } +-keep class io.flutter.view.** { *; } +-keep class io.flutter.** { *; } +-keep class io.flutter.plugins.** { *; } +# -keep class com.google.firebase.** { *; } // uncomment this if you are using firebase in the project +-dontwarn io.flutter.embedding.** +-ignorewarnings \ No newline at end of file diff --git a/android/gradle.properties b/android/gradle.properties index 38c8d45..443ee21 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -2,3 +2,4 @@ org.gradle.jvmargs=-Xmx1536M android.enableR8=true android.useAndroidX=true android.enableJetifier=true +extra-gen-snapshot-options=--obfuscate \ No newline at end of file From ba441e230d454c5e709939c9049c969caeebde0a Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 26 Sep 2021 16:27:54 +0200 Subject: [PATCH 105/146] Show length of a collection --- lib/collections.dart | 5 +++++ lib/model.dart | 16 ++++++++++++++++ lib/note_item.dart | 2 +- lib/utils.dart | 12 +++++++++--- 4 files changed, 31 insertions(+), 4 deletions(-) diff --git a/lib/collections.dart b/lib/collections.dart index 5a2fe5d..a8f8fbd 100644 --- a/lib/collections.dart +++ b/lib/collections.dart @@ -301,6 +301,11 @@ class _CollectionEditorState extends State hint: "Description...", onChanged: changeCollectionDescription, maxlines: 1), + (store.collection.lengthStr == "") + ? Container() + : Padding( + padding: EdgeInsets.only(top: 8), + child: Text("Length: " + store.collection.lengthStr)), Padding( padding: EdgeInsets.only(top: 16, bottom: 8), child: Row(children: [ diff --git a/lib/model.dart b/lib/model.dart index b132024..e72d0b1 100644 --- a/lib/model.dart +++ b/lib/model.dart @@ -488,6 +488,22 @@ class NoteCollection { DateTime lastModified, createdAt; + String get lengthStr { + int length = this.length; + if (length == 0) + return ""; + else + return toTime(length, includeHour: true); + } + + int get length { + if (this.notes.length == 0) return 0; + return this + .notes + .map((e) => e.length == null ? 0 : e.length) + .reduce((value, element) => value + element); + } + NoteCollection( {this.id, this.notes, diff --git a/lib/note_item.dart b/lib/note_item.dart index 68e3eef..4db62b9 100644 --- a/lib/note_item.dart +++ b/lib/note_item.dart @@ -219,7 +219,7 @@ class NoteItem extends AbstractNoteItem { child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Text((note.key == null || note.key.trim() == "") ? '' : note.key), + Text(note.lengthStr), Text((note.capo == null || note.capo.trim() == "") ? "" : "Capo ${note.capo}") diff --git a/lib/utils.dart b/lib/utils.dart index a9889f8..a572f8d 100644 --- a/lib/utils.dart +++ b/lib/utils.dart @@ -14,13 +14,19 @@ String _formatDateInt(int v) { } } -String toTime(int length) { +String toTime(int length, {bool includeHour = false}) { if (length == null) return ""; int m = length ~/ 60; int s = length % 60; - return "${_formatDateInt(m)}:${_formatDateInt(s)}"; + String data = "${_formatDateInt(m)}:${_formatDateInt(s)}"; + if (includeHour) { + int h = s ~/ 3600; + data = "${_formatDateInt(h)}:$data"; + } + + return data; } String dateToString(DateTime date) { @@ -90,7 +96,7 @@ showUndoSnackbar( ScaffoldMessenger.of(context) .showSnackBar(snackbar) .closed - .then((value) => onClose()); + .then((value) => (onClose != null) ? onClose() : () {}); } hideSnack(BuildContext context) { From 38bc3803344389f0eda817dfa06524cc5fc7cbf7 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 26 Sep 2021 16:31:18 +0200 Subject: [PATCH 106/146] Change hidden icons --- lib/editor_views/audio.dart | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/editor_views/audio.dart b/lib/editor_views/audio.dart index 256c7bb..ff94d73 100644 --- a/lib/editor_views/audio.dart +++ b/lib/editor_views/audio.dart @@ -148,7 +148,13 @@ class AudioFileView extends StatelessWidget { color: Theme.of(context).scaffoldBackgroundColor, child: Row( mainAxisAlignment: MainAxisAlignment.end, - children: [Icon(Icons.share)]), + children: [ + Icon(Icons.share), + Container(width: 8), + Icon(Icons.move_to_inbox), + Container(width: 8), + Icon(Icons.copy), + ]), padding: EdgeInsets.all(10))), background: Card( child: Container( From 0f524d7522a01fcde64416cae97c77a3e0da386b Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 26 Sep 2021 23:05:49 +0200 Subject: [PATCH 107/146] Change padding and show audio files in trash, fix initial start dialog - change content size to 9 - change initial notes --- lib/dialogs/initial_import_dialog.dart | 12 ++++++++++-- lib/home.dart | 23 +++++++++++++---------- lib/local_storage.dart | 5 +++++ lib/model.dart | 2 +- lib/note_editor.dart | 13 ++++++++----- lib/note_viewer.dart | 16 ++++++++++------ lib/trash.dart | 1 + 7 files changed, 48 insertions(+), 24 deletions(-) diff --git a/lib/dialogs/initial_import_dialog.dart b/lib/dialogs/initial_import_dialog.dart index b6ade63..bc5cb7b 100644 --- a/lib/dialogs/initial_import_dialog.dart +++ b/lib/dialogs/initial_import_dialog.dart @@ -14,9 +14,16 @@ Future> getExampleNotes() async { return _notes.map((s) => Note.fromJson(s, s['id'])).toList(); } +Future> getInitialNotes() async { + String path = "assets/initial_notes.json"; + String data = await rootBundle.loadString(path); + Map map = jsonDecode(data); + return map['notes'].map((s) => Note.fromJson(s, s['id'])).toList(); +} + showInitialImportDialog( BuildContext context, ValueChanged onDone) async { - List exampleNotes = await getExampleNotes(); + List exampleNotes = await getInitialNotes(); NoteCollection exampleCollection = NoteCollection.empty(); exampleCollection.notes = exampleNotes; exampleCollection.title = "Example Set"; @@ -48,7 +55,8 @@ showSelectNotesImportDialog( } onDone(backup); - }, () {}, backup.notes, title: title); + }, () => onDone(BackupData(notes: [], collections: [])), backup.notes, + title: title); } typedef NoteListCallback = Future Function(List); diff --git a/lib/home.dart b/lib/home.dart index 10a34b6..35a2529 100644 --- a/lib/home.dart +++ b/lib/home.dart @@ -32,16 +32,6 @@ class Home extends StatelessWidget { @override Widget build(BuildContext context) { - Future.delayed(Duration(milliseconds: 1000), () async { - bool initialStart = await LocalStorage().isInitialStart(); - //initialStart = false; - if (initialStart) { - showInitialImportDialog(context, (_) { - LocalStorage().setInitialStartDone(); - }); - } - }); - LocalStorage().getNotes().then((value) => LocalStorage() .controller .sink @@ -124,6 +114,19 @@ class HomeContentState extends State // init filemanager FileManager(); + + //LocalStorage().setInitialStart(false); + + // Future.delayed(Duration(milliseconds: 1000), () async { + + LocalStorage().isInitialStart().then((initalStart) { + if (initalStart) { + showInitialImportDialog(context, (_) { + print("set initial start done..."); + LocalStorage().setInitialStartDone(); + }); + } + }); } _activeFiltersView() { diff --git a/lib/local_storage.dart b/lib/local_storage.dart index 448e2af..3ca3f21 100644 --- a/lib/local_storage.dart +++ b/lib/local_storage.dart @@ -461,6 +461,11 @@ class LocalStorage { await prefs.setBool('started', true); } + Future setInitialStart(bool initialStart) async { + SharedPreferences prefs = await SharedPreferences.getInstance(); + await prefs.setBool('started', initialStart); + } + Future> getActiveNotes() async { return (await getNotes()).where((n) => !n.discarded).toList(); } diff --git a/lib/model.dart b/lib/model.dart index e72d0b1..97bd19b 100644 --- a/lib/model.dart +++ b/lib/model.dart @@ -445,7 +445,7 @@ class Settings { sortBy: SortBy.created, sortDirection: SortDirection.down, name: null, - sectionContentFontSize: 10, + sectionContentFontSize: 9, noteListType: NoteListType.double, editorView: EditorView.tabs); } diff --git a/lib/note_editor.dart b/lib/note_editor.dart index bd899ee..4da291f 100644 --- a/lib/note_editor.dart +++ b/lib/note_editor.dart @@ -225,7 +225,7 @@ class NoteEditorState extends State _buildTabView(List items) { return Container( - padding: EdgeInsets.all(16), + padding: EdgeInsets.all(8), child: ListView.builder( itemBuilder: (context, index) => items[index], itemCount: items.length, @@ -364,10 +364,12 @@ class NoteEditorState extends State items[TabType.structure].add(AddSectionItem()); // all additional info - items[TabType.info].add(NoteEditorAdditionalInfo(store.note, - onChange: (data) => - _onAdditionalInfoValueChange(data.item1, data.item2), - onFocusChange: _onAdditionalInfoFocusChange)); + items[TabType.info].add(Container( + padding: EdgeInsets.only(left: 8, right: 8), + child: NoteEditorAdditionalInfo(store.note, + onChange: (data) => + _onAdditionalInfoValueChange(data.item1, data.item2), + onFocusChange: _onAdditionalInfoFocusChange))); // audio files as stack if (store.note.audioFiles.length > 0 && !useTabs) @@ -557,6 +559,7 @@ class NoteEditorState extends State )); var width = MediaQuery.of(context).size.width; + Scaffold scaffold = Scaffold( key: _globalKey, appBar: AppBar( diff --git a/lib/note_viewer.dart b/lib/note_viewer.dart index 7fc81ec..45c322a 100644 --- a/lib/note_viewer.dart +++ b/lib/note_viewer.dart @@ -65,15 +65,18 @@ class NoteViewerContent extends StatelessWidget { } if (showAdditionalInformation) { - items.add(NoteEditorAdditionalInfo( - note, - allowEdit: false, + items.add(Container( + padding: EdgeInsets.symmetric(horizontal: 8), + child: NoteEditorAdditionalInfo( + note, + allowEdit: false, + ), )); } if (showAudioFiles) { items.add(Padding( - padding: EdgeInsets.symmetric(vertical: 20), + padding: EdgeInsets.symmetric(vertical: 20, horizontal: 8), child: Text( 'Audio Files', style: Theme.of(context).textTheme.subtitle1, @@ -83,7 +86,7 @@ class NoteViewerContent extends StatelessWidget { return AudioFileListItem(e, onPressed: () { playInDialog(context, e); }); - })); + }).toList()); } if (showSheet) { @@ -93,7 +96,7 @@ class NoteViewerContent extends StatelessWidget { return Container( child: Stack(children: [ Container( - padding: EdgeInsets.all(16), + padding: EdgeInsets.all(8), child: ListView.builder( controller: controller, itemBuilder: (context, index) => items[index], @@ -131,6 +134,7 @@ class NoteViewer extends StatelessWidget { showZoomPlayback: showZoomPlayback, showTitle: showTitle, showSheet: showSheet, + showAudioFiles: showAudioFiles, showAdditionalInformation: showAdditionalInformation, ); } diff --git a/lib/trash.dart b/lib/trash.dart index 06ce3c9..622a179 100644 --- a/lib/trash.dart +++ b/lib/trash.dart @@ -177,6 +177,7 @@ class _TrashState extends State { ) ], showZoomPlayback: false, + showAudioFiles: true, ))); } } From b5fd93879af079d39fcbff605d53a78f1d557143 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 26 Sep 2021 23:06:28 +0200 Subject: [PATCH 108/146] Update jsons and change version to 1.1.1 --- assets/initial_data.json | 553 +++++++++++++++++++++++++++++++++++++- assets/initial_notes.json | 179 ++++++++++++ pubspec.yaml | 3 +- 3 files changed, 733 insertions(+), 2 deletions(-) create mode 100644 assets/initial_notes.json diff --git a/assets/initial_data.json b/assets/initial_data.json index 3411bf2..092440f 100644 --- a/assets/initial_data.json +++ b/assets/initial_data.json @@ -1 +1,552 @@ -[{"id": "2621235", "title": "New Until Its Old", "key": null, "tuning": null, "label": "ultimate guitar", "instrument": null, "starred": false, "capo": "3", "sections": [{"id": "34384476-1fe6-4cbc-b79e-4e6ae3cbda88", "title": "Chords", "content": "Notes in parentheses are walking notes.\nhttps://youtu.be/QULo86jLFkA\nDm7 x57x68 (if you are strumming instead of picking as he does you will need to barre this chord x57568)"}, {"id": "cbc82fc0-2def-492e-9242-9c2de8413ff8", "title": "Intro", "content": "C F Dm G Em Am7 F G"}, {"id": "2a931a75-3751-400c-bd88-8e8cad3c3901", "title": "Verse", "content": "C F\nWell the winter brings the snow\n Dm G\nIt's spring before you know\nEm Am\nSummer comes and goes\n F G\nLike a dream that you can't hold\n C F\nAs you gaze upon the sky\n Dm G\nSee the clouds passing by\n Em Am\nThey know as well as you and I\n F Gsus4 G\nEverything\u2019s new until it's old"}, {"id": "cb79f0cd-6f95-4d98-b437-d84ace0895d5", "title": "Chorus", "content": "Am F G\n Perhaps I'd be happy if time stood still\n Em Am\nI know I won't for it never will\n F G (G G#)\nSure as the evening geese take flight\nAm F G\n Silver coins in a Wishing Well\n Em Am\nFinal chimes of a mission bell\n F Gsus4 G\nAnd it is ringing into the night"}, {"id": "cbd2f798-192d-46be-a254-589b9bfbc0f1", "title": "Instrumental Break", "content": "C F Dm G Em Am7 F G"}, {"id": "858a0094-5144-46b0-8f0c-48cf39fe96cf", "title": "Verse", "content": "C F\nWell the morning brings the sun\n Dm G\nBut the rain will surely come\n Em Am\nAnd the afternoon will run\n F Gsus4 G\nInto setting suns of pink and blue\n C F\nAs you gaze upon the moon\n Dm G\nBe it crescent, full, or new\n Em Am\nIt knows as well as me and you\n F G Gsus4 G\nEverything\u2019s new until it\u2019s old"}, {"id": "3e28f80a-e691-4613-bf24-27ba8f76bcbc", "title": "Chorus", "content": "Am F G\n Perhaps I'd be happy if time stood still\n Em Am\nI know I won't for it never will\n F G G G7\nSure as the evening geese take flight\nAm F G\n Silver coins in a wishing well\n Em Am\nFinal chimes of a mission bell\n F G Gsus4 G\nAnd it is ringing into the night"}, {"id": "7cb7e596-689b-498b-878d-73d2205c8e55", "title": "Instrumental Break", "content": "C F Dm7 G (G F E D C B) Am7 F G (G G#)"}, {"id": "8bd9eb54-a83d-46fa-84f8-ddbb6bc9c4dc", "title": "Chorus", "content": "Am C G\n Well I know I'd be happy if time stood still\n Em Am\nBut I won't for it never will\n F G (G F E D C)\nSure as the evening geese take flight\nAm F G\n Silver coins in a wishing well\n Em Am\nFinal chimes of a mission bell\n F G (G G#) Am\nAnd it is ringing into the night"}], "artist": "Passenger"}, {"id": "1180866", "title": "Keep Your Head Up", "key": null, "tuning": null, "label": "ultimate guitar", "instrument": null, "starred": false, "capo": null, "sections": [{"id": "d1ea80b5-b15e-4bb9-a808-a3a4b2996e7c", "title": "Intro", "content": "Either strum or play in the same pattern as the intro throughout, obviously\nwithout the strum at the end.\nAlso keep your 3rd and fourth finger on like this:\ne|----3---|\nB|----3---|\nG|--------|\nD|--------|\nA|--------|\nE|--------|\nfor everything except the chorus, but still keep it on the Em7 chord for the\nchorus, hope that made sense :)\ne|-----------------------------------------------|\nB|-----------3-----------------3-----------3-----|\nG|--------0-----0-----------0-----0--------0-----|\nD|-----2-----------2-----2-----------2-----2-----|\nA|--3-----------------3-----------------3--3--3--|\nE|-----------------------------------------------|"}, {"id": "8b8d29e3-9378-4ba0-8e02-e14a9e86a750", "title": "Verse 1", "content": "C Em7\nI spend my time, watching\n G C\nThe spaces that have grown between us.\n Em7\nAnd I cut my mind on second best,\n G C\nOh the scars that come with the greenness.\n Em7\nAnd I gave my eyes to the boredom,\n G C\nStill the seabed wouldn't let me in.\n Em7\nAnd I try my best to embrace the darkness\nG C Em7\nIn which I swim, oh the darkness... in which I swim.\nC Em7\nNow walking back, down this mountain,\n G C\nThe strength of a turnin' tide.\n Em7\nOh the wind so soft, and my skin,\n G C\nYeah the sun was so hot upon my side.\n Em7\nOh lookin' out at this happiness\n G C\nI searched for between the sheets,\n Em7\nOh feelin' blind, to realize,\nG C\nAll I was searchin' for... was me.\n Em7 G C\nOh oh-oh, all I was searchin' for was me.\nD\nOh yeah"}, {"id": "bd30dce5-6760-4b10-956d-4fd618ebb860", "title": "Chorus", "content": "Em7 D C\nKeep your head up, keep your heart strong no, no, no, no,\nEm7 D C\nKeep your mind set, keep your head whole Oh my, my darlin'.\nEm7 D C\nKeep your head up, keep your heart strong Na, oh, no, no.\nEm7 D C\nKeep your mind set in your ways... And keep your heart strong."}, {"id": "45ab7695-5325-4985-b88d-a64aee8439db", "title": "Verse 2", "content": "C Em7\nI saw a friend of mine, the other day,\n G C\nAnd he told me that my eyes were gleamin'.\n Em7\nI said I'd been away, and he knew\n G C\nOh he knew the depths I was meanin'.\n Em7\nAnd it felt so good to see his face,\n G C\nOh the comfort invested in my soul,\n Em7\nto feel the warmth, of his smile,\n G C\nwhen he said, 'I'm happy to have you home.'\nEm7 G C\nOh oh-oh, I'm happy to have you home.\nD\nOhh"}, {"id": "de7cee9c-7438-4f5f-9e6d-edf32e89f0a2", "title": "Chorus", "content": "Em7 D C\nKeep your head up, keep your heart strong no, no, no, no,\nEm7 D C\nKeep your mind set, keep your hair long Oh my, my darlin'.\nEm7 D C\nKeep your head up, keep your heart strong Na, oh, no, no.\nEm7 D C\nKeep your mind set in your ways... Keep your heart strong."}, {"id": "bfae0577-02cb-45f4-b1d4-00ae24bdf384", "title": "Bridge", "content": "G D C\nAnd I'll always remember you the same.\nG D C\nOh eyes like wildflowers, oh within demons of change.\nD\nOhhh may you find happiness here.\nD\nOhhh may all your hopes all turn out right."}, {"id": "41fc9146-9ca3-446e-9240-35e1326c85af", "title": "Chorus", "content": "Em7 D C\nKeep your head up, keep your heart strong no, no, no, no,\nEm7 D C\nKeep your mind set, keep your hair long Oh my, my darlin'.\nEm7 D C\nKeep your head up, keep your heart strong Na, oh, no, no.\nEm7 D C\nKeep your mind set in your ways... Keep your heart strong."}, {"id": "2842c4f0-fb00-4481-b4a8-1b1621eeca79", "title": "Outro", "content": "G D C\n'Cause I'll always remember you the same.\nG D C\nOh eyes like wildflowers, oh within demons of change."}], "artist": "Ben Howard"}, {"id": "706621", "title": "Slow Dancing In A Burning Room", "key": null, "tuning": null, "label": "ultimate guitar", "instrument": null, "starred": false, "capo": null, "sections": [{"id": "2c28391b-8bb7-487d-81b2-1ae66b214899", "title": "Intro", "content": "John Mayer\n\"Slow Dancing In A Burning Room\"\nTabbed by Dave Ross\n(Chords I use)\n E A D G B E\n - - - - - -\nE- 0 2 2 1 0 0\nC#m7- x 4 6 6 0 0\nAadd9- 5 7 7 6 0 0\nBadd11- 7 9 9 8 0 0\nF#m11- 2 4 4 2 0 0\nC#m7 Aadd9 E \nC#m7 Aadd9 E"}, {"id": "87182e83-7900-4874-a3d7-686c13e5e7de", "title": "Verse", "content": "C#m7\nIt's not a silly little moment\n Aadd9 E\nIt's not the storm before the calm\n C#m7\nThis is the deep and dying breath of\n Aadd9 E\nThis love that we've been working on\n C#m7\nCan't seem to hold you like I want to\n Aadd9 E\nSo I can feel you in my arms\n C#m7\nNobody's gonna come and save you\n Aadd9 E\nWe've pulled too many false alarms"}, {"id": "36e84e71-b282-4c68-b83e-11abafa716e3", "title": "Chorus", "content": "Badd11\nWe're going down\n C#m7 Aadd9\nAnd you can see it too\n Badd11\nWe're going down\n C#m7 F#m11\nAnd you know that we're doomed\n C#m7 Aadd9 E\nMy Dear we're slow dancing in a burning room"}, {"id": "ad9ddf85-b891-4989-ad86-e6b68152472a", "title": "Instrumental", "content": "C#m7 Aadd9 E \nC#m7 Aadd9 E"}, {"id": "8cf1613f-303c-41a8-92e2-c3ea7063469a", "title": "Verse", "content": "C#m7\nI was the one you always dreamed of\n Aadd9 E\nYou were the one I tried to draw\n C#m7\nHow dare you say it's nothing to me\n Aadd9 E\nBaby you're the only light I ever saw\n C#m7\nI'll make the most of all the sadness\n Aadd9 E\nYou'll be a bitch because you can\n C#m7\nYou try to hit me just to hurt me so you leave me feeling dirty\n Aadd9 E\nBecause you can't understand"}, {"id": "2fbd1880-2b8c-4639-a6e0-55414e1649cc", "title": "Chorus", "content": "Badd11\nWe're going down\n C#m7 Aadd9\nAnd you can see it too\n Badd11\nWe're going down\n C#m7 F#m11\nAnd you know that we're doomed\n C#m7 Aadd9 E\nMy Dear we're slow dancing in a burning room"}, {"id": "c4b0a8f9-52d5-4946-a8c7-7b82fff5a1bf", "title": "Instrumental", "content": "C#m7 Aadd9 E \nC#m7 Aadd9 E \nC#m7 Aadd9 E \nC#m7 Aadd9 E"}, {"id": "94f35e39-e264-4945-a94a-9ee9a222906c", "title": "Bridge", "content": "F#m11 C#m7 Badd11 F#m11\nGo Cry about it why don't you (repeat 3 times)\n C#m7 Aadd9 E\nMy Dear we're slow dancing in a burning room"}, {"id": "89d61423-f400-4558-bed7-2fb734cf0828", "title": "Instrumental", "content": "C#m7 Aadd9 E \nC#m7 Aadd9 E \nC#m7 Aadd9 E \nC#m7 Aadd9 E"}, {"id": "f4d12218-e474-4213-b94c-924fb1f97fde", "title": "Outro", "content": "C#m7\nDon't you think we outta know by now\n Aadd9 E\nDon't you think we should've learned somehow\n C#m7\nDon't you think we outta know by now\n Aadd9 E\nDon't you think we should've learned somehow\n C#m7\nDon't you think we outta know by now\n Aadd9 E\nDon't you think we should've learned somehow"}], "artist": "John Mayer"}, {"id": "1729327", "title": "Landslide", "key": null, "tuning": null, "label": "ultimate guitar", "instrument": null, "starred": false, "capo": "3", "sections": [{"id": "ddd7313b-9524-4424-b894-88f0e760f74b", "title": "Verse 1", "content": "*Capo 3*\nBasic picking pattern C G/B Am7 D/F# G G/F# Em7\ne|----------------------| e|-0---3---0---2---3---3----3--|\nB|---------X------------| B|-1---0---1---3---3---3----3--|\nG|-----X-----X---X------| G|-0---0---0---2---0---0----0--|\nD|-------X-----X--------| D|-2---2---2---0---0---0----2--|\nA|-X--------------------| A|-3---2---0---0---2---2----2--|\nE|----------------------| E|-X---X---X---2---3---2----0--|\nI play CM7/B instead of G/B. I play the F# note in the D/F# with my thumb.\nI prefer to play 7th chords in the chorus to add distinction, and I love G's.\nC G/B Am7 G/B\n I took my love and I took it down\nC G/B Am7 G/B\n I climbed a mountain and I turned around\n C G/B Am7 G/B\nAnd I saw my reflection in the snow covered hills\n C G/B Am7 G/B\nUntil the landslide brought me down"}, {"id": "d28d6a81-d8fb-4ef8-bb2c-7105b603d87b", "title": "Verse 2", "content": "C G/B Am7 G/B\nOh, mirror in the sky what is love\n C G/B Am7 G/B\nCan the child within my heart rise above\n C G/B Am7 G/B\nCan I sail through the changing ocean tides\n C G/B Am7 G/B\nCan I handle the seasons of my life\nC G/B Am7 G/B\n mmm... I don't know\nC G/B Am7 D/F#"}, {"id": "06da1398-d40e-4669-ac47-8341a0daf861", "title": "Chorus", "content": "G G/F# Em7\nWell, I've been afraid of changing cause I\nC G/B Am7 D/F#\nbuilt my life around you\n G G/F# Em7\nBut time makes you bolder, children get older\n C G/B Am7 G/B\nand I'm getting older too\nC G/B Am7 G/B (repeat as necessary)\n (insert optional solo here)\nC G/B Am7 D/F#\n (as solo finishes)\n G G/F# Em7\nWell, I've been afraid of changing cause I\nC G/B Am7 D/F#\nbuilt my life around you\n G G/F# Em7\nBut time makes you bolder, children get older\n C G/B Am7 G/B\nand I'm getting older too\n C G/B Am7 G/B\nOh, I'm getting older too Ah"}, {"id": "77d2b266-56cb-4685-946c-c0e66c3c6ddc", "title": "Verse 3", "content": "C G/B Am7 G/B\n Ah Take my love and take it down\nC G/B Am7 G/B\n Ah If you climb a mountain and you turn around\n C G/B Am7 G/B\nAnd if you see my reflection in the snow covered hills\n C G/B Am7 G/B\nthen a landslide will bring you down\n C G/B Am7 G/B\nAnd if you see my relfection in the snow covered hills\nWell...\n C G/B Am7 G/B\nA landslide will bring you down. Ohhhh\n C G/B Am7\nWell well, a landslide bring you down"}], "artist": "Fleetwood Mac"}, {"id": "13586", "title": "Go Your Own Way", "key": null, "tuning": null, "label": "ultimate guitar", "instrument": null, "starred": false, "capo": null, "sections": [{"id": "1c727883-07af-479d-9e11-87b1bce6092d", "title": "Intro", "content": "Go Your Own Way chords \nFleetwood Mac\nF"}, {"id": "9488faa7-ef3d-4efb-bb6a-33a93132a9ec", "title": "Verse", "content": "F C Bb\nLoving you, isn t the right thing to do?\nBb F \nHow can I, ever change things that I feel\nF C Bb\nIf I could, maybe I d give you my world\nBb F\nHow can I, when you wont take it from me?"}, {"id": "ee72e80e-ca99-44c5-879f-6bf272f9d9f7", "title": "Chorus", "content": "Dm Bb C \nYou can go your own way, Go your own way\nDm Bb C \nYou can call it Another lonely day\nDm Bb C \nYou can go your own way, Go your own way"}, {"id": "4b157fa7-c7fa-47bb-a8a0-b0ecaac29bec", "title": "Verse", "content": "F C Bb\nTell me why, everything turned around?\nBb F\nPacking up, shacking up is all you wanna do\nF C Bb\nIf I could, baby Id give you my world\nBb F\nOpen up, everything s waiting for you"}, {"id": "15c35788-e574-4414-8b0d-d795ab13983e", "title": "Chorus", "content": "Dm Bb C \nYou can go your own way, Go your own way\nDm Bb C \nYou can call it Another lonely day\nDm Bb C \nYou can go your own way, Go your own way"}, {"id": "6ecd832e-1bf3-4b23-a20e-fbc5d69c835b", "title": "Break 1", "content": "F C Bb F C Bb F C Bb F C Bb F"}, {"id": "dbae4324-ea23-4f54-883e-7ab65dc84c74", "title": "Chorus", "content": "Dm Bb C \nYou can go your own way, Go your own way\nDm Bb C \nYou can call it Another lonely day\nDm Bb C \nYou can go your own way, Go your own way"}, {"id": "581dbc5d-1a15-49e5-bb3c-b7947d707f55", "title": "Solo", "content": "(over and over during guitar solo)\nDm Bb C"}, {"id": "874c824e-d5af-4968-8bf3-7d790239533f", "title": "Chorus", "content": "Dm Bb C \nYou can go your own way, Go your own way\nDm Bb C \nYou can call it Another lonely day\nDm Bb C \nYou can go your own way, Go your own way\n(Fade out on chorus)"}], "artist": "Fleetwood Mac"}, {"id": "146744", "title": "Boulevard Of Broken Dreams", "key": null, "tuning": null, "label": "ultimate guitar", "instrument": null, "starred": false, "capo": "1", "sections": [{"id": "d7e99808-eb26-4723-af95-1ca5130e583a", "title": "Verse 1", "content": "Em G D A Em\n I walk a lonely road, the only one that I have ever known\n G D A Em\nDon't know where it goes, but it's home to me and I walk alone"}, {"id": "5b4a81b4-1987-464c-94cf-d52969869360", "title": "Interlude", "content": "(Em) G D A"}, {"id": "2a30ebcd-47ff-48d6-98d0-a27599c4776a", "title": "Verse 2", "content": "Em G D A Em\n I walk this empty street, on the boulevard of broken dreams\n G D A Em\nWhere the city sleeps, and I'm the only one and I walk alone"}, {"id": "7fbb6feb-7877-4e9c-ad92-f59aa1387f88", "title": "Interlude", "content": "(Em) G D A Em\n I walk alone, I walk alone\n(Em) G D A\n I walk alone, I walk a...."}, {"id": "71a8a6ea-99ac-43c4-9989-0736d2952ef5", "title": "Chorus", "content": "C G D Em\n My shadow's the only one that walks beside me\nC G D Em\n My shallow heart's the only thing that's beating\nC G D Em\n Sometimes I wish someone out there will find me\nC G B7\n Till then I walk alone"}, {"id": "1aa72ddd-c6e9-48b0-85d0-bc219afad596", "title": "Interlude", "content": "Em G D A\nAh-Ah Ah-Ah Ah-Ah Ahhh-Ah\n Em G D A\nhaaa-ah Ah-Ah Ah-Ah Ah-Ah"}, {"id": "493ea979-b4b2-440c-8bec-7a110fe20e09", "title": "Verse 3", "content": "Em G\n I'm walking down the line\nD A Em\nThat divides me somewhere in my mind\n G D\nOn the border line of the edge\n A Em\nAnd where I walk alone"}, {"id": "fe5a5f90-a7df-4055-ad68-528646f89786", "title": "Interlude", "content": "(Em) G D A"}, {"id": "fae6276f-a646-487d-8d6b-a0621651c1e3", "title": "Verse 4", "content": "Em G\n Read between the lines\nD A Em\nWhat's fucked up and everything's alright\n G D A\nCheck my vital signs, to know I'm still alive\n Em\nAnd I walk alone"}, {"id": "32de7ebb-5253-4ee8-b895-64101195e817", "title": "Interlude", "content": "(Em) G D A Em\n I walk alone, I walk alone\n(Em) G D A\n I walk alone, I walk a...."}, {"id": "438ec43f-cf25-44d8-945d-e32f29f70291", "title": "Chorus", "content": "C G D Em\n My shadow's the only one that walks beside me\nC G D Em\n My shallow heart's the only thing that's beating\nC G D Em\n Sometimes I wish someone out there will find me\nC G B7\n Till then I walk alone"}, {"id": "442decb3-6ad0-41f6-87fb-ca1f1d17effb", "title": "Interlude", "content": "Em G D A\nAh-Ah Ah-Ah Ah-Ah Ahhh-Ah\n Em G D A\nhaaa-ah Ah-Ah Ah-Ah I walk alone, I walk a..."}, {"id": "16adf87d-8f92-4774-97d7-87ddb673c212", "title": "Solo", "content": "C G D Em\nC G D Em\nC G D Em\nC G B B7"}, {"id": "b8b77deb-4381-449f-8eac-6d03a1b97ac1", "title": "Verse 5", "content": "Em G D A Em\nI walk this empty street, on the boulevard of broken dreams\n G D A\nWhere the city sleeps, and I'm the only one and I walk a..."}, {"id": "7445f734-7393-444c-9fbe-3660a7d46d83", "title": "Chorus", "content": "C G D Em\n My shadow's the only one that walks beside me\nC G D Em\n My shallow heart's the only thing that's beating\nC G D Em\n Sometimes I wish someone out there will find me\nC G B\n Till then I walk alone"}, {"id": "fa06adc5-271f-4770-9d1f-833b2d848bf0", "title": "Outro", "content": "Em C D A/C# G D#5\nEm C D A/C# G D#5\nEm C D A/C# G D#5\nEm C D A/C# G D#5"}], "artist": "Green Day"}, {"id": "2475920", "title": "Guiding Light", "key": null, "tuning": null, "label": "ultimate guitar", "instrument": null, "starred": false, "capo": null, "sections": [{"id": "72d28039-9356-4c97-9ff8-76af6ddf5fae", "title": "Intro", "content": "G / / / / / /"}, {"id": "203a9f05-20e6-48a9-ba41-e78573928922", "title": "Verse", "content": "G D/G\nAll day permanent red,\n C/G G\nthe glaze on my eyes.\n D/G\nWhen I heard your voice,\n C/G G\nthe distance caught me by surprise again.\n D/G C/G G\nAnd I know you claim that you're alright;\n C G\nbut fix your eyes on me,\n C\nI guess I'm all you have\n G D\nand I swear you'll see the dawn again."}, {"id": "d295d238-efad-42f7-bc11-256e454ff3c6", "title": "Chorus", "content": "C G\nWell I know I had it all on the line,\n Em D\nbut don't just sit with folded hands and become blind.\n Am G\n'Cause even when there is no star in sight,\nEm D\nyou'll always be my only guiding light."}, {"id": "8d611dda-b47a-45a1-afd5-96f6efb437ee", "title": "Verse", "content": "G D/G\nRelate to my youth,\n C/G G\nwell I'm still in awe of you.\n D/G\nDiscover some new truth,\n C/G G\nand that was always wrapped around you.\nG D/G C/G G\nDon't just slip away in the night,\nG D/G C/G G\ndont just hurl your words from on high."}, {"id": "3cc292bc-8371-41d1-8def-c723335d0889", "title": "Chorus", "content": "C G\nWell I know I had it all on the line,\n Em D\nbut don't just sit with folded hands and become blind.\n Am G\n'Cause even when there is no star in sight,\n Em D\nyou'll always be my only guiding light."}, {"id": "5f244384-1077-4e99-a5fd-bc55cba8f03b", "title": "Bridge", "content": "Am G\n If we come back and were broken,\nAm Em\n unworthy and ashamed,\nAm G\n give us something to believe in,\nAm D / / / Am / / / G / / / Em / / / D / / /\n and you know well go your way"}, {"id": "5c91b417-e8d6-48f6-9f80-97e20206f2f9", "title": "Chorus", "content": "C G\nWell I know I had it all on the line,\n Em D\nbut don't just sit with folded hands and become blind.\n Am G\n'Cause even when there is no star in sight,\n Em D\nyou'll always be my only guiding light. [Repeat Chorus - resolve to G]"}], "artist": "Mumford & Sons"}, {"id": "709013", "title": "Mamma Mia", "key": null, "tuning": null, "label": "ultimate guitar", "instrument": null, "starred": false, "capo": null, "sections": [{"id": "e48f1d87-6c81-4792-a472-3373e0182bf1", "title": "Verse 1", "content": "D G\nI've been cheated by you since I don't know when\nD G\nSo I made up my mind, it must come to an end\nD5 D+5\nLook at me now, will I ever learn?\nD6 D7 G\nI don't know how but I suddenly lose control\nG A\nThere's a fire within my soul"}, {"id": "df43a50b-c991-4a9a-8883-fca00c4b9f61", "title": "Pre-Chorus", "content": "G D A\nJust one look and I can hear a bell ring\nG D A\nOne more look and I forget everything, o-o-o-oh"}, {"id": "43c59456-2235-4289-8e9f-78575e17b113", "title": "Chorus", "content": "D\nMamma mia, here I go again\nG\nMy my, how can I resist you?\nD\nMamma mia, does it show again?\nG\nMy my, just how much I've missed you\nD A\nYes, I've been brokenhearted\nBm F#m\nBlue since the day we parted\nG A\nWhy, why did I ever let you go?\nD Bm\nMamma mia, now I really know,\nG A\nMy my, I could never let you go."}, {"id": "b8d99912-e4c2-482f-92e5-06242c352dbf", "title": "Verse 2", "content": "D G\nI've been angry and sad about things that you do\nD G\nI can't count all the times that I've told you \"we're through\"\nD5 D+5\nAnd when you go, when you slam the door\nD6 D7 G\nI think you know that you won't be away too long\nG A\nYou know that I'm not that strong"}, {"id": "6bf2e85c-bbb0-42b7-8a9b-362c4490a84e", "title": "Pre-Chorus", "content": "G D A\nJust one look and I can hear a bell ring\nG D A\nOne more look and I forget everything"}, {"id": "d12a28c9-bbea-4001-9306-79bfbc71e2c9", "title": "Chorus", "content": "D\nMamma mia, here I go again\nG\nMy my, how can I resist you?\nD\nMamma mia, does it show again\nG\nMy my, just how much I've missed you?\nD A\nYes, I've been brokenhearted\nBm F#m\nBlue since the day we parted\nG A\nWhy, why did I ever let you go?\nD Bm\nMamma mia, even if I say\nG A\n\"Bye bye, leave me now or never\"\nD\nMamma mia, it's a game we play\nG\n\"Bye bye\" doesn't mean forever\nD\nMamma mia, here I go again\nG\nMy my, how can I resist you?\nD\nMamma mia, does it show again\nG\nMy my, just how much I've missed you?\nD A\nYes, I've been brokenhearted\nBm F#m\nBlue since the day we parted\nG A\nWhy, why did I ever let you go?\nD Bm\nMamma mia, now I really know\nG A\nMy my, I could never let you go"}, {"id": "4d4e827e-2360-4c23-a7ed-fbb56aee1d37", "title": "Outro", "content": "D G D G"}], "artist": "ABBA"}, {"id": "1994861", "title": "Into The Sun", "key": null, "tuning": null, "label": "ultimate guitar", "instrument": null, "starred": false, "capo": null, "sections": [{"id": "2fe6bd9e-aa7b-4d7a-b5fd-6560a5215104", "title": "Intro", "content": "E F# E F#"}, {"id": "bc5c2b08-6188-4a95-b197-73219dad799b", "title": "Verse", "content": "C#m E \nStealing Glances at the pavement\nB F#\nThe weight it comes too soon\nC#m E\nSupposed to keep on rolling\nB F#\nBut the race is nothing new\nC#m \nAs the train, it starts to go,\nE\nAnd it takes our bodies slow\nB F#\nAnd I know you wanted to for some time now\nC#m\nAll this time you're gone\nE\nIn your wake I stumble on\nB F#\nBut the smoke is nothing that I haven't seen\nE G#m F#\nSo I walk into the sun\nB E\nI thought you'd be there\nE F#\nBut you could fool anyone\nE G#m F#\nIn the red water dust\n B E\nWill I see you soon,\n G#m F#\nOr did we move on?\nC#m E B F#\nOooooohh\nC#m E\nThe crowd begins to break up\nB F#\nThey're calling their goodbyes\nC#m E\nMy head's above the water\nB F#\nBut I'm drowning in your eyes\nE G#m F#\nSo I walk into the sun\nB E\nI thought you'd be there\nE F#\nBut you could fool anyone\nE G#m F#\nGot a head full of dust\n B E\nWill I see you soon,\n G#m F#\nOr did we move on?"}, {"id": "e3832b3a-4db9-4d4c-bf7d-cc71f6a7e508", "title": "Outro", "content": "E\nWell the race is long, you can't relax\nF#\nAnd I don't belong so I'm headed back\nE\nIt's getting hard, you feel the fear\nF#\nI'm seeing red, wish you were here\nE G#m F#\nAnd I walk into the sun\nB E\nI thought you'd be there\nE F#\nBut you could fool anyone\nE G#m F#\nGot a head full of dust\n B E\nWill I see you soon,\n G#m F#\nOr did we move on?\nF# E\nWill I see you soon,\n G#m F#\nOr did we move on?\nB E\nWill I see you soon,\nG#m\nOr do we move on?"}], "artist": "Sons Of The East"}, {"id": "1196622", "title": "Lifes For The Living", "key": null, "tuning": null, "label": "ultimate guitar", "instrument": null, "starred": false, "capo": "6", "sections": [{"id": "2c5227ed-9937-4d2d-a464-58f6b20d5b41", "title": "Intro", "content": "Chords:\nEm7 020030\nGadd4 320013\nFmaj7 103210\nAm Dm C G C Em7 Am Dm C G Gadd4 G"}, {"id": "955ea37d-8da7-4c47-8cf5-f779585b55fc", "title": "Verse", "content": "Am Fmaj7\nWell grey clouds wraped round the town like elastic\n G C Em7\nCars stood like toys made of Taiwanese plastic\n Am Fmaj7 G Gadd4 G\nThe boy laughed at the spastic dancing around in the rain\n Am Fmaj7\nWhile laundrettes cleaned clothes, high heals rub toes\n G C Em7\nPuddles splashed huddles of bus stop crows\n Am Fmaj7 G Gadd4 G\nDressed in their suits and their boots well they all look the same"}, {"id": "cc959f85-8fcd-4bf8-8a40-742eb5cad20f", "title": "Bridge", "content": "F G C Em7 Am G\nI took myself down to the cafe to find all the boys lost in books and crackling vinyl\n F G C C7\nAnd carved out a poem above the urinal that read"}, {"id": "97f44565-f6d6-4244-99d2-fe142f3312dc", "title": "Chorus", "content": "F \nDon't you cry for the lost\n G \nSmile for the living\n C Em7 Am G\nGet what you need and give what you're given\n F G\nLife's for the living so live it\n Am\nOr you're better off dead\nDm C G C Em7 Am Dm C G Gadd4 G"}, {"id": "8560ae5e-bee8-446b-bcb3-1f38ca349f56", "title": "Verse", "content": "Am Fmaj7\nWhile the evening pulled the moon out of it's packet\n G C Em7\nStars shone like buttons on an old man's jacket\n Am Fmaj7 G Gadd4 G\nWe needed a nail but we tacked it 'til it fell of the wall\n Am Fmaj7\nWhile pigeon's pecked trains, sparks flew like planes\n G C Em7\nThe rain showed the rainbows in the oil stains\n Am Fmaj7 G Gadd4 G\nAnd we all had new iPhones but no one had no one to call"}, {"id": "803f72e9-5353-41fc-baec-b14a09d128be", "title": "Bridge", "content": "F G \nAnd I stumbled down to the stomach of the town\n C Em7 Am G\nWhere the widow takes memories to slowly drown\n F G C C7\nWith a hand to the sky and a mist in her eye she said"}, {"id": "f5113fca-b634-4bf8-bed4-45ae917b2b5e", "title": "Chorus", "content": "F \nDon't you cry for the lost\n G \nSmile for the living\n C Em7 Am G\nGet what you need and give what you're given\n F G\nLife's for the living so live it\n Am\nOr you're better off dead\n \nEm F C Em7 Am Em G Gadd4 G"}, {"id": "e7b094b5-476b-4f35-8cbe-471bd7f6a421", "title": "Verse", "content": "Am Fmaj7\nWell I'm sick of this town, this blind man's forage\n G C Em7\nThey take your dreams down and stick them in storage\n Am Fmaj7 G Gadd4 G\nYou can have them back son when you've paid off your mortgage and loans\n Am Fmaj7\nOh hell with this place, I'll go it my own way\n G C Em7\nI'll stick out my thumb and I trudge down the highway\n Am Fmaj7 G Gadd4 G\nSomeday someone must be going my way home"}, {"id": "f6089c87-2b83-4b80-8323-8def96841aba", "title": "Bridge", "content": "F G\nTill then I'll make my bed from a disused car\n C Em7 Am G\nWith a mattress of leaves and a blanket of stars\n F G C C7\nAnd I'll stitch the words into my heart with a needle and thread"}, {"id": "7efd10ec-4e2c-4219-870f-22c62247701d", "title": "Chorus", "content": "F \nDon't you cry for the lost\n G \nSmile for the living\n C Em7 Am G\nGet what you need and give what you're given\n F G\nYou know life's for the living so live it\n C C7\nOr you're better off dead"}, {"id": "bcae63d9-97b7-4e05-9c15-f20d95c4bee2", "title": "Outro", "content": "F \nDon't you cry for the lost\n G \nSmile for the living\n C Em7 Am G\nGet what you need and give what you're given\n F G\nLife's for the living so live it \n \nOr you're better off dead"}], "artist": "Passenger"}] \ No newline at end of file +[ + { + "id": "2621235", + "title": "New Until Its Old", + "key": null, + "tuning": null, + "label": "ultimate guitar", + "instrument": null, + "starred": false, + "capo": "3", + "sections": [ + { + "id": "34384476-1fe6-4cbc-b79e-4e6ae3cbda88", + "title": "Chords", + "content": "Notes in parentheses are walking notes.\nhttps://youtu.be/QULo86jLFkA\nDm7 x57x68 (if you are strumming instead of picking as he does you will need to barre this chord x57568)" + }, + { + "id": "cbc82fc0-2def-492e-9242-9c2de8413ff8", + "title": "Intro", + "content": "C F Dm G Em Am7 F G" + }, + { + "id": "2a931a75-3751-400c-bd88-8e8cad3c3901", + "title": "Verse", + "content": "C F\nWell the winter brings the snow\n Dm G\nIt's spring before you know\nEm Am\nSummer comes and goes\n F G\nLike a dream that you can't hold\n C F\nAs you gaze upon the sky\n Dm G\nSee the clouds passing by\n Em Am\nThey know as well as you and I\n F Gsus4 G\nEverything\u2019s new until it's old" + }, + { + "id": "cb79f0cd-6f95-4d98-b437-d84ace0895d5", + "title": "Chorus", + "content": "Am F G\n Perhaps I'd be happy if time stood still\n Em Am\nI know I won't for it never will\n F G (G G#)\nSure as the evening geese take flight\nAm F G\n Silver coins in a Wishing Well\n Em Am\nFinal chimes of a mission bell\n F Gsus4 G\nAnd it is ringing into the night" + }, + { + "id": "cbd2f798-192d-46be-a254-589b9bfbc0f1", + "title": "Instrumental Break", + "content": "C F Dm G Em Am7 F G" + }, + { + "id": "858a0094-5144-46b0-8f0c-48cf39fe96cf", + "title": "Verse", + "content": "C F\nWell the morning brings the sun\n Dm G\nBut the rain will surely come\n Em Am\nAnd the afternoon will run\n F Gsus4 G\nInto setting suns of pink and blue\n C F\nAs you gaze upon the moon\n Dm G\nBe it crescent, full, or new\n Em Am\nIt knows as well as me and you\n F G Gsus4 G\nEverything\u2019s new until it\u2019s old" + }, + { + "id": "3e28f80a-e691-4613-bf24-27ba8f76bcbc", + "title": "Chorus", + "content": "Am F G\n Perhaps I'd be happy if time stood still\n Em Am\nI know I won't for it never will\n F G G G7\nSure as the evening geese take flight\nAm F G\n Silver coins in a wishing well\n Em Am\nFinal chimes of a mission bell\n F G Gsus4 G\nAnd it is ringing into the night" + }, + { + "id": "7cb7e596-689b-498b-878d-73d2205c8e55", + "title": "Instrumental Break", + "content": "C F Dm7 G (G F E D C B) Am7 F G (G G#)" + }, + { + "id": "8bd9eb54-a83d-46fa-84f8-ddbb6bc9c4dc", + "title": "Chorus", + "content": "Am C G\n Well I know I'd be happy if time stood still\n Em Am\nBut I won't for it never will\n F G (G F E D C)\nSure as the evening geese take flight\nAm F G\n Silver coins in a wishing well\n Em Am\nFinal chimes of a mission bell\n F G (G G#) Am\nAnd it is ringing into the night" + } + ], + "artist": "Passenger" + }, + { + "id": "1180866", + "title": "Keep Your Head Up", + "key": null, + "tuning": null, + "label": "ultimate guitar", + "instrument": null, + "starred": false, + "capo": null, + "sections": [ + { + "id": "d1ea80b5-b15e-4bb9-a808-a3a4b2996e7c", + "title": "Intro", + "content": "Either strum or play in the same pattern as the intro throughout, obviously\nwithout the strum at the end.\nAlso keep your 3rd and fourth finger on like this:\ne|----3---|\nB|----3---|\nG|--------|\nD|--------|\nA|--------|\nE|--------|\nfor everything except the chorus, but still keep it on the Em7 chord for the\nchorus, hope that made sense :)\ne|-----------------------------------------------|\nB|-----------3-----------------3-----------3-----|\nG|--------0-----0-----------0-----0--------0-----|\nD|-----2-----------2-----2-----------2-----2-----|\nA|--3-----------------3-----------------3--3--3--|\nE|-----------------------------------------------|" + }, + { + "id": "8b8d29e3-9378-4ba0-8e02-e14a9e86a750", + "title": "Verse 1", + "content": "C Em7\nI spend my time, watching\n G C\nThe spaces that have grown between us.\n Em7\nAnd I cut my mind on second best,\n G C\nOh the scars that come with the greenness.\n Em7\nAnd I gave my eyes to the boredom,\n G C\nStill the seabed wouldn't let me in.\n Em7\nAnd I try my best to embrace the darkness\nG C Em7\nIn which I swim, oh the darkness... in which I swim.\nC Em7\nNow walking back, down this mountain,\n G C\nThe strength of a turnin' tide.\n Em7\nOh the wind so soft, and my skin,\n G C\nYeah the sun was so hot upon my side.\n Em7\nOh lookin' out at this happiness\n G C\nI searched for between the sheets,\n Em7\nOh feelin' blind, to realize,\nG C\nAll I was searchin' for... was me.\n Em7 G C\nOh oh-oh, all I was searchin' for was me.\nD\nOh yeah" + }, + { + "id": "bd30dce5-6760-4b10-956d-4fd618ebb860", + "title": "Chorus", + "content": "Em7 D C\nKeep your head up, keep your heart strong no, no, no, no,\nEm7 D C\nKeep your mind set, keep your head whole Oh my, my darlin'.\nEm7 D C\nKeep your head up, keep your heart strong Na, oh, no, no.\nEm7 D C\nKeep your mind set in your ways... And keep your heart strong." + }, + { + "id": "45ab7695-5325-4985-b88d-a64aee8439db", + "title": "Verse 2", + "content": "C Em7\nI saw a friend of mine, the other day,\n G C\nAnd he told me that my eyes were gleamin'.\n Em7\nI said I'd been away, and he knew\n G C\nOh he knew the depths I was meanin'.\n Em7\nAnd it felt so good to see his face,\n G C\nOh the comfort invested in my soul,\n Em7\nto feel the warmth, of his smile,\n G C\nwhen he said, 'I'm happy to have you home.'\nEm7 G C\nOh oh-oh, I'm happy to have you home.\nD\nOhh" + }, + { + "id": "de7cee9c-7438-4f5f-9e6d-edf32e89f0a2", + "title": "Chorus", + "content": "Em7 D C\nKeep your head up, keep your heart strong no, no, no, no,\nEm7 D C\nKeep your mind set, keep your hair long Oh my, my darlin'.\nEm7 D C\nKeep your head up, keep your heart strong Na, oh, no, no.\nEm7 D C\nKeep your mind set in your ways... Keep your heart strong." + }, + { + "id": "bfae0577-02cb-45f4-b1d4-00ae24bdf384", + "title": "Bridge", + "content": "G D C\nAnd I'll always remember you the same.\nG D C\nOh eyes like wildflowers, oh within demons of change.\nD\nOhhh may you find happiness here.\nD\nOhhh may all your hopes all turn out right." + }, + { + "id": "41fc9146-9ca3-446e-9240-35e1326c85af", + "title": "Chorus", + "content": "Em7 D C\nKeep your head up, keep your heart strong no, no, no, no,\nEm7 D C\nKeep your mind set, keep your hair long Oh my, my darlin'.\nEm7 D C\nKeep your head up, keep your heart strong Na, oh, no, no.\nEm7 D C\nKeep your mind set in your ways... Keep your heart strong." + }, + { + "id": "2842c4f0-fb00-4481-b4a8-1b1621eeca79", + "title": "Outro", + "content": "G D C\n'Cause I'll always remember you the same.\nG D C\nOh eyes like wildflowers, oh within demons of change." + } + ], + "artist": "Ben Howard" + }, + { + "id": "706621", + "title": "Slow Dancing In A Burning Room", + "key": null, + "tuning": null, + "label": "ultimate guitar", + "instrument": null, + "starred": false, + "capo": null, + "sections": [ + { + "id": "2c28391b-8bb7-487d-81b2-1ae66b214899", + "title": "Intro", + "content": "John Mayer\n\"Slow Dancing In A Burning Room\"\nTabbed by Dave Ross\n(Chords I use)\n E A D G B E\n - - - - - -\nE- 0 2 2 1 0 0\nC#m7- x 4 6 6 0 0\nAadd9- 5 7 7 6 0 0\nBadd11- 7 9 9 8 0 0\nF#m11- 2 4 4 2 0 0\nC#m7 Aadd9 E \nC#m7 Aadd9 E" + }, + { + "id": "87182e83-7900-4874-a3d7-686c13e5e7de", + "title": "Verse", + "content": "C#m7\nIt's not a silly little moment\n Aadd9 E\nIt's not the storm before the calm\n C#m7\nThis is the deep and dying breath of\n Aadd9 E\nThis love that we've been working on\n C#m7\nCan't seem to hold you like I want to\n Aadd9 E\nSo I can feel you in my arms\n C#m7\nNobody's gonna come and save you\n Aadd9 E\nWe've pulled too many false alarms" + }, + { + "id": "36e84e71-b282-4c68-b83e-11abafa716e3", + "title": "Chorus", + "content": "Badd11\nWe're going down\n C#m7 Aadd9\nAnd you can see it too\n Badd11\nWe're going down\n C#m7 F#m11\nAnd you know that we're doomed\n C#m7 Aadd9 E\nMy Dear we're slow dancing in a burning room" + }, + { + "id": "ad9ddf85-b891-4989-ad86-e6b68152472a", + "title": "Instrumental", + "content": "C#m7 Aadd9 E \nC#m7 Aadd9 E" + }, + { + "id": "8cf1613f-303c-41a8-92e2-c3ea7063469a", + "title": "Verse", + "content": "C#m7\nI was the one you always dreamed of\n Aadd9 E\nYou were the one I tried to draw\n C#m7\nHow dare you say it's nothing to me\n Aadd9 E\nBaby you're the only light I ever saw\n C#m7\nI'll make the most of all the sadness\n Aadd9 E\nYou'll be a bitch because you can\n C#m7\nYou try to hit me just to hurt me so you leave me feeling dirty\n Aadd9 E\nBecause you can't understand" + }, + { + "id": "2fbd1880-2b8c-4639-a6e0-55414e1649cc", + "title": "Chorus", + "content": "Badd11\nWe're going down\n C#m7 Aadd9\nAnd you can see it too\n Badd11\nWe're going down\n C#m7 F#m11\nAnd you know that we're doomed\n C#m7 Aadd9 E\nMy Dear we're slow dancing in a burning room" + }, + { + "id": "c4b0a8f9-52d5-4946-a8c7-7b82fff5a1bf", + "title": "Instrumental", + "content": "C#m7 Aadd9 E \nC#m7 Aadd9 E \nC#m7 Aadd9 E \nC#m7 Aadd9 E" + }, + { + "id": "94f35e39-e264-4945-a94a-9ee9a222906c", + "title": "Bridge", + "content": "F#m11 C#m7 Badd11 F#m11\nGo Cry about it why don't you (repeat 3 times)\n C#m7 Aadd9 E\nMy Dear we're slow dancing in a burning room" + }, + { + "id": "89d61423-f400-4558-bed7-2fb734cf0828", + "title": "Instrumental", + "content": "C#m7 Aadd9 E \nC#m7 Aadd9 E \nC#m7 Aadd9 E \nC#m7 Aadd9 E" + }, + { + "id": "f4d12218-e474-4213-b94c-924fb1f97fde", + "title": "Outro", + "content": "C#m7\nDon't you think we outta know by now\n Aadd9 E\nDon't you think we should've learned somehow\n C#m7\nDon't you think we outta know by now\n Aadd9 E\nDon't you think we should've learned somehow\n C#m7\nDon't you think we outta know by now\n Aadd9 E\nDon't you think we should've learned somehow" + } + ], + "artist": "John Mayer" + }, + { + "id": "1729327", + "title": "Landslide", + "key": null, + "tuning": null, + "label": "ultimate guitar", + "instrument": null, + "starred": false, + "capo": "3", + "sections": [ + { + "id": "ddd7313b-9524-4424-b894-88f0e760f74b", + "title": "Verse 1", + "content": "*Capo 3*\nBasic picking pattern C G/B Am7 D/F# G G/F# Em7\ne|----------------------| e|-0---3---0---2---3---3----3--|\nB|---------X------------| B|-1---0---1---3---3---3----3--|\nG|-----X-----X---X------| G|-0---0---0---2---0---0----0--|\nD|-------X-----X--------| D|-2---2---2---0---0---0----2--|\nA|-X--------------------| A|-3---2---0---0---2---2----2--|\nE|----------------------| E|-X---X---X---2---3---2----0--|\nI play CM7/B instead of G/B. I play the F# note in the D/F# with my thumb.\nI prefer to play 7th chords in the chorus to add distinction, and I love G's.\nC G/B Am7 G/B\n I took my love and I took it down\nC G/B Am7 G/B\n I climbed a mountain and I turned around\n C G/B Am7 G/B\nAnd I saw my reflection in the snow covered hills\n C G/B Am7 G/B\nUntil the landslide brought me down" + }, + { + "id": "d28d6a81-d8fb-4ef8-bb2c-7105b603d87b", + "title": "Verse 2", + "content": "C G/B Am7 G/B\nOh, mirror in the sky what is love\n C G/B Am7 G/B\nCan the child within my heart rise above\n C G/B Am7 G/B\nCan I sail through the changing ocean tides\n C G/B Am7 G/B\nCan I handle the seasons of my life\nC G/B Am7 G/B\n mmm... I don't know\nC G/B Am7 D/F#" + }, + { + "id": "06da1398-d40e-4669-ac47-8341a0daf861", + "title": "Chorus", + "content": "G G/F# Em7\nWell, I've been afraid of changing cause I\nC G/B Am7 D/F#\nbuilt my life around you\n G G/F# Em7\nBut time makes you bolder, children get older\n C G/B Am7 G/B\nand I'm getting older too\nC G/B Am7 G/B (repeat as necessary)\n (insert optional solo here)\nC G/B Am7 D/F#\n (as solo finishes)\n G G/F# Em7\nWell, I've been afraid of changing cause I\nC G/B Am7 D/F#\nbuilt my life around you\n G G/F# Em7\nBut time makes you bolder, children get older\n C G/B Am7 G/B\nand I'm getting older too\n C G/B Am7 G/B\nOh, I'm getting older too Ah" + }, + { + "id": "77d2b266-56cb-4685-946c-c0e66c3c6ddc", + "title": "Verse 3", + "content": "C G/B Am7 G/B\n Ah Take my love and take it down\nC G/B Am7 G/B\n Ah If you climb a mountain and you turn around\n C G/B Am7 G/B\nAnd if you see my reflection in the snow covered hills\n C G/B Am7 G/B\nthen a landslide will bring you down\n C G/B Am7 G/B\nAnd if you see my relfection in the snow covered hills\nWell...\n C G/B Am7 G/B\nA landslide will bring you down. Ohhhh\n C G/B Am7\nWell well, a landslide bring you down" + } + ], + "artist": "Fleetwood Mac" + }, + { + "id": "13586", + "title": "Go Your Own Way", + "key": null, + "tuning": null, + "label": "ultimate guitar", + "instrument": null, + "starred": false, + "capo": null, + "sections": [ + { + "id": "1c727883-07af-479d-9e11-87b1bce6092d", + "title": "Intro", + "content": "Go Your Own Way chords \nFleetwood Mac\nF" + }, + { + "id": "9488faa7-ef3d-4efb-bb6a-33a93132a9ec", + "title": "Verse", + "content": "F C Bb\nLoving you, isn t the right thing to do?\nBb F \nHow can I, ever change things that I feel\nF C Bb\nIf I could, maybe I d give you my world\nBb F\nHow can I, when you wont take it from me?" + }, + { + "id": "ee72e80e-ca99-44c5-879f-6bf272f9d9f7", + "title": "Chorus", + "content": "Dm Bb C \nYou can go your own way, Go your own way\nDm Bb C \nYou can call it Another lonely day\nDm Bb C \nYou can go your own way, Go your own way" + }, + { + "id": "4b157fa7-c7fa-47bb-a8a0-b0ecaac29bec", + "title": "Verse", + "content": "F C Bb\nTell me why, everything turned around?\nBb F\nPacking up, shacking up is all you wanna do\nF C Bb\nIf I could, baby Id give you my world\nBb F\nOpen up, everything s waiting for you" + }, + { + "id": "15c35788-e574-4414-8b0d-d795ab13983e", + "title": "Chorus", + "content": "Dm Bb C \nYou can go your own way, Go your own way\nDm Bb C \nYou can call it Another lonely day\nDm Bb C \nYou can go your own way, Go your own way" + }, + { + "id": "6ecd832e-1bf3-4b23-a20e-fbc5d69c835b", + "title": "Break 1", + "content": "F C Bb F C Bb F C Bb F C Bb F" + }, + { + "id": "dbae4324-ea23-4f54-883e-7ab65dc84c74", + "title": "Chorus", + "content": "Dm Bb C \nYou can go your own way, Go your own way\nDm Bb C \nYou can call it Another lonely day\nDm Bb C \nYou can go your own way, Go your own way" + }, + { + "id": "581dbc5d-1a15-49e5-bb3c-b7947d707f55", + "title": "Solo", + "content": "(over and over during guitar solo)\nDm Bb C" + }, + { + "id": "874c824e-d5af-4968-8bf3-7d790239533f", + "title": "Chorus", + "content": "Dm Bb C \nYou can go your own way, Go your own way\nDm Bb C \nYou can call it Another lonely day\nDm Bb C \nYou can go your own way, Go your own way\n(Fade out on chorus)" + } + ], + "artist": "Fleetwood Mac" + }, + { + "id": "146744", + "title": "Boulevard Of Broken Dreams", + "key": null, + "tuning": null, + "label": "ultimate guitar", + "instrument": null, + "starred": false, + "capo": "1", + "sections": [ + { + "id": "d7e99808-eb26-4723-af95-1ca5130e583a", + "title": "Verse 1", + "content": "Em G D A Em\n I walk a lonely road, the only one that I have ever known\n G D A Em\nDon't know where it goes, but it's home to me and I walk alone" + }, + { + "id": "5b4a81b4-1987-464c-94cf-d52969869360", + "title": "Interlude", + "content": "(Em) G D A" + }, + { + "id": "2a30ebcd-47ff-48d6-98d0-a27599c4776a", + "title": "Verse 2", + "content": "Em G D A Em\n I walk this empty street, on the boulevard of broken dreams\n G D A Em\nWhere the city sleeps, and I'm the only one and I walk alone" + }, + { + "id": "7fbb6feb-7877-4e9c-ad92-f59aa1387f88", + "title": "Interlude", + "content": "(Em) G D A Em\n I walk alone, I walk alone\n(Em) G D A\n I walk alone, I walk a...." + }, + { + "id": "71a8a6ea-99ac-43c4-9989-0736d2952ef5", + "title": "Chorus", + "content": "C G D Em\n My shadow's the only one that walks beside me\nC G D Em\n My shallow heart's the only thing that's beating\nC G D Em\n Sometimes I wish someone out there will find me\nC G B7\n Till then I walk alone" + }, + { + "id": "1aa72ddd-c6e9-48b0-85d0-bc219afad596", + "title": "Interlude", + "content": "Em G D A\nAh-Ah Ah-Ah Ah-Ah Ahhh-Ah\n Em G D A\nhaaa-ah Ah-Ah Ah-Ah Ah-Ah" + }, + { + "id": "493ea979-b4b2-440c-8bec-7a110fe20e09", + "title": "Verse 3", + "content": "Em G\n I'm walking down the line\nD A Em\nThat divides me somewhere in my mind\n G D\nOn the border line of the edge\n A Em\nAnd where I walk alone" + }, + { + "id": "fe5a5f90-a7df-4055-ad68-528646f89786", + "title": "Interlude", + "content": "(Em) G D A" + }, + { + "id": "fae6276f-a646-487d-8d6b-a0621651c1e3", + "title": "Verse 4", + "content": "Em G\n Read between the lines\nD A Em\nWhat's fucked up and everything's alright\n G D A\nCheck my vital signs, to know I'm still alive\n Em\nAnd I walk alone" + }, + { + "id": "32de7ebb-5253-4ee8-b895-64101195e817", + "title": "Interlude", + "content": "(Em) G D A Em\n I walk alone, I walk alone\n(Em) G D A\n I walk alone, I walk a...." + }, + { + "id": "438ec43f-cf25-44d8-945d-e32f29f70291", + "title": "Chorus", + "content": "C G D Em\n My shadow's the only one that walks beside me\nC G D Em\n My shallow heart's the only thing that's beating\nC G D Em\n Sometimes I wish someone out there will find me\nC G B7\n Till then I walk alone" + }, + { + "id": "442decb3-6ad0-41f6-87fb-ca1f1d17effb", + "title": "Interlude", + "content": "Em G D A\nAh-Ah Ah-Ah Ah-Ah Ahhh-Ah\n Em G D A\nhaaa-ah Ah-Ah Ah-Ah I walk alone, I walk a..." + }, + { + "id": "16adf87d-8f92-4774-97d7-87ddb673c212", + "title": "Solo", + "content": "C G D Em\nC G D Em\nC G D Em\nC G B B7" + }, + { + "id": "b8b77deb-4381-449f-8eac-6d03a1b97ac1", + "title": "Verse 5", + "content": "Em G D A Em\nI walk this empty street, on the boulevard of broken dreams\n G D A\nWhere the city sleeps, and I'm the only one and I walk a..." + }, + { + "id": "7445f734-7393-444c-9fbe-3660a7d46d83", + "title": "Chorus", + "content": "C G D Em\n My shadow's the only one that walks beside me\nC G D Em\n My shallow heart's the only thing that's beating\nC G D Em\n Sometimes I wish someone out there will find me\nC G B\n Till then I walk alone" + }, + { + "id": "fa06adc5-271f-4770-9d1f-833b2d848bf0", + "title": "Outro", + "content": "Em C D A/C# G D#5\nEm C D A/C# G D#5\nEm C D A/C# G D#5\nEm C D A/C# G D#5" + } + ], + "artist": "Green Day" + }, + { + "id": "2475920", + "title": "Guiding Light", + "key": null, + "tuning": null, + "label": "ultimate guitar", + "instrument": null, + "starred": false, + "capo": null, + "sections": [ + { + "id": "72d28039-9356-4c97-9ff8-76af6ddf5fae", + "title": "Intro", + "content": "G / / / / / /" + }, + { + "id": "203a9f05-20e6-48a9-ba41-e78573928922", + "title": "Verse", + "content": "G D/G\nAll day permanent red,\n C/G G\nthe glaze on my eyes.\n D/G\nWhen I heard your voice,\n C/G G\nthe distance caught me by surprise again.\n D/G C/G G\nAnd I know you claim that you're alright;\n C G\nbut fix your eyes on me,\n C\nI guess I'm all you have\n G D\nand I swear you'll see the dawn again." + }, + { + "id": "d295d238-efad-42f7-bc11-256e454ff3c6", + "title": "Chorus", + "content": "C G\nWell I know I had it all on the line,\n Em D\nbut don't just sit with folded hands and become blind.\n Am G\n'Cause even when there is no star in sight,\nEm D\nyou'll always be my only guiding light." + }, + { + "id": "8d611dda-b47a-45a1-afd5-96f6efb437ee", + "title": "Verse", + "content": "G D/G\nRelate to my youth,\n C/G G\nwell I'm still in awe of you.\n D/G\nDiscover some new truth,\n C/G G\nand that was always wrapped around you.\nG D/G C/G G\nDon't just slip away in the night,\nG D/G C/G G\ndont just hurl your words from on high." + }, + { + "id": "3cc292bc-8371-41d1-8def-c723335d0889", + "title": "Chorus", + "content": "C G\nWell I know I had it all on the line,\n Em D\nbut don't just sit with folded hands and become blind.\n Am G\n'Cause even when there is no star in sight,\n Em D\nyou'll always be my only guiding light." + }, + { + "id": "5f244384-1077-4e99-a5fd-bc55cba8f03b", + "title": "Bridge", + "content": "Am G\n If we come back and were broken,\nAm Em\n unworthy and ashamed,\nAm G\n give us something to believe in,\nAm D / / / Am / / / G / / / Em / / / D / / /\n and you know well go your way" + }, + { + "id": "5c91b417-e8d6-48f6-9f80-97e20206f2f9", + "title": "Chorus", + "content": "C G\nWell I know I had it all on the line,\n Em D\nbut don't just sit with folded hands and become blind.\n Am G\n'Cause even when there is no star in sight,\n Em D\nyou'll always be my only guiding light. [Repeat Chorus - resolve to G]" + } + ], + "artist": "Mumford & Sons" + }, + { + "id": "709013", + "title": "Mamma Mia", + "key": null, + "tuning": null, + "label": "ultimate guitar", + "instrument": null, + "starred": false, + "capo": null, + "sections": [ + { + "id": "e48f1d87-6c81-4792-a472-3373e0182bf1", + "title": "Verse 1", + "content": "D G\nI've been cheated by you since I don't know when\nD G\nSo I made up my mind, it must come to an end\nD5 D+5\nLook at me now, will I ever learn?\nD6 D7 G\nI don't know how but I suddenly lose control\nG A\nThere's a fire within my soul" + }, + { + "id": "df43a50b-c991-4a9a-8883-fca00c4b9f61", + "title": "Pre-Chorus", + "content": "G D A\nJust one look and I can hear a bell ring\nG D A\nOne more look and I forget everything, o-o-o-oh" + }, + { + "id": "43c59456-2235-4289-8e9f-78575e17b113", + "title": "Chorus", + "content": "D\nMamma mia, here I go again\nG\nMy my, how can I resist you?\nD\nMamma mia, does it show again?\nG\nMy my, just how much I've missed you\nD A\nYes, I've been brokenhearted\nBm F#m\nBlue since the day we parted\nG A\nWhy, why did I ever let you go?\nD Bm\nMamma mia, now I really know,\nG A\nMy my, I could never let you go." + }, + { + "id": "b8d99912-e4c2-482f-92e5-06242c352dbf", + "title": "Verse 2", + "content": "D G\nI've been angry and sad about things that you do\nD G\nI can't count all the times that I've told you \"we're through\"\nD5 D+5\nAnd when you go, when you slam the door\nD6 D7 G\nI think you know that you won't be away too long\nG A\nYou know that I'm not that strong" + }, + { + "id": "6bf2e85c-bbb0-42b7-8a9b-362c4490a84e", + "title": "Pre-Chorus", + "content": "G D A\nJust one look and I can hear a bell ring\nG D A\nOne more look and I forget everything" + }, + { + "id": "d12a28c9-bbea-4001-9306-79bfbc71e2c9", + "title": "Chorus", + "content": "D\nMamma mia, here I go again\nG\nMy my, how can I resist you?\nD\nMamma mia, does it show again\nG\nMy my, just how much I've missed you?\nD A\nYes, I've been brokenhearted\nBm F#m\nBlue since the day we parted\nG A\nWhy, why did I ever let you go?\nD Bm\nMamma mia, even if I say\nG A\n\"Bye bye, leave me now or never\"\nD\nMamma mia, it's a game we play\nG\n\"Bye bye\" doesn't mean forever\nD\nMamma mia, here I go again\nG\nMy my, how can I resist you?\nD\nMamma mia, does it show again\nG\nMy my, just how much I've missed you?\nD A\nYes, I've been brokenhearted\nBm F#m\nBlue since the day we parted\nG A\nWhy, why did I ever let you go?\nD Bm\nMamma mia, now I really know\nG A\nMy my, I could never let you go" + }, + { + "id": "4d4e827e-2360-4c23-a7ed-fbb56aee1d37", + "title": "Outro", + "content": "D G D G" + } + ], + "artist": "ABBA" + }, + { + "id": "1994861", + "title": "Into The Sun", + "key": null, + "tuning": null, + "label": "ultimate guitar", + "instrument": null, + "starred": false, + "capo": null, + "sections": [ + { + "id": "2fe6bd9e-aa7b-4d7a-b5fd-6560a5215104", + "title": "Intro", + "content": "E F# E F#" + }, + { + "id": "bc5c2b08-6188-4a95-b197-73219dad799b", + "title": "Verse", + "content": "C#m E \nStealing Glances at the pavement\nB F#\nThe weight it comes too soon\nC#m E\nSupposed to keep on rolling\nB F#\nBut the race is nothing new\nC#m \nAs the train, it starts to go,\nE\nAnd it takes our bodies slow\nB F#\nAnd I know you wanted to for some time now\nC#m\nAll this time you're gone\nE\nIn your wake I stumble on\nB F#\nBut the smoke is nothing that I haven't seen\nE G#m F#\nSo I walk into the sun\nB E\nI thought you'd be there\nE F#\nBut you could fool anyone\nE G#m F#\nIn the red water dust\n B E\nWill I see you soon,\n G#m F#\nOr did we move on?\nC#m E B F#\nOooooohh\nC#m E\nThe crowd begins to break up\nB F#\nThey're calling their goodbyes\nC#m E\nMy head's above the water\nB F#\nBut I'm drowning in your eyes\nE G#m F#\nSo I walk into the sun\nB E\nI thought you'd be there\nE F#\nBut you could fool anyone\nE G#m F#\nGot a head full of dust\n B E\nWill I see you soon,\n G#m F#\nOr did we move on?" + }, + { + "id": "e3832b3a-4db9-4d4c-bf7d-cc71f6a7e508", + "title": "Outro", + "content": "E\nWell the race is long, you can't relax\nF#\nAnd I don't belong so I'm headed back\nE\nIt's getting hard, you feel the fear\nF#\nI'm seeing red, wish you were here\nE G#m F#\nAnd I walk into the sun\nB E\nI thought you'd be there\nE F#\nBut you could fool anyone\nE G#m F#\nGot a head full of dust\n B E\nWill I see you soon,\n G#m F#\nOr did we move on?\nF# E\nWill I see you soon,\n G#m F#\nOr did we move on?\nB E\nWill I see you soon,\nG#m\nOr do we move on?" + } + ], + "artist": "Sons Of The East" + }, + { + "id": "1196622", + "title": "Lifes For The Living", + "key": null, + "tuning": null, + "label": "ultimate guitar", + "instrument": null, + "starred": false, + "capo": "6", + "sections": [ + { + "id": "2c5227ed-9937-4d2d-a464-58f6b20d5b41", + "title": "Intro", + "content": "Chords:\nEm7 020030\nGadd4 320013\nFmaj7 103210\nAm Dm C G C Em7 Am Dm C G Gadd4 G" + }, + { + "id": "955ea37d-8da7-4c47-8cf5-f779585b55fc", + "title": "Verse", + "content": "Am Fmaj7\nWell grey clouds wraped round the town like elastic\n G C Em7\nCars stood like toys made of Taiwanese plastic\n Am Fmaj7 G Gadd4 G\nThe boy laughed at the spastic dancing around in the rain\n Am Fmaj7\nWhile laundrettes cleaned clothes, high heals rub toes\n G C Em7\nPuddles splashed huddles of bus stop crows\n Am Fmaj7 G Gadd4 G\nDressed in their suits and their boots well they all look the same" + }, + { + "id": "cc959f85-8fcd-4bf8-8a40-742eb5cad20f", + "title": "Bridge", + "content": "F G C Em7 Am G\nI took myself down to the cafe to find all the boys lost in books and crackling vinyl\n F G C C7\nAnd carved out a poem above the urinal that read" + }, + { + "id": "97f44565-f6d6-4244-99d2-fe142f3312dc", + "title": "Chorus", + "content": "F \nDon't you cry for the lost\n G \nSmile for the living\n C Em7 Am G\nGet what you need and give what you're given\n F G\nLife's for the living so live it\n Am\nOr you're better off dead\nDm C G C Em7 Am Dm C G Gadd4 G" + }, + { + "id": "8560ae5e-bee8-446b-bcb3-1f38ca349f56", + "title": "Verse", + "content": "Am Fmaj7\nWhile the evening pulled the moon out of it's packet\n G C Em7\nStars shone like buttons on an old man's jacket\n Am Fmaj7 G Gadd4 G\nWe needed a nail but we tacked it 'til it fell of the wall\n Am Fmaj7\nWhile pigeon's pecked trains, sparks flew like planes\n G C Em7\nThe rain showed the rainbows in the oil stains\n Am Fmaj7 G Gadd4 G\nAnd we all had new iPhones but no one had no one to call" + }, + { + "id": "803f72e9-5353-41fc-baec-b14a09d128be", + "title": "Bridge", + "content": "F G \nAnd I stumbled down to the stomach of the town\n C Em7 Am G\nWhere the widow takes memories to slowly drown\n F G C C7\nWith a hand to the sky and a mist in her eye she said" + }, + { + "id": "f5113fca-b634-4bf8-bed4-45ae917b2b5e", + "title": "Chorus", + "content": "F \nDon't you cry for the lost\n G \nSmile for the living\n C Em7 Am G\nGet what you need and give what you're given\n F G\nLife's for the living so live it\n Am\nOr you're better off dead\n \nEm F C Em7 Am Em G Gadd4 G" + }, + { + "id": "e7b094b5-476b-4f35-8cbe-471bd7f6a421", + "title": "Verse", + "content": "Am Fmaj7\nWell I'm sick of this town, this blind man's forage\n G C Em7\nThey take your dreams down and stick them in storage\n Am Fmaj7 G Gadd4 G\nYou can have them back son when you've paid off your mortgage and loans\n Am Fmaj7\nOh hell with this place, I'll go it my own way\n G C Em7\nI'll stick out my thumb and I trudge down the highway\n Am Fmaj7 G Gadd4 G\nSomeday someone must be going my way home" + }, + { + "id": "f6089c87-2b83-4b80-8323-8def96841aba", + "title": "Bridge", + "content": "F G\nTill then I'll make my bed from a disused car\n C Em7 Am G\nWith a mattress of leaves and a blanket of stars\n F G C C7\nAnd I'll stitch the words into my heart with a needle and thread" + }, + { + "id": "7efd10ec-4e2c-4219-870f-22c62247701d", + "title": "Chorus", + "content": "F \nDon't you cry for the lost\n G \nSmile for the living\n C Em7 Am G\nGet what you need and give what you're given\n F G\nYou know life's for the living so live it\n C C7\nOr you're better off dead" + }, + { + "id": "bcae63d9-97b7-4e05-9c15-f20d95c4bee2", + "title": "Outro", + "content": "F \nDon't you cry for the lost\n G \nSmile for the living\n C Em7 Am G\nGet what you need and give what you're given\n F G\nLife's for the living so live it \n \nOr you're better off dead" + } + ], + "artist": "Passenger" + } +] \ No newline at end of file diff --git a/assets/initial_notes.json b/assets/initial_notes.json new file mode 100644 index 0000000..bb7c65b --- /dev/null +++ b/assets/initial_notes.json @@ -0,0 +1,179 @@ +{ + "notes": [ + { + "id": "8aefd5f1-2a88-4b9f-a719-67160fb9840d", + "title": "The Parting Glass", + "createdAt": "2021-9-19-20-0-1-204-292", + "lastModified": "2021-9-19-21-25-38-160-353", + "key": "A", + "tuning": "EADGBE", + "capo": null, + "instrument": null, + "label": "traditional", + "artist": "", + "starred": 0, + "scrollOffset": 1.0, + "zoom": 1.0, + "bpm": null, + "color": null, + "sections": [ + { + "title": "Verse 1", + "content": "F#m D A E\nOf all the money that e'er I had\n F#m D A E\nI've spent it in good company\n F#m D A E\nAnd all the harm that e'er I've done\n F#m D Bm F#m\nAlas it was to none but me\n A D A E\nAnd all I've done for want of wit\n Bm A E F#m E\nTo memory now I can't recall\n F#m D A E\nSo fill to me the parting glass\n F#m D Bm F#m\nGood night and joy be with you all", + "id": "5089ec8a-09a9-49ab-bdfa-ecec503bf814", + "lastModified": "2021-9-19-20-0-1-204-378", + "createdAt": "2021-9-19-20-0-1-204-378" + }, + { + "title": "Verse 2", + "content": "F#m D A E\nOf all the comrades that e'er I had\n F#m D A E\nThey are sorry for my going away\n F#m D A E\nAnd all the sweethearts that e'er I had\n F#m D Bm F#m\nThey would wish me one more day to stay\n A D A E\nBut since it falls unto my lot\n Bm A E F#m E\nThat I should rise and you should not\n F#m D A E\nI'll gently rise and I'll softly call\n F#m D Bm F#m\nGood night and joy be with you all", + "id": "06a9636e-9907-43ac-9dc9-a7489f2cb97c", + "lastModified": "2021-9-19-20-0-1-204-379", + "createdAt": "2021-9-19-20-0-1-204-379" + }, + { + "title": "Verse 3", + "content": "F#m D A E\nA man may drink and not be drunk\n F#m D A E\nA man may fight and not be slain\n F#m D A E\nA man may court a pretty girl\n F#m D Bm F#m\nAnd perhaps be welcomed back again\n A D A E\nBut since it has so ought to be\n Bm A E F#m E\nBy a time to rise and a time to fall\n F#m D A E\nCome fill to me the parting glass\n F#m D A E\nGoodnight and joy be with you all\n F#m D Bm F#m\nGoodnight and joy be with you all", + "id": "05a29601-b485-4189-81cc-e03654d8400c", + "lastModified": "2021-9-19-20-0-1-204-381", + "createdAt": "2021-9-19-20-0-1-204-380" + } + ], + "audioFiles": [], + "discarded": 0 + }, + { + "id": "1ce6c58c-9874-4e11-ae22-5a038d261fe4", + "title": "Happy Birthday", + "createdAt": "2021-9-19-21-24-10-207-227", + "lastModified": "2021-9-19-21-24-57-852-220", + "key": "D", + "tuning": "EADGBE", + "capo": "2", + "instrument": "Guitar", + "label": "traditional", + "artist": null, + "starred": 0, + "scrollOffset": 1.0, + "zoom": 1.0, + "bpm": null, + "color": null, + "sections": [ + { + "title": "Chorus", + "content": "\n C G7\nHappy Birthday to You\n\n G7 C\nHappy Birthday to You\n\n C F\nHappy Birthday dear -NAME-\n\n C G7 C\nHappy Birthday to You", + "id": "1101766f-79e7-4c6d-885f-95ac51864a04", + "lastModified": "2021-9-19-21-24-10-208-283", + "createdAt": "2021-9-19-21-24-10-208-284" + } + ], + "audioFiles": [], + "discarded": 0 + }, + { + "id": "e2a2e5fb-0679-4aad-9336-ebbdbffe1d66", + "title": "Crossroad Blues", + "createdAt": "2021-9-19-21-52-7-833-889", + "lastModified": "2021-9-19-22-0-49-925-180", + "key": "A#", + "tuning": "EADGBE", + "capo": "1", + "instrument": "Guitar", + "label": "95bpm", + "artist": "Robert Johnson", + "starred": 0, + "scrollOffset": 1.0, + "zoom": 0.8573749999999999, + "bpm": null, + "color": null, + "sections": [ + { + "title": "Intro", + "content": "A E", + "id": "0c817242-0c8c-4eca-aafe-0b9e9870ad16", + "lastModified": "2021-9-19-21-52-5-279-193", + "createdAt": "2021-9-19-21-52-5-279-193" + }, + { + "title": "Verse 1", + "content": "A D A\nI went to the crossroad, fell down on my knees\n D A\nI went to the crossroad, fell down on m kne[A]es\nE\nAsked the Lord above, \"Have mercy now\nD A\nSave poor Bob if you please\"", + "id": "8edfd033-020e-4209-878e-481239c027df", + "lastModified": "2021-9-19-21-52-5-381-193", + "createdAt": "2021-9-19-21-52-5-381-193" + }, + { + "title": "Verse 2", + "content": "A D A\nYeoo, standin' at the crossroad, tried to flag a ride\nD A\nStanding at the crossroads, I tried to flag a ride\nE D A\nDidn't nobody seem to know me, babe, everybody pass me by", + "id": "814a7755-4709-4cb2-8cd9-c7eb4ab62814", + "lastModified": "2021-9-19-21-52-5-501-193", + "createdAt": "2021-9-19-21-52-5-502-193" + }, + { + "title": "Verse 3", + "content": "A D A\nAnd if I’m going downwards, God’s gonna catch me in\nD A\nHe, eee, eee, what’s God gonna get me in\nE D A\nI haven’t got no lovin’ sweet woman, Bob, Bob is seeing my girl", + "id": "334c45af-f67a-4fa0-9c5c-c7258337db2f", + "lastModified": "2021-9-19-21-53-43-315-930", + "createdAt": "2021-9-19-21-53-43-315-930" + }, + { + "title": "Verse 4", + "content": "A\nYou can run, you can run, tell my friend poor Willie Brown\nD7 A7\nYou can run, tell my friend Willie Brown\nE7\nOh, that I stand at the crossroad, babe\nD7 A\nI believe I’m sinkin' down", + "id": "b605e87e-502e-4a5a-9b19-aabc0a7e131d", + "lastModified": "2021-9-19-21-53-43-316-34", + "createdAt": "2021-9-19-21-53-43-316-34" + } + ], + "audioFiles": [], + "discarded": 0 + }, + { + "id": "676b0ac5-44b1-4133-9fb3-51dd919f57ee", + "title": "House Of The Rising Sun", + "createdAt": "2021-9-19-21-27-17-613-299", + "lastModified": "2021-9-19-21-45-37-44-106", + "key": null, + "tuning": "GCEA", + "capo": null, + "instrument": null, + "label": "ukulele", + "artist": "", + "starred": 0, + "scrollOffset": 1.0, + "zoom": 1.0, + "bpm": null, + "color": null, + "sections": [ + { + "title": "Intro", + "content": " Am C D F\nThere is a house in New Orleans\n Am C E E\nThey call the Risin' Sun\n Am C D F\nAnd it's been the ruin of many a poor boy.\n Am E Am\nAnd God, I know I'm one.\n\nC, D, F, Am, E, Am, E", + "id": "c7bb5035-bb7e-4a30-a55e-e6e47b5eb7f6", + "lastModified": "2021-9-19-21-31-58-781-403", + "createdAt": "2021-9-19-21-31-58-781-404" + }, + { + "title": "Verse 1", + "content": " Am C D F\nMy mother was a tailor.\n Am C E E\nShe sewed my new blue jeans.\n Am C D F\nMy father was a gamblin' man\nAm E Am\nDown in New Or-leans.\n\nC, D, F, Am, E, Am, E\n\n Am C D F\nNow, the only thing a gambler needs\n Am C E E\nIs a suitcase and a trunk\n Am C D F\nAnd the only time that he's satis-fied\n Am E Am\nIs when he's on a drunk\n\nC, D, F, Am, E, Am, E", + "id": "a39be2d8-c34c-46b3-870d-bbf2e4512eb1", + "lastModified": "2021-9-19-21-27-17-613-399", + "createdAt": "2021-9-19-21-27-17-613-399" + }, + { + "title": "Verse 2", + "content": " Am C D F\nOh, Mother, tell your children\n Am C E E\nNot to do what I have done.\nAm C D F\nSpend your lives in sin and misery\n Am E Am\nIn the house of the risin' sun.\n\nC, D, F, Am, E, Am, E\n\n Am C D F\nWell, I've got one foot on the platform.\n Am C E E\nthe other foot on the train.\n Am C D F\nI'm goin' back to New Orleans\n Am E Am\nTo wear that ball and chain.\n\nC, D, F, Am, E, Am, E", + "id": "1aec077e-e4ab-4ed7-887c-b421a2de29cb", + "lastModified": "2021-9-19-21-27-17-613-400", + "createdAt": "2021-9-19-21-27-17-613-400" + }, + { + "title": "Chorus", + "content": " Am C D F\nThere is a house in New Orleans\n Am C E E\nThey call the Risin' Sun\n Am C D F\nAnd it's been the ruin of many a poor boy.\n Am E Am\nAnd God, I know I'm one.\n\nC, D, F, Am, E, \nAm, D, Am, D, Am, D", + "id": "ecfaa248-7d88-4d64-9a2f-85997a9963a9", + "lastModified": "2021-9-19-21-30-51-684-104", + "createdAt": "2021-9-19-21-30-51-684-106" + } + ], + "audioFiles": [], + "discarded": 0 + } + ] +} \ No newline at end of file diff --git a/pubspec.yaml b/pubspec.yaml index 824c5c6..f2fe520 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -15,7 +15,7 @@ publish_to: "none" # Remove this line if you wish to publish to pub.dev # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. # Read more about iOS versioning at # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html -version: 1.0.1+1 +version: 1.1.1 environment: sdk: ">=2.7.0 <3.0.0" @@ -71,6 +71,7 @@ flutter: # To add assets to your application, add an assets section, like this: assets: - assets/initial_data.json + - assets/initial_notes.json # - assets/fonts/RobotoMono.ttf # - assets/fonts/arial.ttf # - assets/fonts/Hind-Bold.ttf From ba1ae799ee5114ffe98c517ed4af1f035aec631c Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 26 Sep 2021 23:34:02 +0200 Subject: [PATCH 109/146] Add delete note in NoteEditor --- lib/dialogs/confirmation_dialogs.dart | 35 +++++++++++++++++++++++++++ lib/note_editor.dart | 17 +++++++++++-- 2 files changed, 50 insertions(+), 2 deletions(-) diff --git a/lib/dialogs/confirmation_dialogs.dart b/lib/dialogs/confirmation_dialogs.dart index a561dfe..8d38e49 100644 --- a/lib/dialogs/confirmation_dialogs.dart +++ b/lib/dialogs/confirmation_dialogs.dart @@ -2,6 +2,41 @@ import 'package:flutter/material.dart'; import 'package:sound/local_storage.dart'; import 'package:sound/model.dart'; +showDeleteDialog(BuildContext context, Note note, Function onDelete) async { + bool isInCollection = + await LocalStorage().getNumCollectionsByNoteId(note.id) > 0; + + String message = "Are you sure you want to delete this note?"; + + if (isInCollection) { + message = + "Note is part of a collection. When removing this note it will be automatically removed from its collections. \n Are you sure you want to delete this note?"; + } + + showDialog( + context: context, + builder: (context) { + return AlertDialog( + content: Text(message), + actions: [ + TextButton( + onPressed: () { + Navigator.of(context).pop(); + }, + child: Text("No")), + ElevatedButton( + onPressed: () { + onDelete(); + Future.delayed(Duration(milliseconds: 100), () { + onDelete(); + }); + }, + child: Text("Yes")) + ], + ); + }); +} + showDeleteForeverDialog({ BuildContext context, Note note, diff --git a/lib/note_editor.dart b/lib/note_editor.dart index 4da291f..0466739 100644 --- a/lib/note_editor.dart +++ b/lib/note_editor.dart @@ -5,6 +5,7 @@ import 'package:flutter_flux/flutter_flux.dart' show StoreWatcherMixin; import 'package:flutter_share/flutter_share.dart'; import 'package:sound/dialogs/add_to_collection_dialog.dart'; import 'package:sound/dialogs/color_picker_dialog.dart'; +import 'package:sound/dialogs/confirmation_dialogs.dart'; import 'package:sound/dialogs/import_dialog.dart'; import 'package:sound/dialogs/permissions_dialog.dart'; import 'package:sound/editor_views/additional_info.dart'; @@ -82,8 +83,14 @@ class NoteEditorState extends State RecorderBottomSheetStore recorderStore; NoteEditorStore store; GlobalKey _globalKey = GlobalKey(); - List popupMenuActions = ["export", "share", "copy", "add"]; - List popupMenuActionsLong = ["Export", "Share", "Copy", "Add to Set"]; + List popupMenuActions = ["export", "share", "copy", "add", 'delete']; + List popupMenuActionsLong = [ + "Export", + "Share", + "Copy", + "Add to Set", + "Delete" + ]; bool get useTabs => widget.view == EditorView.tabs; final Key bottomSheetKey = Key('bottomSheet'); Map dismissables = {}; @@ -218,6 +225,12 @@ class NoteEditorState extends State case "add": showAddToCollectionDialog(context, store.note); break; + case 'delete': + showDeleteDialog(context, store.note, () async { + await LocalStorage().deleteNote(store.note); + Navigator.of(context).pop(); + }); + break; default: break; } From 73d8024acb69d2cdd29702d152991f0cf61b05a3 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 26 Sep 2021 23:34:36 +0200 Subject: [PATCH 110/146] Update lock --- pubspec.lock | 105 ++++++++++++++++++++++++++++++++++----------------- 1 file changed, 70 insertions(+), 35 deletions(-) diff --git a/pubspec.lock b/pubspec.lock index e3f9919..bc82a09 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -35,7 +35,7 @@ packages: name: barcode url: "https://pub.dartlang.org" source: hosted - version: "1.17.0" + version: "1.17.1" boolean_selector: dependency: transitive description: @@ -106,6 +106,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.2.0" + ffi: + dependency: transitive + description: + name: ffi + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.2" file: dependency: transitive description: @@ -127,13 +134,6 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.3.1" - flushbar: - dependency: "direct main" - description: - name: flushbar - url: "https://pub.dartlang.org" - source: hosted - version: "1.10.4" flutter: dependency: "direct main" description: flutter @@ -173,14 +173,14 @@ packages: name: flutter_plugin_android_lifecycle url: "https://pub.dartlang.org" source: hosted - version: "1.0.8" + version: "1.0.11" flutter_share: dependency: "direct main" description: name: flutter_share url: "https://pub.dartlang.org" source: hosted - version: "1.0.2+1" + version: "1.0.5" flutter_test: dependency: "direct dev" description: flutter @@ -218,7 +218,7 @@ packages: name: image url: "https://pub.dartlang.org" source: hosted - version: "2.1.14" + version: "2.1.19" intl: dependency: transitive description: @@ -247,6 +247,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.3.0" + package_info: + dependency: transitive + description: + name: package_info + url: "https://pub.dartlang.org" + source: hosted + version: "0.4.3+4" path: dependency: "direct main" description: @@ -267,7 +274,7 @@ packages: name: path_provider url: "https://pub.dartlang.org" source: hosted - version: "1.6.14" + version: "1.6.28" path_provider_linux: dependency: transitive description: @@ -281,21 +288,28 @@ packages: name: path_provider_macos url: "https://pub.dartlang.org" source: hosted - version: "0.0.4+3" + version: "0.0.4+8" path_provider_platform_interface: dependency: transitive description: name: path_provider_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "1.0.3" + version: "1.0.4" + path_provider_windows: + dependency: transitive + description: + name: path_provider_windows + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.5" pdf: dependency: "direct main" description: name: pdf url: "https://pub.dartlang.org" source: hosted - version: "1.11.1" + version: "1.13.0" pedantic: dependency: transitive description: @@ -309,35 +323,35 @@ packages: name: permission_handler url: "https://pub.dartlang.org" source: hosted - version: "5.0.1+1" + version: "5.1.0+2" permission_handler_platform_interface: dependency: transitive description: name: permission_handler_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "2.0.1" + version: "2.0.2" petitparser: dependency: transitive description: name: petitparser url: "https://pub.dartlang.org" source: hosted - version: "3.0.4" + version: "3.1.0" platform: dependency: transitive description: name: platform url: "https://pub.dartlang.org" source: hosted - version: "2.2.1" + version: "3.0.0" plugin_platform_interface: dependency: transitive description: name: plugin_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "1.0.2" + version: "1.0.3" process: dependency: transitive description: @@ -358,35 +372,49 @@ packages: name: quiver url: "https://pub.dartlang.org" source: hosted - version: "2.1.3" + version: "2.1.5" receive_sharing_intent: dependency: "direct main" description: name: receive_sharing_intent url: "https://pub.dartlang.org" source: hosted - version: "1.4.1" + version: "1.4.5" + sentry: + dependency: transitive + description: + name: sentry + url: "https://pub.dartlang.org" + source: hosted + version: "4.0.6" + sentry_flutter: + dependency: "direct main" + description: + name: sentry_flutter + url: "https://pub.dartlang.org" + source: hosted + version: "4.0.6" shared_preferences: dependency: "direct main" description: name: shared_preferences url: "https://pub.dartlang.org" source: hosted - version: "0.5.10" + version: "0.5.12+4" shared_preferences_linux: dependency: transitive description: name: shared_preferences_linux url: "https://pub.dartlang.org" source: hosted - version: "0.0.2+2" + version: "0.0.2+4" shared_preferences_macos: dependency: transitive description: name: shared_preferences_macos url: "https://pub.dartlang.org" source: hosted - version: "0.0.1+10" + version: "0.0.1+11" shared_preferences_platform_interface: dependency: transitive description: @@ -401,6 +429,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.1.2+7" + shared_preferences_windows: + dependency: transitive + description: + name: shared_preferences_windows + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.2+3" sky_engine: dependency: transitive description: flutter @@ -483,13 +518,6 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.3.0" - utf: - dependency: transitive - description: - name: utf - url: "https://pub.dartlang.org" - source: hosted - version: "0.9.0+5" uuid: dependency: "direct main" description: @@ -504,20 +532,27 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.1.0" + win32: + dependency: transitive + description: + name: win32 + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.5" xdg_directories: dependency: transitive description: name: xdg_directories url: "https://pub.dartlang.org" source: hosted - version: "0.1.0" + version: "0.1.2" xml: dependency: transitive description: name: xml url: "https://pub.dartlang.org" source: hosted - version: "4.2.0" + version: "4.5.1" yaml: dependency: transitive description: @@ -526,5 +561,5 @@ packages: source: hosted version: "2.2.1" sdks: - dart: ">=2.12.0 <3.0.0" + dart: ">=2.13.0 <3.0.0" flutter: ">=1.22.2" From 337e30c6d728958409e68a67f2f7fa40c86a541e Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 3 Oct 2021 14:57:17 +0200 Subject: [PATCH 111/146] Update Launcher Icon and initial json --- .../src/prod/res/mipmap-hdpi/ic_launcher.png | Bin 4802 -> 4026 bytes .../src/prod/res/mipmap-mdpi/ic_launcher.png | Bin 3315 -> 2797 bytes .../src/prod/res/mipmap-xhdpi/ic_launcher.png | Bin 6117 -> 4996 bytes .../prod/res/mipmap-xxhdpi/ic_launcher.png | Bin 9041 -> 7151 bytes .../prod/res/mipmap-xxxhdpi/ic_launcher.png | Bin 11368 -> 8857 bytes assets/initial_notes.json | 30 ++++++++++-------- assets/launcher_icon/icon.png | Bin 39290 -> 30272 bytes .../AppIcon-prod-1024x1024@1x.png | Bin 80729 -> 57775 bytes .../AppIcon-prod-20x20@1x.png | Bin 1370 -> 1250 bytes .../AppIcon-prod-20x20@2x.png | Bin 2700 -> 2391 bytes .../AppIcon-prod-20x20@3x.png | Bin 4091 -> 3495 bytes .../AppIcon-prod-29x29@1x.png | Bin 1998 -> 1744 bytes .../AppIcon-prod-29x29@2x.png | Bin 4001 -> 3406 bytes .../AppIcon-prod-29x29@3x.png | Bin 5798 -> 4729 bytes .../AppIcon-prod-40x40@1x.png | Bin 2700 -> 2391 bytes .../AppIcon-prod-40x40@2x.png | Bin 5191 -> 4382 bytes .../AppIcon-prod-40x40@3x.png | Bin 7651 -> 6191 bytes .../AppIcon-prod-60x60@2x.png | Bin 7651 -> 6191 bytes .../AppIcon-prod-60x60@3x.png | Bin 10770 -> 8219 bytes .../AppIcon-prod-76x76@1x.png | Bin 5098 -> 4254 bytes .../AppIcon-prod-76x76@2x.png | Bin 9513 -> 7525 bytes .../AppIcon-prod-83.5x83.5@2x.png | Bin 9780 -> 7694 bytes 22 files changed, 17 insertions(+), 13 deletions(-) diff --git a/android/app/src/prod/res/mipmap-hdpi/ic_launcher.png b/android/app/src/prod/res/mipmap-hdpi/ic_launcher.png index 357570293687409e0fd6bb9c64dd9f1444ead50f..4425457f3820564258a54c985adea7398b7c196d 100755 GIT binary patch delta 3999 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 FV1oa&vVH&n delta 4781 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 Hu0mjfpbI?C diff --git a/android/app/src/prod/res/mipmap-mdpi/ic_launcher.png b/android/app/src/prod/res/mipmap-mdpi/ic_launcher.png index d0a218ebc2edb91bd3c39edfb1ece7a6d9b9f168..fbf59d32d37856b824f28e49625db8356074afaa 100755 GIT binary patch delta 2760 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 IRqL?-0ZM9wcK`qY literal 9041 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 G;Qs*uynGk{ diff --git a/android/app/src/prod/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/prod/res/mipmap-xxxhdpi/ic_launcher.png index 86c355d9bf57896849095cf6fc46d0a76bba4c4f..5f77e94da531ab2d41c873a87bb3e0bfca4ac20c 100755 GIT binary patch literal 8857 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 bkF>1kFMt26%(DUhaspCQ(p0RKHw*h8lEA## literal 11368 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 diff --git a/ios/Runner/Assets.xcassets/AppIcon-prod.appiconset/AppIcon-prod-1024x1024@1x.png b/ios/Runner/Assets.xcassets/AppIcon-prod.appiconset/AppIcon-prod-1024x1024@1x.png index 32c2298a245f9c09647864a83475645ce4434c6d..6424f58701c037c11a9bec43f032279e7869a806 100644 GIT binary patch literal 57775 zcmeFZc{r4996$ODp|bX7iITkamSm|=mKdc~L`e1t*>_nIX2x4o6s;q&m26qYI?6UA zsRm;o3`T_^1{sDi+quX4JLfv*T<83CmOsvQ=DHe_xu1LeuAlGc_R#Xm1@Y|)+aU-N zzjX1e6$EVoAGbhTg~1P$;*q-$1iR;BVq$s8#AIJ^XppCmzXt@}&WL?#c(K)ZPa6XM z&gzIngw&32mYHe~5_NrL5-pYcx0mX_a@r6wS9m5ZccG{KGkM_Wp67Jjz=eC*tS3MD(-{zpTbeQCelToyb2X#=jZ zBRt*YqT7zkQp(2X#XW3pC|@Z)pZHLlcIXuQZZhIPs#)3bU3#*X@!P-sxyx%=4D9?g zdGEFKCCFJ5$2lf&FCxx!42Mq%sE-oZk`;HPl!iTlPP6Ep3s8^PvJxODM+z_>7u1ME z#~pG$e&E9P?iIQ1%`Ev?Yl#`W&?mpZpwie3BS`+YYPjH@Jp#GszPqg5j*RpQ;$``) zt_gBbp|`vJrB@(`GJWanX`9=y`LXDXYXh-7UYkdP{H`ZSf9vkg5%_nzit61$y}m6R z-(H2>fRT0cjeuJLy%;4*fBSyk0^LhV5`W28)5qcY3M=3>E`NIDbM?Vly={+RGJk(L zQh2q+z{PUQeHb!(t)xavFqE26#n78ujX5>G(22e^n4#yD*=Q6^t7+E<;sHV3%U`|( zZhnFa;d~hauLEd-|2}NX`R}K(fXaU#on>2T38bppZMA7w61dX4%MZlc2=zNd&bU{=mhcuC0#RJb8hfKB4=@*e?kGBeQL<5$1&jLup*(67o z%7#5fk5$0peXL;<4eE}#2GTN;N?cA!8a>G0nRYL;2g%fHTe>|OyS{LOj^GShmd~%( zN<)90hwU>jh<~9Li@BA#sHWQ|30hZ6C{pIOP~4~~YsDB&mmExG%Yg?1#_0)NYy>)J(OrRiTW$7T)`7#kk-|^a|LD%e8bbj+b5; zQv`HlrKQcSI?eMru?}y?1&t_WKO8-%EhU7mE`-WEj*}}!;Gofy^fx*%{|We5Xfh41 zSby4E4Qxo7XPOd@Ka<`UDWWIZ0=Ft8ff-y0=l=DdtQgm6@9q9D(LW@9+WjgR^}a`9 zo>qhj|B17?f0}LDKkUK*tDM6#Lumrg?}z`7snGxVBsahLe`7cPZyso0lw)mRV>B5T0H;)X z5aeH<49fCBq|5foA3wOI(+BaDtc-PVsq(kp*x1mha8js<^>%w{I^{x$#Tkr+)_GI{ zk=lO~PsieG)eO`%?OkxB(Nq6iDV|F~${25nHi^)qPy=fljt7l5cu~7DSx%9WYs*<# zS%kMZDZWx)%#yGoVG+DGgT)5ATU*n+yUR>WQQ*4ar#N4F@5E)1E&98LT%$fMzw?Ow zT5uSeIP0^7&`8Dm*C(Cns?4CpC>wv1yolHy^>w*?s~Q)K>|cLv}`0QS|A(tmU+YX02-h$#?rbPwM-(8}RD; zC(Q0jWtKYoV&nQM)mUlbUp(zS+kFotcDfvjJko^^L@KgI1jxwmim}4YDujDas^)nH zeJ+vd50`VMl%r|tHBO@wO2yMN*I{R0tQ{%Pr4UuLN|mf!BbfQ-ufI^DsF}5ni0G!j zN?#h^l!l(DDZaxHrhILl2RQQ*NX>q5^0FjFz9}6 z3w~7&5zJNN{gi4flXWm{UsA98WGnKv%jFjKFpeC=j3l%>zJrYM+xKDEy??J7s0z$1 z@2~YBU~1I`aV*88jYAh;(BWJNJvr%BsHU&AMwZQN>ANrF^{zL!s#0MkrIOV8N{ui$ zeEM{4-l2$Asno{3d#`4|i{bk-W)Yb@J%5W^O@(29Ya19>31Q}D!tZQ4rRw%v>H^o`I_yS7je~Q+ z5K>bJ@?Hw!-0PB^HRJt76{#la^6HAtp`IfC?)J0y#WrH?1FJX|CwyRNAXrx)i_51s zdc@LBN^^vSpmz@hpl469rlo$?nb}!&`yyUjs*GV=c7OFJR?aKYa&A<3T$(@srfGhy z@!K+bcT*Y9rmZPoXl{Hlfw(^BA8ROF&6HmjRXgd>Rov>{FAk=EFsy8 zVwSEwYxPe=F8cf%2z_(1*vijU^<+$ds#oEYK6_r4Z_P#u235(Cw1&K671*hSDQx|Z zxeXokzzsz4;7PZmS%|9lMMYk^cuSW)AfMf5mzyqe*!Bhy^XuOSOC9keeSN=Fpnd-U zK@b~Daj4DRUTk$MKvm*G>J}$?ocE48=j@*e#1+2*?(B~d?(5MwEofy}cO#fme5G2S ztL;a`R;m>QZdHQKWlQZ}y2Y^m)Q#4GD7v?_SLppZyA8{^W zYFWrb+}8E@k7`H#Hpac}Gw z30d1&hK41M3_TPML0a+q(=@=$c76rBF`G#G{_A+PEZQ#%nF!>k$_lSD(1TJw26p_f z@Fj=!Ja22{RW*~fD6DPqZZ!msV{sKy(b$|wZ6=(IW$6_|OD?J6WE8Z}lR zC#@$^8Ms{tiZ5tEeRSf=QLq2G9%hao^s|IbuwMlfSHw)8sp2;<-U;OG#e8MM0y`&; zeCBiyZW`SWP%6wjW;H#3FUVP8-_ z9XOo_5*HC6O<#NdTjy$R6i-Jl)DfM)pVLgqi09?k^x}U7@4u}|W6H-JeoF4G^v~hl zY7@`yQA&(8uU%w)FbEb#%YODt8W$J>>Kjm#7WWTppx~{%HRTC^{75E?RTfYosGcP&r;idy+cseiX*m<7Z z-_vt!T$raso1bq`@dUOG_=lT7N^aUSI)Q~#rxIyw7=+_|G+z0g4KBGXbR!A%I~m=`>8$gTGi zic%5B6Dhcoxlv!STToj;2s+R%eA~gpNl->^JB*&8^e&j@>%h40-GVQ;oY(ux^1$zh zqh|z^rt$e8Wm`vM=%piy_DfUQQ$T3pheab-D9_q-_-u zk}{EJ@bAx{T|^wZpMoX(-&NM9^9omMe^(j3T5~k^UAH_RY6DrG@7Qu1OD9Fo8I?C2 z>U}B)AwBHfu@57M{eCWgF!$a2-*SUnQ+vJ1Q|z1|pU?R^qT*ai<;(`tAZ++yBNqt| zeSPJX#5)<5e4wNddQQztZ{r&DN8FhnG<=hpEX*6c9x|=;?Wc+SH-%$6Cu9t6aGudX zAmfv!@L$Mv82`mViR<9woWyCEPQWtZ&UaCwNnFK$8{rETqjR6+xu<@Z@svIYdOUD3fan*^ASyd$G+Q#Xwa?WM7UydG~5801Kk`)cc%VRuR6U4Pn296dw`kRYh z&3;eX1{|CNdH36&zcr{q^jgCb2JcxJlT?lBV($+JMxtbg7Ocsx)Rs5M6bzZ#LvW%d zLHfo4k$VbHRIwH2GBG4|3%jf^WJ}E|Lt*_XHQ?V_nV2WUEkkwTa}>L#JLG`cOnk_%^NpU%mrIu~p8>ki zpKdf49`({_PG=ou)>F#;5v7yu1np+XE-M@s1(fk3Dm6cpuhnNa^DaFW%S^OK|a>pruSE?tVkg3)8$PhC|;z zJFPs51Q9i7ZkMf{aIf?@v!oKFQ^+UPKamPH3=KRi)15&Yx ztB~>Xa=qZ^K#|{`VGlM8WMKL6*xC+zl0)|d-bn-1!qlqyE(Dxbi5Tw@xlS=tm{&J$ z12Wy%I!fiYjaQN$_W2|yE3o8FBWJlST2UwWeDWkn0v%No=c-eIg#wi*xb)pdeOTE0vRNgif1l?H zG)wwV@CxiPoQU}^V19eH2|_j&r=wo|?g=mjGN1mbMoWi}&4@N);%nhg*0gFNF z0wly(baR_|HFU4_m;ZEO?=>`6{_RNy-B^kNmznc$CL%VGPFl1G|IyI|ywC#c5ok%D z+gM%8{I3@`e(Gv|b~D@&B4^5lo_@fXU(GRrR4)jeBLwY=1M<)xC%(c8Cm5ZK$wzptTGV1Q{m4YV zAu=p3pF<&bnlT>Py*`)z#UL{T&Z4$&M-h2#rQkZHouIAM^L(I55R5_ti`&QQvotefj#HXJ3+|Buw-_#Q3nW>9ynAY{Ty1EQ9~Q>U45yd&hJ5& z--FG_%2g~yF85@zzV*pz+S9rxHP=f5EOdZ!3rK+-22`Pm+&cAZ3vm=jA*hUC@It59~rUDHHKIXvU0}D03vj ze%#m3Z!Rz>h$PSZChJT^A^UB?K2}SC6$A@x9x%LoEK(0eFp_~Z9+BVYzir{!5)QTr z^RQzv^iHh#tD`^i%gQuLpO)_nq=OkaNP->El{m44Qa+nRY$P$|A!iKZgZhyYXJySt zW<@p*LnKncY2@oXueL;)`hX>TePd(n)z3Kou-g1#_iPSZx7Z;3{`%)Yi=EvQylaI0 z8X2@m?g$s&SvjvthHH8L0%KX70s4>}C(cHBM1Al5!Jgo)3lDSeTHI8F{E|h{D4of3gv)tWK4s#J@HvyQ_ZC$L zR$|m~SoMd40A`2wpuvjv#BD}fbX@)SWisa2)7R3kg?Z5cg~%#D1u}f$4U(6A{^k95 z&VUCjkMd{rHSD0HSA~~8d|gSgR!_VN?hjO(TFPkI-BdX@4ZQ|b!#VWa_T`Rmhf&WUvj`y(+n@bZNV?Z3Oax+s;{&J^+~{@jYC zB|Tvix6MM4rmS~E;zd=p8F&wh=zeRU83|P^8b%BI;b-D?|0Uk{p$hlZ3;svIQ&*tP zVQjWT3T(Vv)KGjC2O|PtR8>M{aRAD;;|n;AiOH+L4(_*x56?Pa@iB&zA%vY^k523M zVI5beYUf$vEQQ)r0Lk;-Q5s<^3e^lw$G~#bBTRhN@Ho8NM}qK%5~0$pRxiU-Pt&uN zzb#6e+rrRA#j>-&R4Y!Zkxlb@op!T{l}^(2r$LiKO}^aRQ~2;`^#=#9YqoOb# zscnIL)a`c)NWM=VJzD;4*%*c5oo!Qq?tw zp=(}+)GxjnqF&!K@#6csZB$==Z%w3Kk(}M$DX;KMVn%Y_o4+=CYa)2Dt-VW><_9Uq2tZ7_Tj>#nfA-h8ZTjX+eN%fKhKo*`eqN*9itk%#W6 zrz8&8LWLFV+vc2f*+oUKS(hr$&QoNU6A|-65(NCnvCl%L)wTjpLD*6GpGWYlCpiX& zaqqs}A6WeCg{1L_N!_PxuQ~XDZ}@$;`bfv7H`sHkPy^xkObq@K42pjT;37ZN4|WbB zReRM=_m|KD>(1yk#)rP*f!_{fxWN_`vFKQa;{tAG-&(7z z%s1`zZ0TALNGdaVG3;NjhaMTL&sj9xf776gvVwaL0JI@^8gZ9L3FnGw_uWYHbNYIm zV72=ms&iR}%sYE`J49$TWnK&6&I<@Z(up8!#>S3E@KUEFGw?5b9Qx10jE_AM|JYsm z+2}j3^OG5LAPG#p!o58?`iyp`Qy*7OSD4#*mUN_;*n7W5W7ux!t4QtLEzZv@E8}eM zE9#C0u?h_EIV0ajWuIC8FM}) z0T7Wd3F5o2uofcm(OCiEq9Cxc|5~c&6MU-1s)%jcw;W*E)ZAM>3^DBV>G;ok5lK6d z6o!``{)Q{E=+h67(W!eE#&Jb4a?#Pzh}wC(+Q2d0HYRNJMQiNN8wa8l%W6m6d*&>$ znX>@DfrL(0ALJ{q^ca`^0Dr*hD({0Xk~(t#Y3A1`5uj3r48pBGj-)WFTPaErD?x1r?91`qe?ldQzz)NwG~4AGbdT|>V`#7(Bf|Ee6y&k++35|-7&|$ z5dY23|MzJbkHkU?nZqWAiYTW@Ax;lI^YMb28An1<7thGz@t=tk53;e7sIE#gAv7u! zxgGbGd+lzF`5LNkxq3>Th2jozX{OYm9)@3LW+u<)HHZ~iJpfJmGFq;v_)#6|Hha7G z0#w28HK9x~QmuSYb^9u-I<8Sxs+U7b(G_gwj#YX;K6|8hE<1idY+_yJx2}MsqwcDXLTOsXdfxGqo@rOa}SK1|2`>QmhpYi=Lc%ip|P^`PdZV6c3 z43*^lPxkP802y3MKDj1D-k9FENSC3avW?$IIJ$^BLd_L@A@>HUdTk-{&|jdB!#%L& z;x0+9#lunAj0X0a-u?&^^aFlG^YB~B{$1?-hxzyr4bz^18q41MQC&A`BQ`LCi-|UV zAGWmdfnMdxxQ{)SCj%vGz%}~SqxI6zH~DK`PR?pU`E{ecl001J6QCWlu}3SR<_RSz z*&ONgbwcS9|2+L`N~$_4R~)|F%lYX2eS86+7xh@|Vyzk#ARSUkjaa>bhTkr!2*YTA&Me``BLD!E}>=Q1ZK3lpII>&bepMvIK=@uJT_+NFR)gq;Qsb| zJ~|t_4zW&qmD@VvPu$>)kOELX7gIgl`oF-8ouW;`1b$pKNVd$5%AIQXN)vdS1N`MC zloN451!7~S=9fs)P$DqGnHX_Qkk3*OzFzV|;7&^wM$-qginT8Ydptw33;Xhz);$4m zczpCCs(IN^oLh=z)4m1>yah*kb65l&s1)g*XEhus(ow6AibM}%e3Y3w)ww2?hz<0h zG%r)R&X7pJ6sTFGn&utOV2UJnj4Kg7m2K3f4dM;`IOIkgDxIDrIIShH!lcL+yo4;} zSZ5;Q{Uv)sK3hlZIrdnK$M?TxN{}hWgV!$cgxAZQ`}UIAh4|}e8&mLRqlF684-%bl z98ZUES;K6gYSe4^2EO>U9$j)z+IDDvBGfgmwdTNM7?KC_EaY@ic)wL2)j$wIcAJLn zdE>}#bd4Hdx^Hz}8D z2cEY^WY9&^)yo?U@JWJbcdy0WGTPy3eP89FD2gytdbWMXZ}PJJm5r*6Mm@|C-DK#L z1oWhVy#Q5^;}DvkboJgD1l~eVd&QDJn$AanEN(K@|B6`J-da85V<5cazxKgERK|Z@ zq%Qg=p(GU|Iu(tB# zo3eAFI9n4Ja|ZxXNuNjtKWk(mDCgB?3j3cwXpNvIbc7<8;70z`dlORH>$TLypn&Uw z?6xlWbuT@H*i5yP+w9{(V_*gk^0(r5vv3Jf1s9#*#;VicoE!rsk>wV+gd33*ixKZa z5K+lAViis4qX`k(_3PEYp!6SX1GXSXVl#;1bY-U*4KU;8KYb|Wqk3fe+8QpphMs*5 z;5LuQs$i7q^I#NTFbdu>Lupd8nlp=Y{=pVQM^K4Yzf?YTJS@fZ&8H|uHU+;8-*M$3 z`8fX>P*#I{jW?kMNnG^Zy!N*O&7*~neb4ZRxLr%rsCA;U`;qx;AnWPpAFb}T6E|YD z&lY!~K8H4Wy!CJz#puXIb6sj0JbQFFsd|XBt`lJHmL_2C69@i_UA^iTt43$ohCk94 zP#OH4`g4hToq>?9Hw0%=3QA#62DH1}=w{T=TNvJUEqjp-C>De5Em`>MXI2_~mf(63 zuR%)(8UFaN%}m@N13%5N3mJP_tFP8lt*-B4a_fna3gBYa_LZxJq8yZ0y(Ie~9J zwgeA!&Eu8+i0Yp}`OcpJORm=E8`}ReOGM?Eg@e%~dzC8=2B+Z z{oxtA#M$AqpZ)pg1LeHo`@D*tG@guW(l47Ln-lkdZM?>_csK?KCFp)WaOIvGhu`Q( ztJvN9Xj5QnhZov2@qCH|B+eI%au64L23j3RFR%WdHXbfkQt(|2YMY>g;B3W`cuJ$#HYvenx>I9)KuZ z3ZzAcq{*4Gy*{($k0ee5n?7DWU)|sxRfNR`#d)|YDn!)N0w=h(i-H+q{xUtY@asW?l^X!#| z7h(t>F^84i6&GLreVcszMwIeo%M(dU$b0**vEb9Qn7B!nvW_J)Y5P zZT9RGfQl5txMy4ZlwX^ia6rC6fy2FFdH3EhY*jFkrctg|9XmE{p44zmFz3}s2JZ%G z-vz-ekW_Cp0tEEmW=(a;k^9kDtJZef)|7#(t&3@oc0^va^F-O`UXI-}9~G^A7TW?3 z=SIBP4rm_}#!NBjaZp_bJb5mp$*yj6qvwi&%ZIV#9bMP|#_fEN2%`VIO+>4XhHO6G zew@J6;;DcFp{mXX*C-)t!GWyj@D|l5|OJ545Q2nV@9h z7e^LqFp_$Rt$sQzJCpP+B1PX%AR!+?~AMihDVONeoH| z7#q5UeaYkXBb8EZi?7KDICu;`Mq*+?WR=EwR5$w0RwTvYkxgnDUTrWE{_E){RaqCg&%yGcQngx(A(6vGP(caSVBIxL_@N0NQj5(t4G;BhL zlrDtMEaM8H-;j@c+T(~wC8iqMc31y<=;$saj^MW*OBZO~LnU1So?sB9Kz^h$T7}x| z%*-pm@i@#6nayr-PoVnTPHqtoc~8eLT3al$yq~b$hH%eLsu2?c_Io$N#u9xR=#hcm z5$T3+K6Ot%ak$FUru10Aj2l6ka{yolroKA+&fe-?jEXA;3D7?mU=uf|QmwolqKl=W ztVr&y>Omn$=90eOx*-f&{2ZeEUu7M(YSSJUuIjtWLbg@@i(o_74io+n zzcb2?>R;j6>XP49@htREqTjQgb3FGiSiP-(UKl(OQOy&9f~~@0j&}af$yR^MT>1zj zmt#_W&mp#au4MI>D|vfDAkRyXCt9UeUlNz{S`Kn>UDCulW<}`iViO+JzZkuVa&kyo z+y?3X-HGcB`SD>$9HszjBWPQl?*lj5nB|F_Y+xnnKo>;2ED($DPqW;5h&fs$2M^>G zL8a@dS5Mv4tB*^uw@BymM6c&&do7MP-W3!Stgk6;0}go4b6dL?vbq}llpA@_?**uza{ovSt(aO-h$WsMQL5|=P06c& zDp__}!k>O0FsbH!Yw8A=Yd_wd$GtfpcKB;CAM@mxWmka32aOC57dc)-R_ErrKMkNn zARSb*dmu}=zESs-Q-N->=u;^PjVAzNTlhW6&+7USO~2U-3bAk*Xd^Ql)?FA+_w~66 zn{Xjio;Ug+{zB8LQjP3TYFitxdD0Iyv5jRvJwgl(FKsH?4k;_JkJKG}N%V#afxh(@ z+;V#GE;u;ug@5g-X?9wT=c&6%zn=4&r~^M=52G!PR3Q*WHeJ=Qk}}>xXlM9g^a$I( z$VR^k<5gzSyc3gcUl!I{C6(^FF~uz(`1c9CvLtNPo@k6EQ`NN8z50K!1fd4D?&)7| z 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 literal 80729 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 g46|a*p^BRlUnG}It}+-o7Epx> z$?=2#!S8O(!hht1n-oa^T`#u%F#?2kfo9#dzmILZc>)BUfh(=;uQq_0PtxmcEp`O- zZ37qAZB5<-E_Z-|CtWfmM+(sN7Ye}p8GTa@=)VQRYi@6?eVjf38R{x^0~{OzqeaSI z_jq@AXK(+WY4!I5{eNjU7?d|2!XjD=z91a_v zfPTMUtEs8c4-XIRlamu`WMqV+YC$?u6c!e0+uPfTxw$ztK0fZqkd>9iJpr?`vlRg4 z`hWU5A08ei00l5frjV{AUox50CnqNr^p+(hB{seho`B>sbT|6@`&D^)IXgQ$OZ$66 zLxTiG5sSst>+7rIE`0HJxuT*%(3N`c>gr;y(A|lDZunzL!o7)1$j!|a%gf6Oy(xpi zpxD^huxJex`#b?jD`=!Xq^Ru_%wjV$Gk*(nC z)LWPmiyYqE++?9pNNaCz_ovoSxi@9ZvW7wbM7gZ2OsA=#=_x8I^1+m3Y7MjO-G_!@ zP^-|R%FD~seLf!tU4CeQBvnR0P*c#y5xKRs)qkFv znu?E&jq#V47s@&9(b(8%FD)%uot>Qy?Uj`k3+?tRBOoZLtE;OxJr@@jbBr3p>7%Nv zs}p;Bdrlc>W>H#Ns_-+uxVV_av`io!%?OCIk7zrU+~40T{89 z(KI8GNCM+G0k^+C*an{wrRS*O}K-}D%6kVjm|0RVMF&-TE!sFOo|pR|yI^7Epl( z$@PQ%!S8OZ{D0(xmlTczoiC2_F${!ufkw@7zK zZ37qAElu77E_Z;zCqptNR|?YP@_FF>jJ_!g4BP@eYhG{7eVjf3Y3eF@0~{OzBL&J{ z_jz|$dvE`qY4-O6n)hjqb9^kYeZ5* zv^AQFDAbjNk89*lf1v6r&#o{YhF|TX!rLOK~6&V4eap>FMc_ zva&L#R4V0-9?F(|!c#a5&U+b8{w| zm#gn%ew#%{MO=|yO!K&ze6 z*C#J8&%Ls;Lf=9L#jJn?emwSlVq(IKZuy9-UlRh7yGV;CZO+fnRd_k|>gp94 gv9T{$e`cPHzs%|Ui3i4!ZU6uP07*qoM6N<$f=>~F5&!@I diff --git a/ios/Runner/Assets.xcassets/AppIcon-prod.appiconset/AppIcon-prod-20x20@2x.png b/ios/Runner/Assets.xcassets/AppIcon-prod.appiconset/AppIcon-prod-20x20@2x.png index 7b921f4e22731fc189bfb8d7ee855c3ebc7bee0c..4ab02e807cb3f8a0821086c44be0e92195e2d0c1 100644 GIT binary patch delta 2351 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 Uw2@+`qyPW_07*qoM6N<$fUnG}It}+-o7Epx> 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 delta 1955 zcmV;U2VD5j4bBgcL4Q-FDiuL9h;+zMovet8IBFG&P$AR`tvZ;GenFFlB*n#1a4k6a zu~>C*an{wrRS*O}K-}D%6kVjm|0RVMF&-TE!sFOo|pR|yI^7Epl( z$@PQ%!S8OZ{D0(xmlTczoiC2_F${!ufkw@7zK zZ37qAElu77E_Z;zCqptNR|?YP@_FF>jJ_!g4BP@eYhG{7eVjf3Y3eF@0~{OzBL&J{ z_jz|$dvE`qY4-O6n)hD5Ht~&Mmz?CK_rn#%xPlK^i54o@~o_^5RexI6?l4j zj@8!IIz4{;*c%!e@d&P6yY|!e?c3iE4GpamdlZ{NPe(a}*E%f|(! zS42caS5Q#UdvlC`fs%zMPMlC5J$kgAr8PG<+kfxgy*p`ga?%R>Ru?W@_=T)4C@82T z;T$jlER>Li^uJ=oin*6BU%K;x(m`19-J?g3eCR(iGO{x!CZ@Nir)O1fZ*TtT)2Ab> zt*s3Q4<3xxXf)28qvU#u-+~fRQBj@#{{CaUpokX(E7kk=@9!q7p)~_-U8bj}R|3Sg zynno085S1SiP*npT}tlM>-F;%vYv9Zy&w6wVJg3>A}DcMw6S?K{mMpsu?9pX8- zXV0E@b8~YdcX#)(HEY&hc|ED^e!qY+JyRg)7skVgfg1iwQE;TYHDgMScE1%A%VHLxJ;frdGhxs zPo5}qb93v!6Z7%oM=9|nBqV5pgM-I;L7}1H+_`gVl+7EdR4U5P&)?SF-K|5+W`EUc zbrE8S7Cg815C`Kq7 zFI~D+bNlw~06ROo&sVNo3Fnr@>eZ`tu+5AuI1Y+QQEFYt^buZA zTByN4;Ld(@o0TY?6bSwdSF0dMe1GT8ogZ0HQV`kw34*_em2Uv1q6~+EKVy%<-b`0l zm$SKii-}ZKRkfk9u~8l$AK!si*MasYd-(97H(bxKe5O_>L?~)DZ{9qDveMqYd)J>V zq!1C0pP!!=B{sVpP|=}7huRMxKHNe7aN7{YFgiL~yI7V&p{GRKx^?RdZhz(y4fVc} z7nBbD*RoiO#vKHUf|{nvmIn_Wc$s?XybN}mXyne~;^OM@@o`C6S(y^w-(m>V&dkh6 za&mHlSzeUPyU@_k54@nX(A3*9GBP^NdMRlxg*AFBD=Q{BIXRB{Dq`MA;7B|z`m?02 zuCA0O4aJ{&@2gj@Ht>Q{f`8n)b!!WzjHfxB6o4=RM%q)QQaOTW{LGm%P1V)a>)YDe z?2)}u)LbZY=?wCqH!v`ef6CA;ATBPh$H&KKftgB$rVpn+g>b1a`mq|>8%hLN#az62 zQDstW9#k%uPYnzVe9a3=$$-w|0Jq4=I?84$0qz(}N=lmBxpQYPEPv6!#m>IIz9Sg) zP7MtWPTX)Hn?ImUe&Gcr;VCI88hVz>QpE5tq6Gv5j1rBkJ8Rxt?_?7m(ELjdQ`pRd1n z@17s7sB*lwak~^0ZKO8~n4O&+eEs_M0eohVElYxuASA~i=6~lDX^wfxK#≪fcFY z742dAND>nhTi7!wuSwMG6q~tZp$RZuz`3F>3QB8maBwX~(t1;=Ft|#-MVESwe`{Pt zUAcl#QsQ;%)@g77n=o@}h9y9Ypm3`@>TAT!&22$*#Lx{_mTAek;^+W( pI}8sG+XJu`v>YEuA4`C={sso5r;+ZfDHQ+!002ovPDHLkV1kd7vY`L~ diff --git a/ios/Runner/Assets.xcassets/AppIcon-prod.appiconset/AppIcon-prod-29x29@2x.png b/ios/Runner/Assets.xcassets/AppIcon-prod.appiconset/AppIcon-prod-29x29@2x.png index f41b891ea0cc301391a748fdcdd7e2f21c9d2563..97439d4e3e15ece517df051c3166e61a06126823 100644 GIT binary patch delta 3374 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 delta 3973 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 diff --git a/ios/Runner/Assets.xcassets/AppIcon-prod.appiconset/AppIcon-prod-29x29@3x.png b/ios/Runner/Assets.xcassets/AppIcon-prod.appiconset/AppIcon-prod-29x29@3x.png index 9197d2cc216df5e780e63ca9542ab3fac2932863..7db3ad422a10092f62010551ae6ba80f1a21b421 100644 GIT binary patch delta 4707 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 a*1Ql-yRN+PLTsIau%oW5qg1YF4gVh*vn}la delta 5785 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 diff --git a/ios/Runner/Assets.xcassets/AppIcon-prod.appiconset/AppIcon-prod-40x40@1x.png b/ios/Runner/Assets.xcassets/AppIcon-prod.appiconset/AppIcon-prod-40x40@1x.png index 7b921f4e22731fc189bfb8d7ee855c3ebc7bee0c..4ab02e807cb3f8a0821086c44be0e92195e2d0c1 100644 GIT binary patch delta 2351 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 Uw2@+`qyPW_07*qoM6N<$fUnG}It}+-o7Epx> z$?=2#!S8O(!hht1n-oa^T`#u%F#?2kfo9#dzmILZc>)BUfh(=;uQq_0PtxmcEp`O- zZ37qAZB5<-E_Z-|CtWfmM+(sN7Ye}p8GTa@=)VQRYi@6?eVjf38R{x^0~{OzqeaSI z_jq@AXK(+WY4!I5{eN&#~ETt)a>?C2%6ho5HbQ_YCZIJNc7~<6x+=ObO)EAHMqP zD|WrQN3dkc5}sPECLj5s$`UXoum^MI%n7&3J%v@PR)tkQYyzY325SPFnwm_{KKrc0 zY&Iu`DC#IHE7O;hl%xbJWHOn$jvP5+-MMq8HGeiXR&f0I@py?uA|%&-`Q?|k#fuk9 zold8eZGU@%R4O$bJa~{deE9GLHuYH(c=hU4_xbbZl}y?=cI+4*1o~aDTCMgICr(%n z95}!`eE2ZmVzJNaLkJl9x6pZ$~0U6407k@%7eGLKym&*MjB8`oW#s?mFKn!b5rO(0A z+KP*d-9<%3Vpy93q}f1Ve{?6JU`=3ibF=BW=bm$72=-?F?wp*QmYSNHbg@{>S11&A zyI@)|Rpq`E5jTdZ zi~c7*K3<|!D#H>1gfG$?H*T=)A|r@IBGdHg(+8!95X(uT|ABwAR905{wTFb=RZ&sV z4vUs|pNgTcJ@n8+avWT`$OMC5M1Q)vx~!8XP3lCBne2OQ#flaB4I4K2oxfMWnm~<4 z(=lt-EH^|X*s!$0x-1A%V*`*!4e!&ZPkZ?|2o4pl%$+;8vA({32;2TK1sTGKM|tpp ztcEdb0`YJzh)5{&kNfGTpE_5rTq#aZPdEJY&p(vtWMpLMva+(M4rga)^MB8sJ4csy z!7a#KE>{=)YZ8WcEZhEt0p*{6{;3}*5z#|LC?XIjU&8}a*B~B45d0FKW}7;7svH6$ zf~C3NfB*d!9DwnEy{%FD}R5lm~Lgtk{+c||m5&K$~8&zw19gmSxiy@W7O_}j>z zsRm);Dzw4Kf;{UD8#XK@HGef#Fk{Ay0TU6=hQ|abBBDRQ;-vfc@An(-c<^|Li(f@# zBnlkCnjgu$rxB?a5Yg!@j))S-5m5p;B1#}fLkx#;1h};)JbyzNx98`wvNCB& zNl7AdW#hbg^K=NjrLVvKdLq3HK=9ss?`aSud)D&<;#0xCeftzDl}f_oxqZQ!Km@Lk<$HeP#*G>fNG1YIxSolFw|n<)?b@|#^?1NEQl_@H)`B2>7~8f9KKbMmBUvW+ z;)^fL=*vhFjBnk#m4D21#}pJ4q;!`dVN}pG5ji*y!F~tZ)kf9?=H})KKKke*9pITQ zxL^(R6j#rASX%NMZ@j_VyLWHv$&)7&V0{V%wCx=o9l?_qCL?jj>5)ToH^Su`na21iXK-VB7cgxGmy$FDl zPN=S~HbY!wP{v_UPcpIKK5*awAtCH(`_-#gw}3z%&ws~PE?v4b?$Dt_T_8&W5fPBB z8bq`p6ao7>pd#|&hacW;Z*Ql=6Z%1jkjNk|UPBe(h3LeI6a1Y!cM_-W%F4>39;l+C zq74>8`@^6ihbN{?nL@YgRcG|*(ek>wI!jGWjsC$0AEfRJ(Ms?Utsc@LB4oyh^{g}} z5&8JzkAMBb7y^UAV0q`AcP#j*^r<5(EiLsr2a5^1G8YUO`o1;C8wmmyLJJxQu`}x8CL?lFnipLZR zg<$*k?XlOcU6X)3&&4Kch{5ma5jR?FHXCu|e1D#|?_xA`MIwAM8xGQB42*_W$QD~JY&U2(itj{9y@j{)kbAyrS0Oyi=3@; z*REYHAdt)^6Bp4#;P~<5h27T$5C+COg}Oz=JP;xhi(In}j+yc;unyP4g$v_GjvOif z^ncS&8}T6V$;rtvAdbp0*RNkMLMCG1{hOgM77X6M*5iEj)mN$Zii?YrFJHc_K7RbT z0%Bp?v}qHS0U?C4LP#7uZ>yu>*QQh|wL(PV!|00_IEe@xb3g%Dwrp7@4zF|YS4tdg zoAU#o&liHUVK}_b=jG)k;t1zftjQyYPJd@{M3g{|h!V&VQ35$4N+3tDCeUm)+sn(# z%?M)xO@#-W3=IaVUTSKpb@}q;arEwmAbsfi{`>DcfByMr_X{t)z<>DRhkF9}ZQHhK zuU@?>3)LRNn68y8SH_Xu6Jhq10&4=%X~(*C>sW7z2mvwDLCxgJlQRNcBzswQ?|TLli z6#VLuS(Kcd9IqD}O(v5Cq;*zRRoO3Hx|HTwZ}{-xIt13_W6uP_(xppHwY9Z(L$!yx zaflmPy(2=vnm}Y3ama63<&R9E*MIA~4jnpVM&8TAP?cFMmYxM7xm-@Brzq>gwGLz- zUg=v!MMVaVzU&@_K`SB{o~~2<@p;r^qxtH3wN=U*G9lUw^CB+K^sa z>~=e2e@1d)h=^>UM1;wUHemrnlT1hPkmD)~3JO|3`|LBazWg7u#uDlwtE;QqD=RAl zPTdEAbf83ppP!%Kq*klLS!MHF2X^^hMED}XgHV1|B9V}dkEwh2?qz&`)Rlbq-FNDi zmKJ)=*t5NW^N!sj(*LtD5PuQL$&)AhbT;_*?b{t1jmEE!R;$%{_Uu`D-mwQ+Sy>4f z=ByQ!4F;`3*rI;Ffs2UPxn}3<%-r+^}IosMIZBdjlpS$V8fviTEumb|a`@1i5bv9D6#fLV^If z4c3-|n6Cwy1(jty{`ljHMT-`xw{PFBf?_*isnpsC2ynqV)kdR{w8eO#Dm^`22oYgz z2%JO&nMj{4U8+_jwpc~5hai#q6BgTCj$5E*`r1nL+7f!h7HJZg~i3i zX=IC=!CP5Nz9jDewp!3`_9hJ)@93)3!cp~|=*Itv8+>qz7!=DL6 zB9RmIsgcm!+)V0|z}Pi*>{u()d%*I@K~GNH76=6Yb2xe%2>*gLfkTH5RbZGfE$%n< z4^nkjt2KeVggs-%43k=|?kXuMQ3m>nD29;x{BI|LIDeChC}){Gc{2Sk8TwCyJYA3~ zJs1cPp@v3bVWA!AndQkRpA^E1<7;bc+vd)l8_|ggCOCiod?$u{3|s(doBVL#e{o!4 zTA!1f;E8|85wa9k#N?9sj^UEvJmgJF%u6z6bJc8EmA?TRXD=wj%VB!H2k0i z!(-SI%VR|zLBEN}ty{M`^7HfUH*VY*(O+%)f~#Nz0#^}f_So7%;JGiEa{TzVlgWf7 z{C}Dg{`h6bI> zQTJiHKUtDiDuN}Szp&tlsT5Ym9`Ca6_MN-zR}tBB}B{PYu9B+|oQs#dI6K{oqP zzg{$I)F}P(<;%%Jju^g91IuLf+gZp!I(}!)oEdZ>J(7YE2>l@<)UqUqjK6m6n)S|| zJ2qIKn2<-#A3b`MaVQi3L6iPS3q~OHYbHWSgXQ*DbAsI5Tz4b|BVZ$uzTqH3Z1>L* zXnB1^9zoay^7(!Ji=3R{IURNj$8=sFkw@@C*an{wrRS*O}K-}D%6kVjm|0RVMF&-TE!sFOo|pR|yI^7Epl( z$@PQ%!S8OZ{D0(xmlTczoiC2_F${!ufkw@7zK zZ37qAElu77E_Z;zCqptNR|?YP@_FF>jJ_!g4BP@eYhG{7eVjf3Y3eF@0~{OzBL&J{ z_jz|$dvE`qY4-O6n)hDK- z3JSOcG%nF-aMu(r(T5t#BpTzAs9EquNlaW4VE+ylLERvkqlr_QITxo#EFxutE-*ZeVT!2cdBve(xu1e&6}6c?%)Ff z*HQld`|n+&qN2Pot>j0K9*wiIvQl60(xpqbixw@KjHzcsI;78OQz!_$dNwvT4-OtY z7=PpD=GG_*0F6inFe@v|At@=T7bCz|#KpyVvH-G{Kzd*~<>}L>onm5QyZ~OW$B!R( z(5NU%OG{65>C#2*%@Yz5+|$z1+@y zfj0yO2Hs%x0G>r+VxslWKmYv7kt0X?Rex1gIdV_#-o5*cty{OAWWgg@ym)b1w{G2@ zz-q|?jYb$GFTC)=gSXy#OA>e_q59tLiKw#b5wN*Klv(Ev&zjDms!rca+fAAi=> z)!DH7U}-raAtC9(!NKXUHr1FhW2O>-Ts_ue@o5sm(D+C};R`ELrm%W2_wL3`1E6CzRoR9gZ_#PQER|Ln=MaK~U#KH=fv*Bu=l zW!c%;J1|Y_eSLku(%XQ>f

with SingleTickerProviderStateMixin { var options = [ MenuOption(icon: Icons.dashboard, name: "Home", item: MenuItem.HOME), + MenuOption(icon: Icons.music_note, name: "Ideas", item: MenuItem.AUDIO), MenuOption( icon: Icons.list_alt_outlined, name: "Sets", item: MenuItem.SETS), MenuOption(icon: Icons.delete_sweep, name: "Trash", item: MenuItem.TRASH), @@ -116,6 +118,8 @@ class _MenuState extends State with SingleTickerProviderStateMixin { return Trash(this._onMenuPressed); case MenuItem.SETS: return Collections(this._onMenuPressed); + case MenuItem.AUDIO: + return AudioList(this._onMenuPressed); default: return Container(); } From 0576a6a9993f905fd3effb82936320838129b86c Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 19 Dec 2021 15:21:16 +0100 Subject: [PATCH 128/146] Add title to player --- lib/looper.dart | 62 ++++++++++++++++++------------ lib/recorder_bottom_sheet.dart | 69 +++++++++++++++++++++++++++++++--- 2 files changed, 102 insertions(+), 29 deletions(-) diff --git a/lib/looper.dart b/lib/looper.dart index b53d462..32f365d 100644 --- a/lib/looper.dart +++ b/lib/looper.dart @@ -9,8 +9,10 @@ class Looper extends StatefulWidget { final Color color; final Function onMinimize; final bool enableMinimize; + final String title; - Looper(this.color, this.onMinimize, {this.enableMinimize = true, Key key}) + Looper(this.color, this.onMinimize, + {this.enableMinimize = true, this.title, Key key}) : super(key: key); @override @@ -71,7 +73,7 @@ class _LooperState extends State with StoreWatcherMixin { return Container( color: widget.color, - height: 100, + height: widget.title != null ? 150 : 120, child: Column(children: [ Row( mainAxisSize: MainAxisSize.max, @@ -93,27 +95,41 @@ class _LooperState extends State with StoreWatcherMixin { ? () => _changeRangeValues(null) : null)) ]), - Text( - "Looper:", - ), - SizedBox(height: 20), - Expanded( - child: frs.RangeSlider( - min: 0, - onChangeEnd: (double endLowerValue, double endUpperValue) { - _changeRangeValues(RangeValues(endLowerValue, endUpperValue)); - }, - max: (rangeMax > upperValue) ? rangeMax : upperValue, - showValueIndicator: true, - lowerValue: lowerValue, - upperValue: upperValue, - onChanged: (double newLowerValue, double newUpperValue) { - setState(() { - print("change looper....."); - range = RangeValues(newLowerValue, newUpperValue); - }); - }, - )) + widget.title != null + ? Padding( + padding: EdgeInsets.symmetric(horizontal: 16), + child: Text( + widget.title, + softWrap: false, + overflow: TextOverflow.clip, + style: Theme.of(context).textTheme.headline6, + )) + : Container(), + widget.title != null ? SizedBox(height: 29) : SizedBox(height: 19), + Container( + height: 50, + child: Column(children: [ + Text( + "Looper:", + ), + Expanded( + child: frs.RangeSlider( + min: 0, + onChangeEnd: (double endLowerValue, double endUpperValue) { + _changeRangeValues(RangeValues(endLowerValue, endUpperValue)); + }, + max: (rangeMax > upperValue) ? rangeMax : upperValue, + showValueIndicator: true, + lowerValue: lowerValue, + upperValue: upperValue, + onChanged: (double newLowerValue, double newUpperValue) { + setState(() { + print("change looper....."); + range = RangeValues(newLowerValue, newUpperValue); + }); + }, + )) + ])) ]), ); } diff --git a/lib/recorder_bottom_sheet.dart b/lib/recorder_bottom_sheet.dart index c7d373a..c8e3819 100644 --- a/lib/recorder_bottom_sheet.dart +++ b/lib/recorder_bottom_sheet.dart @@ -4,6 +4,50 @@ import 'package:sound/looper.dart'; import 'package:sound/utils.dart'; import 'recorder_store.dart'; +class Skipper extends StatefulWidget { + final Color color; + Skipper(this.color, {Key key}) : super(key: key); + + @override + _SkipperState createState() => _SkipperState(); +} + +class _SkipperState extends State with StoreWatcherMixin { + PlayerPositionStore playerPositionStore; + + @override + void initState() { + super.initState(); + playerPositionStore = listenToStore(playerPositionStoreToken); + } + + @override + Widget build(BuildContext context) { + // TODO: implement build + + var children = [ + IconButton(icon: Icon(Icons.plus_one)), + IconButton(icon: Icon(Icons.thirty_fps)) + ]; + + return Container( + // decoration: BoxDecoration( + // color: widget.color, + // borderRadius: BorderRadius.vertical(top: Radius.circular(15)), + // boxShadow: [ + // BoxShadow( + // color: Theme.of(context).appBarTheme.color, + // spreadRadius: 2, + // blurRadius: 10, + // ), + // ]), + color: widget.color, + child: Row( + children: children, + mainAxisAlignment: MainAxisAlignment.spaceAround)); + } +} + class BottomInfo extends StatefulWidget { final Color color; final double pad; @@ -153,6 +197,7 @@ class _PlayerSliderState extends State return Container( height: 50, child: Column(children: [ + Text("Player:"), Expanded( child: Slider( min: 0.0, @@ -172,7 +217,9 @@ class _PlayerSliderState extends State } class RecorderBottomSheet extends StatefulWidget { - RecorderBottomSheet({Key key}) : super(key: key); + final bool showTitle; + + RecorderBottomSheet({this.showTitle = false, Key key}) : super(key: key); @override _RecorderBottomSheetState createState() => _RecorderBottomSheetState(); @@ -313,11 +360,16 @@ class _RecorderBottomSheetState extends State if (onMinimize != null) { onMinimize(); } - }, enableMinimize: true); + }, + enableMinimize: true, + title: (widget.showTitle && store.currentAudioFile != null) + ? store.currentAudioFile.name + : null); BottomInfo info = BottomInfo(color); Widget controls; + Skipper skipper; // = Skipper(color); print("showLooper: $showLooper"); @@ -337,16 +389,20 @@ class _RecorderBottomSheetState extends State (!minimized) ? Container( color: Theme.of(context).bottomAppBarColor, - height: bottomHeight + maxMinimizeHeight, + height: bottomHeight + + maxMinimizeHeight + + (widget.showTitle ? 30 : 0), width: width, child: Column(children: [ Container( child: Column(children: [ SizedBox(height: 10), looper, - SizedBox(height: 50), - Text("Player:"), + SizedBox(height: 40), PlayerSlider(), + (widget.showTitle + ? SizedBox(height: 30) + : Container()) ])), //Expanded(child: Container()), ]), @@ -365,7 +421,8 @@ class _RecorderBottomSheetState extends State icon: Icon(Icons.arrow_upward, size: 16)), )) : Container(), - info + info, + (skipper != null) ? skipper : Container() ]), ); } else { From a1531fb19d3dcb749d2b695a47a99881b9832938 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 19 Dec 2021 16:19:57 +0100 Subject: [PATCH 129/146] Add skipper with logic --- lib/audio_list.dart | 2 +- lib/recorder_bottom_sheet.dart | 144 ++++++++++++++++++++++++++++++++- 2 files changed, 141 insertions(+), 5 deletions(-) diff --git a/lib/audio_list.dart b/lib/audio_list.dart index 3ce6b33..ada40e1 100644 --- a/lib/audio_list.dart +++ b/lib/audio_list.dart @@ -119,7 +119,7 @@ class AudioListState extends State ? Icon(Icons.stop) : Icon(Icons.mic), backgroundColor: (recorderStore.state == RecorderState.RECORDING) - ? Theme.of(context).errorColor + ? Theme.of(context).accentColor : null, onPressed: () { if (recorderStore.state == RecorderState.STOP) { diff --git a/lib/recorder_bottom_sheet.dart b/lib/recorder_bottom_sheet.dart index c8e3819..76853f3 100644 --- a/lib/recorder_bottom_sheet.dart +++ b/lib/recorder_bottom_sheet.dart @@ -4,6 +4,100 @@ import 'package:sound/looper.dart'; import 'package:sound/utils.dart'; import 'recorder_store.dart'; +class SkipIcon extends StatelessWidget { + final int number; + final bool direction; + final Function onPressed; + + SkipIcon({this.number, this.direction, this.onPressed}); + + @override + Widget build(BuildContext context) { + var text = new RichText( + text: new TextSpan( + // Note: Styles for TextSpans must be explicitly defined. + // Child text spans will inherit styles from parent + style: new TextStyle( + fontSize: 15.0, + color: Colors.black, + ), + children: [ + new TextSpan( + text: (direction) ? '+' : "-", + style: new TextStyle(fontWeight: FontWeight.bold)), + new TextSpan(text: number.toString()), + ], + ), + ); + + return TextButton( + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon((direction) ? Icons.add : Icons.remove, + size: 15, + color: Theme.of(context).primaryTextTheme.subtitle2.color), + SizedBox(width: 5), // give the width that you desire + Text( + number.toString(), + style: Theme.of(context).primaryTextTheme.subtitle2, + ) + ], + ), + onPressed: onPressed, + ); + + return TextButton.icon( + icon: Icon((direction) ? Icons.add : Icons.remove, + size: 15, color: Colors.black), + label: Text( + number.toString(), + style: + Theme.of(context).textTheme.button.copyWith(color: Colors.black), + ), + onPressed: onPressed); + // return TextButton(onPressed: onPressed, child: text); + } + + // TextButton( + // onPressed: onPressed, + // child: Stack( + // children: [ + // new IconButton( + // icon: new Icon( + // (direction) ? Icons.add : Icons.remove, + // size: 15, + // ), + // onPressed: () {}, + // ), + // // new Positioned( + // // top 5.5, + // // right: 5.0, + // // child: new Center( + // // child: new Text( + // // this.number.toString(), + // // style: + // // new TextStyle(fontSize: 11.0, fontWeight: FontWeight.w500), + // // ), + // // )), + + // new Positioned( + // top: 15.0, + // right: 0, + // child: new Center( + // child: new Text( + // this.number.toString(), + // style: new TextStyle( + // fontSize: 15.0, fontWeight: FontWeight.w500), + // ), + // )), + // ], + // )), + // ], + // )); + // } +} + class Skipper extends StatefulWidget { final Color color; Skipper(this.color, {Key key}) : super(key: key); @@ -21,13 +115,44 @@ class _SkipperState extends State with StoreWatcherMixin { playerPositionStore = listenToStore(playerPositionStoreToken); } + skip(int seconds) { + Duration current = playerPositionStore.position; + Duration skipToPos = current + Duration(seconds: seconds); + if (skipToPos.isNegative) { + skipToPos = Duration(seconds: 0); + } + skipTo(skipToPos); + } + @override Widget build(BuildContext context) { // TODO: implement build var children = [ - IconButton(icon: Icon(Icons.plus_one)), - IconButton(icon: Icon(Icons.thirty_fps)) + SkipIcon( + number: 30, + direction: true, + onPressed: () { + skip(30); + }), + SkipIcon( + number: 10, + direction: true, + onPressed: () { + skip(10); + }), + SkipIcon( + number: 10, + direction: false, + onPressed: () { + skip(-10); + }), + SkipIcon( + number: 30, + direction: false, + onPressed: () { + skip(-30); + }) ]; return Container( @@ -218,8 +343,11 @@ class _PlayerSliderState extends State class RecorderBottomSheet extends StatefulWidget { final bool showTitle; + final bool showSkipper; - RecorderBottomSheet({this.showTitle = false, Key key}) : super(key: key); + RecorderBottomSheet( + {this.showTitle = false, this.showSkipper = true, Key key}) + : super(key: key); @override _RecorderBottomSheetState createState() => _RecorderBottomSheetState(); @@ -369,7 +497,12 @@ class _RecorderBottomSheetState extends State BottomInfo info = BottomInfo(color); Widget controls; - Skipper skipper; // = Skipper(color); + + Skipper skipper; + + if (widget.showSkipper) { + skipper = Skipper(color); + } print("showLooper: $showLooper"); @@ -422,6 +555,9 @@ class _RecorderBottomSheetState extends State )) : Container(), info, + (skipper != null) + ? SizedBox(height: 10, child: Container(color: color)) + : Container(), (skipper != null) ? skipper : Container() ]), ); From a2410a2d3078c50227160c4b1b2f02f9e20daad6 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 19 Dec 2021 17:15:21 +0100 Subject: [PATCH 130/146] Add starring of audio files --- lib/audio_list.dart | 189 +++++++++++++++++++-------- lib/audio_list_store.dart | 7 + lib/dialogs/audio_action_dialog.dart | 24 +++- lib/editor_views/audio.dart | 32 ++++- lib/local_storage.dart | 26 +++- lib/model.dart | 16 ++- lib/note_search_view.dart | 28 ++-- 7 files changed, 246 insertions(+), 76 deletions(-) diff --git a/lib/audio_list.dart b/lib/audio_list.dart index ada40e1..57b8695 100644 --- a/lib/audio_list.dart +++ b/lib/audio_list.dart @@ -90,8 +90,7 @@ class AudioListState extends State _onMove(AudioFile f) { showMoveToNoteDialog(context, () { - setState(() {}); - Navigator.of(context).pop(); + //Navigator.of(context).pop(); }, f); } @@ -99,62 +98,148 @@ class AudioListState extends State shareFile(f.path); } + _onToggleStarred(AudioFile f) { + toggleStarredAudioIdea(f); + } + + _makeAudioFile(AudioFile f) { + return Padding( + padding: EdgeInsets.symmetric(horizontal: 8), + child: AudioFileView( + index: -1, + globalKey: _globalKey, + file: f, + onDelete: () => _onDelete(f), + onDuplicate: null, + onToggleStarred: () => _onToggleStarred(f), + onMove: () => _onMove(f), + onShare: () => _onShare(f))); + } + + _makeAudioFileViewList(List files) { + return SliverList( + delegate: SliverChildBuilderDelegate((context, index) { + return _makeAudioFile(files[index]); + }, childCount: files.length)); + } + + _silver(List files) { + bool isAnyAudioFileStarred() { + return files.any((element) => element.starred); + } + + List noteList = []; + + if (isAnyAudioFileStarred()) { + print("notes are starred"); + List items = files.where((n) => !n.starred).toList(); + List starrtedItems = files.where((n) => n.starred).toList(); + + noteList = [ + SliverList( + delegate: SliverChildListDelegate([ + Padding( + padding: EdgeInsets.only(left: 16, top: 16), + child: Row(children: [ + Text("Starred", style: Theme.of(context).textTheme.caption), + Padding( + padding: EdgeInsets.only(left: 8, bottom: 0), + child: Icon(Icons.star, size: 16)) + ])) + ])), + _makeAudioFileViewList(starrtedItems), + SliverList( + delegate: SliverChildListDelegate([ + Padding( + padding: EdgeInsets.only(left: 16), + child: Text("Other", style: Theme.of(context).textTheme.caption)) + ])), + _makeAudioFileViewList(items), + ]; + } else { + noteList = [ + _makeAudioFileViewList(files), + ]; + } + + SliverAppBar appBar = _sliverAppBar(); + + return CustomScrollView( + slivers: [appBar]..addAll(noteList), + ); + } + + _sliverAppBar() { + return SliverAppBar( + titleSpacing: 5.0, + leading: + IconButton(icon: Icon(Icons.menu), onPressed: widget.onMenuPressed), + title: Center( + child: Align(child: Text("Ideas"), alignment: Alignment.centerLeft)), + floating: false, + pinned: true, + ); + } + @override Widget build(BuildContext context) { return ScaffoldMessenger( child: Scaffold( - key: _globalKey, - appBar: AppBar( - leading: IconButton( - icon: Icon(Icons.menu), - onPressed: _onMenu, - ), - title: Text("Ideas")), - bottomSheet: showRecordingButton() - ? null - : RecorderBottomSheet(key: Key("idea-bottom-sheet"), showTitle: true), - floatingActionButton: showRecordingButton() - ? FloatingActionButton( - child: (recorderStore.state == RecorderState.RECORDING) - ? Icon(Icons.stop) - : Icon(Icons.mic), - backgroundColor: (recorderStore.state == RecorderState.RECORDING) - ? Theme.of(context).accentColor - : null, - onPressed: () { - if (recorderStore.state == RecorderState.STOP) { - startRecordingAction(); - } else if (recorderStore.state == RecorderState.RECORDING) { - stopAction(); - } - }) - : null, - body: Container( - padding: EdgeInsets.all(8), - child: FutureBuilder>( - initialData: [], - future: LocalStorage().getAudioIdeas(), - builder: (context, AsyncSnapshot> snap) { - return ListView.builder( - itemCount: snap.data.length, - itemBuilder: (context, index) { - AudioFile f = snap.data[index]; - - return AudioFileView( - index: index, - globalKey: _globalKey, - file: snap.data[index], - onDelete: () => _onDelete(f), - onDuplicate: null, - onMove: () => _onMove(f), - onShare: () => _onShare(f)); - }); - })), - )); + key: _globalKey, + bottomSheet: showRecordingButton() + ? null + : RecorderBottomSheet( + key: Key("idea-bottom-sheet"), showTitle: true), + floatingActionButton: showRecordingButton() + ? FloatingActionButton( + child: (recorderStore.state == RecorderState.RECORDING) + ? Icon(Icons.stop) + : Icon(Icons.mic), + backgroundColor: + (recorderStore.state == RecorderState.RECORDING) + ? Theme.of(context).accentColor + : null, + onPressed: () { + if (recorderStore.state == RecorderState.STOP) { + startRecordingAction(); + } else if (recorderStore.state == + RecorderState.RECORDING) { + stopAction(); + } + }) + : null, + body: FutureBuilder>( + initialData: [], + future: LocalStorage().getAudioIdeas(), + builder: (context, AsyncSnapshot> snap) { + return _silver(snap.data); + }))); + // body: Container( + // padding: EdgeInsets.all(8), + // child: FutureBuilder>( + // initialData: [], + // future: LocalStorage().getAudioIdeas(), + // builder: (context, AsyncSnapshot> snap) { + // return ListView.builder( + // itemCount: snap.data.length, + // itemBuilder: (context, index) { + // AudioFile f = snap.data[index]; + + // return AudioFileView( + // index: index, + // globalKey: _globalKey, + // file: snap.data[index], + // onDelete: () => _onDelete(f), + // onDuplicate: null, + // onToggleStarred: () => _onToggleStarred(f), + // onMove: () => _onMove(f), + // onShare: () => _onShare(f)); + // }); + // })), + // )); } } - /* items[TabType.audio].add(AudioFileView( @@ -209,4 +294,4 @@ class AudioListState extends State onShare: () => shareFile(f.path), globalKey: _globalKey)); }); -*/ \ No newline at end of file +*/ diff --git a/lib/audio_list_store.dart b/lib/audio_list_store.dart index 93a3891..ee70f79 100644 --- a/lib/audio_list_store.dart +++ b/lib/audio_list_store.dart @@ -17,10 +17,17 @@ class AudioListStore extends Store { await LocalStorage().deleteAudioIdea(f); trigger(); }); + + toggleStarredAudioIdea.listen((AudioFile f) async { + f.starred = !f.starred; + await LocalStorage().syncAudioFile(f); + trigger(); + }); } } Action addAudioIdea = Action(); Action deleteAudioIdea = Action(); +Action toggleStarredAudioIdea = Action(); StoreToken audioListToken = StoreToken(AudioListStore()); diff --git a/lib/dialogs/audio_action_dialog.dart b/lib/dialogs/audio_action_dialog.dart index 852a65d..85315dd 100644 --- a/lib/dialogs/audio_action_dialog.dart +++ b/lib/dialogs/audio_action_dialog.dart @@ -13,7 +13,16 @@ class AudioAction { AudioAction(this.id, this.icon, this.description); } -enum AudioActionEnum { share, move, duplicate, copy, move_to_new, search } +enum AudioActionEnum { + share, + move, + duplicate, + copy, + move_to_new, + search, + star, + unstar +} var enum2Action = { AudioActionEnum.duplicate: @@ -26,6 +35,10 @@ var enum2Action = { AudioAction(AudioActionEnum.search.index, Icons.search, "Search"), AudioActionEnum.share: AudioAction(AudioActionEnum.share.index, Icons.share, "Share"), + AudioActionEnum.star: + AudioAction(AudioActionEnum.star.index, Icons.star_border, "Star"), + AudioActionEnum.unstar: + AudioAction(AudioActionEnum.unstar.index, Icons.star, "Unstar"), }; showAudioActionDialog(BuildContext context, List actionEnums, @@ -81,6 +94,7 @@ showMoveToNoteDialog(BuildContext context, Function onDone, AudioFile f) { context, new MaterialPageRoute( builder: (context) => NoteSearchViewLoader( + single: true, collection: NoteCollection.empty(), onAddNotes: (List notes) { print("selected notes: ${notes.map((e) => e.title)}"); @@ -91,14 +105,22 @@ showMoveToNoteDialog(BuildContext context, Function onDone, AudioFile f) { }); } + toggleStar() async { + f.starred = !f.starred; + await LocalStorage().syncAudioFile(f); + } + var id2action = { AudioActionEnum.move_to_new.index: onMoveToNew, AudioActionEnum.search.index: onSearch, + AudioActionEnum.star.index: toggleStar, + AudioActionEnum.unstar.index: toggleStar, }; var order = [ AudioActionEnum.move_to_new, AudioActionEnum.search, ]; + showAudioActionDialog(context, order, (value) { id2action[value.id](); }); diff --git a/lib/editor_views/audio.dart b/lib/editor_views/audio.dart index 5d45cbd..ff3b34a 100644 --- a/lib/editor_views/audio.dart +++ b/lib/editor_views/audio.dart @@ -43,7 +43,7 @@ class AudioFileView extends StatelessWidget { final AudioFile file; final int index; final GlobalKey globalKey; - final Function onDelete, onMove, onShare, onDuplicate; + final Function onDelete, onMove, onShare, onDuplicate, onToggleStarred; const AudioFileView( {@required this.file, @@ -53,6 +53,7 @@ class AudioFileView extends StatelessWidget { @required this.onShare, @required this.onMove, @required this.globalKey, + this.onToggleStarred, Key key}) : super(key: key); @@ -123,11 +124,32 @@ class AudioFileView extends StatelessWidget { var id2action = { AudioActionEnum.share.index: onShare, AudioActionEnum.move.index: onMove, + AudioActionEnum.duplicate.index: onDuplicate, + AudioActionEnum.star.index: onToggleStarred, + AudioActionEnum.unstar.index: onToggleStarred, }; - var order = [ - AudioActionEnum.share, - AudioActionEnum.move, - ]; + + var order = []; + + if (onShare != null) { + order.add(AudioActionEnum.share); + } + + if (onMove != null) { + order.add(AudioActionEnum.move); + } + + if (onDuplicate != null) { + order.add(AudioActionEnum.duplicate); + } + + if (onToggleStarred != null) { + if (file.starred) { + order.add(AudioActionEnum.unstar); + } else { + order.add(AudioActionEnum.star); + } + } showAudioActionDialog(context, order, (action) { Navigator.of(context).pop(); diff --git a/lib/local_storage.dart b/lib/local_storage.dart index 351b63d..f49a7b1 100644 --- a/lib/local_storage.dart +++ b/lib/local_storage.dart @@ -55,6 +55,14 @@ final migrations = { 5: { 4: [ "ALTER TABLE $audioFileTable DROP COLUMN text", + ], + 6: [ + "ALTER TABLE $audioFileTable ADD starred INTEGER", + ] + }, + 6: { + 5: [ + "ALTER TABLE $audioFileTable DROP COLUMN starred", ] } }; @@ -125,7 +133,7 @@ class LocalStorage { }, // Set the version. This executes the onCreate function and provides a // path to perform database upgrades and downgrades. - version: 5); + version: 6); } Future createDatabase(Database db) async { @@ -208,6 +216,14 @@ class LocalStorage { conflictAlgorithm: ConflictAlgorithm.replace); } + Future syncAudioFile(AudioFile f) async { + var db = await getDatabase(); + return await db.update(audioFileTable, f.toJson(), + where: "id = ?", + whereArgs: [f.id], + conflictAlgorithm: ConflictAlgorithm.replace); + } + Future> getSections(String noteId) async { List> maps = await (await getDatabase()) .query(sectionTable, where: 'noteId = ?', whereArgs: [noteId]); @@ -231,14 +247,18 @@ class LocalStorage { return maps.map((s) => AudioFile.fromJson(s)).toList(); } - Future> getAudioIdeas() async { + Future> getAudioIdeas({bool descending = true}) async { List> maps = await (await getDatabase()) .query(audioFileTable, where: 'noteId IS NULL', whereArgs: []); if (maps == null) return []; // copy maps to sort them properly maps = maps.map((m) => Map.from(m)).toList(); - return maps.map((s) => AudioFile.fromJson(s)).toList(); + var files = maps.map((s) => AudioFile.fromJson(s)).toList(); + if (descending) { + files.sort((a1, a2) => a2.createdAt.compareTo(a1.createdAt)); + } + return files; } Future parseNote(Map data) async { diff --git a/lib/model.dart b/lib/model.dart index ba403cf..1fe6fd7 100644 --- a/lib/model.dart +++ b/lib/model.dart @@ -25,6 +25,8 @@ String serializeRangeValues(RangeValues v) { class AudioFile { String path, id, name, text; DateTime createdAt, lastModified; + bool starred; + RangeValues loopRange; File get file => File(path); @@ -41,11 +43,13 @@ class AudioFile { this.lastModified, this.name, this.loopRange, - this.text}) { + this.text, + this.starred}) { //print("creating audio file with ${this.name} ${this.id}"); if (id == null) id = Uuid().v4().toString(); if (createdAt == null) createdAt = DateTime.now(); if (lastModified == null) lastModified = DateTime.now(); + if (starred == null) starred = false; if (name == null) { name = path .split('/') @@ -58,7 +62,12 @@ class AudioFile { } factory AudioFile.create( - {String path, Duration duration, String id, String name, String text}) { + {String path, + Duration duration, + String id, + String name, + String text, + bool starred}) { return AudioFile( createdAt: DateTime.now(), lastModified: DateTime.now(), @@ -66,6 +75,7 @@ class AudioFile { duration: duration, id: id, name: name, + starred: starred, text: text); } @@ -76,6 +86,7 @@ class AudioFile { duration: deserializeDuration(map["duration"]), loopRange: deserializeRangeValues(map['loopRange']), text: (map.containsKey("text") ? map['text'] : ""), + starred: (map.containsKey('starred') ? map['starred'] == 1 : false), id: map["id"], name: map['name'], path: map["path"]); @@ -90,6 +101,7 @@ class AudioFile { "path": path, "name": name, "text": text, + "starred": (starred) ? 1 : 0, "duration": serializeDuration(duration) }; } diff --git a/lib/note_search_view.dart b/lib/note_search_view.dart index cd6e18b..1e04e6d 100644 --- a/lib/note_search_view.dart +++ b/lib/note_search_view.dart @@ -25,10 +25,10 @@ import 'db.dart'; class NoteSearchViewLoader extends StatelessWidget { final NoteCollection collection; final ValueChanged> onAddNotes; - final int maxSelectable; + final bool single; const NoteSearchViewLoader( - {this.collection, this.onAddNotes, this.maxSelectable = -1, Key key}) + {this.collection, this.onAddNotes, this.single = false, Key key}) : super(key: key); @override @@ -49,9 +49,7 @@ class NoteSearchViewLoader extends StatelessWidget { }).toList()); return _NoteSearchView( - collection: collection, - onAddNotes: onAddNotes, - maxSelectable: maxSelectable); + collection: collection, onAddNotes: onAddNotes, single: single); } }, future: LocalStorage().getActiveNotes()); @@ -62,8 +60,8 @@ class NoteSearchViewLoader extends StatelessWidget { class _NoteSearchView extends StatefulWidget { final NoteCollection collection; final ValueChanged> onAddNotes; // function that will be called - final int maxSelectable; - _NoteSearchView({this.collection, this.onAddNotes, this.maxSelectable = -1}); + final bool single; + _NoteSearchView({this.collection, this.onAddNotes, this.single = false}); @override State createState() { @@ -200,17 +198,21 @@ class _NoteSearchViewState extends State<_NoteSearchView> _sliver() { onTap(Note note) { - if (widget.maxSelectable == -1 || - (storage.selectedNotes.length < widget.maxSelectable)) { + if (widget.single && (storage.selectedNotes.length == 1)) { + if (storage.isSelected(note)) { + removeAllSelectedNotes(); + } else { + removeAllSelectedNotes(); + triggerSelectNote(note); + } + } else { triggerSelectNote(note); } } onLongPress(Note note) { - if (widget.maxSelectable == -1 || - (storage.selectedNotes.length < widget.maxSelectable)) { - triggerSelectNote(note); - } + if (widget.single && (storage.selectedNotes.length == 1)) return; + triggerSelectNote(note); } List noteList = []; From 2ff5ef98b347591f88d9bf0c83b3e3546687ea00 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 19 Dec 2021 21:21:49 +0100 Subject: [PATCH 131/146] Add looping tracks - fix rename audio idea - add audio idea search --- lib/audio_list.dart | 267 +++++++++++++++------------ lib/audio_list_store.dart | 29 +++ lib/dialogs/audio_action_dialog.dart | 14 +- lib/editor_views/audio.dart | 15 +- lib/looper.dart | 36 +++- lib/note_editor.dart | 4 + lib/note_views/seach.dart | 41 ++-- lib/recorder_bottom_sheet.dart | 18 +- lib/recorder_store.dart | 55 +++++- 9 files changed, 324 insertions(+), 155 deletions(-) diff --git a/lib/audio_list.dart b/lib/audio_list.dart index 57b8695..d64f50d 100644 --- a/lib/audio_list.dart +++ b/lib/audio_list.dart @@ -1,3 +1,5 @@ +import 'dart:convert'; + import 'package:audioplayers/audioplayers.dart'; import 'package:flutter/material.dart'; import 'package:flutter_flux/flutter_flux.dart'; @@ -8,11 +10,14 @@ import 'package:sound/dialogs/permissions_dialog.dart'; import 'package:sound/editor_views/audio.dart'; import 'package:sound/file_manager.dart'; import 'package:sound/local_storage.dart'; +import 'package:sound/main.dart'; import 'package:sound/model.dart'; +import 'package:sound/note_views/seach.dart'; import 'package:sound/recorder_bottom_sheet.dart'; import 'package:sound/recorder_store.dart'; import 'package:sound/share.dart'; import 'package:sound/utils.dart'; +import 'package:tuple/tuple.dart'; class AudioList extends StatefulWidget { final Function onMenuPressed; @@ -29,14 +34,42 @@ class AudioListState extends State GlobalKey _globalKey = GlobalKey(); AudioListStore store; RecorderBottomSheetStore recorderStore; + List subs = []; + TextEditingController _searchController; + FocusNode searchFocusNode; @override void initState() { + print("INIT STATE"); + super.initState(); - store = listenToStore(audioListToken); - recorderStore = listenToStore(recorderBottomSheetStoreToken); + searchFocusNode = new FocusNode(); + store = listenToStore(audioListToken, handleStoreChange); + recorderStore = + listenToStore(recorderBottomSheetStoreToken, handleStoreChange); + + _searchController = TextEditingController.fromValue(TextEditingValue.empty); + + initListeners(); + setState(() {}); + } + + @override + void didChangeDependencies() { + super.didChangeDependencies(); + print("CHANGE>>>>>>>"); + } + + void handleStoreChange(Store store) { recordingFinished.clearListeners(); + audioRecordingPermissionDenied.clearListeners(); + initListeners(); + setState(() {}); // TO NOT REMOVE!!!! + } + + void initListeners() { + // recordingFinished.clearListeners(); recordingFinished.listen((f) async { print("recording finished ${f.path} with duration ${f.duration}"); @@ -52,15 +85,32 @@ class AudioListState extends State ); }); + // audioRecordingPermissionDenied.clearListeners(); audioRecordingPermissionDenied.listen((_) { showHasNoPermissionsDialog(context); }); + + toggleAudioIdeasSearch.listen((_) { + if (store.isSearching) { + Future.delayed(Duration(milliseconds: 100), () { + print("REQUESTING FOCUS"); + FocusScope.of(context).requestFocus(searchFocusNode); + }); + } + }); } @override void dispose() { + print("DISPOSE"); recordingFinished.clearListeners(); audioRecordingPermissionDenied.clearListeners(); + // recorderStore.dispose(); + // store.dispose(); + + // for (var sub in subs) { + // sub.cancel(); + // } //store.dispose(); //recorderStore.dispose(); super.dispose(); @@ -90,7 +140,7 @@ class AudioListState extends State _onMove(AudioFile f) { showMoveToNoteDialog(context, () { - //Navigator.of(context).pop(); + Navigator.of(context).pop(); }, f); } @@ -102,6 +152,10 @@ class AudioListState extends State toggleStarredAudioIdea(f); } + _onRename(AudioFile f, String name) { + renameAudioIdea(Tuple2(f, name)); + } + _makeAudioFile(AudioFile f) { return Padding( padding: EdgeInsets.symmetric(horizontal: 8), @@ -112,10 +166,28 @@ class AudioListState extends State onDelete: () => _onDelete(f), onDuplicate: null, onToggleStarred: () => _onToggleStarred(f), + onRename: (name) => _onRename(f, name), onMove: () => _onMove(f), onShare: () => _onShare(f))); } + _searchView() { + return SearchTextView( + toggleIsSearching: ({searching}) { + if (!store.isSearching) { + toggleAudioIdeasSearch(); + } + }, + onChanged: (s) { + setSearchAudioIdeas(s); + setState(() {}); + }, + text: (store.isSearching) ? "Search..." : "Idea", + focusNode: searchFocusNode, + enabled: store.isSearching, + controller: _searchController); + } + _makeAudioFileViewList(List files) { return SliverList( delegate: SliverChildBuilderDelegate((context, index) { @@ -131,7 +203,6 @@ class AudioListState extends State List noteList = []; if (isAnyAudioFileStarred()) { - print("notes are starred"); List items = files.where((n) => !n.starred).toList(); List starrtedItems = files.where((n) => n.starred).toList(); @@ -172,10 +243,27 @@ class AudioListState extends State _sliverAppBar() { return SliverAppBar( titleSpacing: 5.0, - leading: - IconButton(icon: Icon(Icons.menu), onPressed: widget.onMenuPressed), - title: Center( - child: Align(child: Text("Ideas"), alignment: Alignment.centerLeft)), + title: Padding( + child: Center(child: _searchView()), + padding: EdgeInsets.only(left: 5)), + leading: IconButton( + icon: store.isSearching ? Icon(Icons.clear) : Icon(Icons.menu), + onPressed: store.isSearching + ? () { + setSearchAudioIdeas(""); + toggleAudioIdeasSearch(); + } + : _onMenu), + actions: store.isSearching + ? [] + : [ + IconButton( + icon: Icon(Icons.search), + onPressed: () { + toggleAudioIdeasSearch(); + }, + ) + ], floating: false, pinned: true, ); @@ -183,115 +271,58 @@ class AudioListState extends State @override Widget build(BuildContext context) { - return ScaffoldMessenger( - child: Scaffold( - key: _globalKey, - bottomSheet: showRecordingButton() - ? null - : RecorderBottomSheet( - key: Key("idea-bottom-sheet"), showTitle: true), - floatingActionButton: showRecordingButton() - ? FloatingActionButton( - child: (recorderStore.state == RecorderState.RECORDING) - ? Icon(Icons.stop) - : Icon(Icons.mic), - backgroundColor: - (recorderStore.state == RecorderState.RECORDING) - ? Theme.of(context).accentColor - : null, - onPressed: () { - if (recorderStore.state == RecorderState.STOP) { - startRecordingAction(); - } else if (recorderStore.state == - RecorderState.RECORDING) { - stopAction(); - } - }) - : null, - body: FutureBuilder>( - initialData: [], - future: LocalStorage().getAudioIdeas(), - builder: (context, AsyncSnapshot> snap) { - return _silver(snap.data); - }))); - // body: Container( - // padding: EdgeInsets.all(8), - // child: FutureBuilder>( - // initialData: [], - // future: LocalStorage().getAudioIdeas(), - // builder: (context, AsyncSnapshot> snap) { - // return ListView.builder( - // itemCount: snap.data.length, - // itemBuilder: (context, index) { - // AudioFile f = snap.data[index]; - - // return AudioFileView( - // index: index, - // globalKey: _globalKey, - // file: snap.data[index], - // onDelete: () => _onDelete(f), - // onDuplicate: null, - // onToggleStarred: () => _onToggleStarred(f), - // onMove: () => _onMove(f), - // onShare: () => _onShare(f)); - // }); - // })), - // )); + return WillPopScope( + onWillPop: () async { + print("WILL POP"); + return true; + }, + child: ScaffoldMessenger( + child: Scaffold( + key: _globalKey, + bottomSheet: showRecordingButton() + ? null + : RecorderBottomSheet( + key: Key("idea-bottom-sheet"), + showTitle: true, + showRepeat: true, + ), + floatingActionButton: showRecordingButton() + ? FloatingActionButton( + child: (recorderStore.state == RecorderState.RECORDING) + ? Icon(Icons.stop) + : Icon(Icons.mic), + backgroundColor: + (recorderStore.state == RecorderState.RECORDING) + ? Theme.of(context).accentColor + : null, + onPressed: () { + if (recorderStore.state == RecorderState.STOP) { + startRecordingAction(); + } else if (recorderStore.state == + RecorderState.RECORDING) { + stopAction(); + } + }) + : null, + body: FutureBuilder>( + initialData: [], + future: LocalStorage().getAudioIdeas(), + builder: (context, AsyncSnapshot> snap) { + List files = snap.data; + + if (store.isSearching && store.search.trim() != "") { + var search = store.search.toLowerCase(); + files = files + .where((element) => jsonEncode(element.toJson()) + .toLowerCase() + .contains(search)) + .toList(); + } + setQueue(files); + + print("RERENDER"); + return _silver(files); + }))), + ); } } - -/* - - items[TabType.audio].add(AudioFileView( - file: f, - index: index, - onDuplicate: () async { - AudioFile copy = await FileManager().copyToNew(f); - addAudioFile(copy); - }, - onDelete: () => _onAudioFileDelete(f, index), - onMove: () { - showImportDialog(context, "Copy audio to", () async { - // new audio file - - AudioFile copy = await FileManager().copyToNew(f); - Future.delayed(Duration(milliseconds: 200), () { - showSnack(_globalKey.currentState, - "The audio file as copiedr to a new note"); - }); - Note note = Note.empty(); - note.audioFiles.add(copy); - - // manual sync - LocalStorage().syncNote(note); - return note; - }, (Note note) async { - AudioFile copy = await FileManager().copyToNew(f); - - Future.delayed(Duration(milliseconds: 200), () { - showSnack(_globalKey.currentState, - "The audio file as copied to a ${note.title}"); - }); - - if (note.id == widget.note.id) { - copy.name += " - copy"; - addAudioFile(copy); - } else { - // manual sync - note.audioFiles.add(copy); - LocalStorage().syncNote(note); - } - - return note; - }, - openNote: false, - syncNote: - false, // do not sync note, because otherwise this component gets updated twice - importButtonText: "Copy", - ignoreNoteId: store.note.id, - newButtonText: "Copy as NEW"); - }, - onShare: () => shareFile(f.path), - globalKey: _globalKey)); - }); -*/ diff --git a/lib/audio_list_store.dart b/lib/audio_list_store.dart index ee70f79..d4555d4 100644 --- a/lib/audio_list_store.dart +++ b/lib/audio_list_store.dart @@ -1,12 +1,21 @@ import 'package:flutter_flux/flutter_flux.dart' show Action, Store, StoreToken; import 'package:sound/local_storage.dart'; import 'package:sound/model.dart'; +import 'package:tuple/tuple.dart'; class AudioListStore extends Store { // default values + String _search; + bool _searching; + + bool get isSearching => _searching; + String get search => _search; + AudioListStore() { // init listener + _searching = false; + addAudioIdea.listen((AudioFile f) async { int row = await LocalStorage().addAudioIdea(f); print("Added audio file row $row"); @@ -23,11 +32,31 @@ class AudioListStore extends Store { await LocalStorage().syncAudioFile(f); trigger(); }); + + renameAudioIdea.listen((Tuple2 r) async { + r.item1.name = r.item2; + await LocalStorage().syncAudioFile(r.item1); + trigger(); + }); + + setSearchAudioIdeas.listen((s) { + _search = s; + trigger(); + }); + toggleAudioIdeasSearch.listen((s) { + _searching = !_searching; + _search = ""; + trigger(); + }); } } Action addAudioIdea = Action(); Action deleteAudioIdea = Action(); +Action setSearchAudioIdeas = Action(); +Action toggleAudioIdeasSearch = Action(); Action toggleStarredAudioIdea = Action(); +Action> renameAudioIdea = + Action>(); StoreToken audioListToken = StoreToken(AudioListStore()); diff --git a/lib/dialogs/audio_action_dialog.dart b/lib/dialogs/audio_action_dialog.dart index 85315dd..f798cf4 100644 --- a/lib/dialogs/audio_action_dialog.dart +++ b/lib/dialogs/audio_action_dialog.dart @@ -82,11 +82,10 @@ showMoveToNoteDialog(BuildContext context, Function onDone, AudioFile f) { // manual sync await LocalStorage().syncNote(note); - // open the note - onDone(); Navigator.of(context) - .push(new MaterialPageRoute(builder: (context) => NoteEditor(note))); + .push(new MaterialPageRoute(builder: (context) => NoteEditor(note))) + .then((value) => onDone()); } onSearch() { @@ -96,9 +95,14 @@ showMoveToNoteDialog(BuildContext context, Function onDone, AudioFile f) { builder: (context) => NoteSearchViewLoader( single: true, collection: NoteCollection.empty(), - onAddNotes: (List notes) { + onAddNotes: (List notes) async { print("selected notes: ${notes.map((e) => e.title)}"); - onDone(); + assert(notes.length == 1); + Note note = notes[0]; + note.audioFiles.add(f); + await LocalStorage().syncNote(note); + Navigator.of(context).push(new MaterialPageRoute( + builder: (context) => NoteEditor(note))); }, ))).then((value) { onDone(); diff --git a/lib/editor_views/audio.dart b/lib/editor_views/audio.dart index ff3b34a..476735b 100644 --- a/lib/editor_views/audio.dart +++ b/lib/editor_views/audio.dart @@ -43,7 +43,13 @@ class AudioFileView extends StatelessWidget { final AudioFile file; final int index; final GlobalKey globalKey; - final Function onDelete, onMove, onShare, onDuplicate, onToggleStarred; + final Function onDelete, + onMove, + onShare, + onDuplicate, + onToggleStarred, + onPlay; // onPlay is just a callback, file will already be played back + final ValueChanged onRename; const AudioFileView( {@required this.file, @@ -52,8 +58,10 @@ class AudioFileView extends StatelessWidget { @required this.onDuplicate, @required this.onShare, @required this.onMove, + @required this.onRename, @required this.globalKey, this.onToggleStarred, + this.onPlay, Key key}) : super(key: key); @@ -85,9 +93,7 @@ class AudioFileView extends StatelessWidget { new ElevatedButton( child: new Text("Apply"), onPressed: () { - file.name = controller.value.text; - changeAudioFile(file); - print("Setting name of audio file to ${file.name}"); + onRename(controller.value.text); Navigator.of(context).pop(); }, ), @@ -104,6 +110,7 @@ class AudioFileView extends StatelessWidget { onPressed: () { print("trying to play ${file.path}"); if (File(file.path).existsSync()) { + if (onPlay != null) onPlay(); startPlaybackAction(file); } else { showSnack(globalKey.currentState, "This files was removed!"); diff --git a/lib/looper.dart b/lib/looper.dart index 32f365d..7cd6bcb 100644 --- a/lib/looper.dart +++ b/lib/looper.dart @@ -10,9 +10,13 @@ class Looper extends StatefulWidget { final Function onMinimize; final bool enableMinimize; final String title; + final bool enableRepeat; Looper(this.color, this.onMinimize, - {this.enableMinimize = true, this.title, Key key}) + {this.enableMinimize = true, + this.title, + Key key, + this.enableRepeat = false}) : super(key: key); @override @@ -89,11 +93,31 @@ class _LooperState extends State with StoreWatcherMixin { : Container(), Padding( padding: EdgeInsets.only(right: 8), - child: TextButton( - child: Text("Reset Loop"), - onPressed: (range != null) - ? () => _changeRangeValues(null) - : null)) + child: Row( + children: [ + (widget.enableRepeat) + ? IconButton( + icon: Icon( + Icons.repeat, + color: (store.repeat == Repeat.all) + ? Theme.of(context).accentColor + : null, + ), + onPressed: () { + if (store.repeat == Repeat.all) + setRepeat(Repeat.off); + else + setRepeat(Repeat.all); + }, + ) + : Container(), + TextButton( + child: Text("Reset"), + onPressed: (range != null) + ? () => _changeRangeValues(null) + : null), + ], + )) ]), widget.title != null ? Padding( diff --git a/lib/note_editor.dart b/lib/note_editor.dart index 0c61c91..0c0d035 100644 --- a/lib/note_editor.dart +++ b/lib/note_editor.dart @@ -401,6 +401,10 @@ class NoteEditorState extends State addAudioFile(copy); }, onDelete: () => _onAudioFileDelete(f, index), + onRename: (name) { + f.name = name; + changeAudioFile(f); + }, onMove: () { showImportDialog(context, "Copy audio to", () async { // new audio file diff --git a/lib/note_views/seach.dart b/lib/note_views/seach.dart index f7ece56..12efd09 100644 --- a/lib/note_views/seach.dart +++ b/lib/note_views/seach.dart @@ -4,25 +4,38 @@ class SearchTextView extends StatelessWidget { final Function toggleIsSearching; final ValueChanged onChanged; final TextEditingController controller; + final FocusNode focusNode; + final bool enabled; + final String text; SearchTextView( - {this.toggleIsSearching, this.onChanged, this.controller, Key key}) + {this.toggleIsSearching, + this.onChanged, + this.controller, + Key key, + this.focusNode, + this.text = "Search...", + this.enabled = true}) : super(key: key); @override Widget build(BuildContext context) { - return TextField( - controller: controller, - autofocus: false, - style: Theme.of(context).appBarTheme.textTheme.subtitle1, - onTap: () => toggleIsSearching(searching: true), - onSubmitted: (s) => toggleIsSearching(searching: false), - decoration: InputDecoration( - border: InputBorder.none, - hintText: "Search...", - hintStyle: Theme.of(context).appBarTheme.textTheme.subtitle1), - maxLines: 1, - minLines: 1, - onChanged: (String s) => onChanged(s)); + return GestureDetector( + onTap: toggleIsSearching, + child: TextField( + controller: controller, + focusNode: focusNode, + autofocus: false, + style: Theme.of(context).appBarTheme.textTheme.subtitle1, + onTap: () => toggleIsSearching(searching: true), + onSubmitted: (s) => toggleIsSearching(searching: false), + enabled: enabled, + decoration: InputDecoration( + border: InputBorder.none, + hintText: text, + hintStyle: Theme.of(context).appBarTheme.textTheme.subtitle1), + maxLines: 1, + minLines: 1, + onChanged: (String s) => onChanged(s))); } } diff --git a/lib/recorder_bottom_sheet.dart b/lib/recorder_bottom_sheet.dart index 76853f3..815c54c 100644 --- a/lib/recorder_bottom_sheet.dart +++ b/lib/recorder_bottom_sheet.dart @@ -319,6 +319,10 @@ class _PlayerSliderState extends State @override Widget build(BuildContext context) { + var value = (playerPositionStore.position.inMilliseconds / 1000).toDouble(); + if (value > (store.currentLength.inMilliseconds / 1000).toDouble()) { + value = (store.currentLength.inMilliseconds / 1000).toDouble(); + } return Container( height: 50, child: Column(children: [ @@ -329,8 +333,7 @@ class _PlayerSliderState extends State max: store.currentLength == null ? 0.0 : (store.currentLength.inMilliseconds / 1000).toDouble(), - value: - (playerPositionStore.position.inMilliseconds / 1000).toDouble(), + value: value, onChanged: (value) { print("on changed to $value"); skipTo(Duration(milliseconds: (value * 1000).floor())); @@ -344,9 +347,13 @@ class _PlayerSliderState extends State class RecorderBottomSheet extends StatefulWidget { final bool showTitle; final bool showSkipper; + final bool showRepeat; RecorderBottomSheet( - {this.showTitle = false, this.showSkipper = true, Key key}) + {this.showTitle = false, + this.showSkipper = true, + this.showRepeat = false, + Key key}) : super(key: key); @override @@ -369,7 +376,7 @@ class _RecorderBottomSheetState extends State Animation _scaleAnimation, _sheetScaleAnimation; bool minimized = true; - ActionSubscription sub; + ActionSubscription sub, reloadSub; @override void initState() { @@ -404,6 +411,7 @@ class _RecorderBottomSheetState extends State if (sub != null) { sub.cancel(); } + if (reloadSub != null) reloadSub.cancel(); if (_controller != null) { _controller.dispose(); @@ -483,6 +491,7 @@ class _RecorderBottomSheetState extends State double width = MediaQuery.of(context).size.width; + print("NAME: ${store.currentAudioFile.name}"); Looper looper = Looper(color, () { // on if (onMinimize != null) { @@ -490,6 +499,7 @@ class _RecorderBottomSheetState extends State } }, enableMinimize: true, + enableRepeat: widget.showRepeat, title: (widget.showTitle && store.currentAudioFile != null) ? store.currentAudioFile.name : null); diff --git a/lib/recorder_store.dart b/lib/recorder_store.dart index 7fcf722..c2bd36b 100644 --- a/lib/recorder_store.dart +++ b/lib/recorder_store.dart @@ -50,14 +50,17 @@ class RecorderPositionStore extends Store { } } +enum Repeat { all, off } + Action changeRecorderPosition = Action(); StoreToken recorderPositionStoreToken = StoreToken(RecorderPositionStore()); class RecorderBottomSheetStore extends Store { //VideoPlayerController _controller; RecordingStatus _currentStatus = RecordingStatus.Unset; - AudioPlayer _player = AudioPlayer(); + AudioPlayer _player; AudioFormat _audioFormat = AudioFormat.WAV; + Repeat _repeat = Repeat.off; Recording _current; FlutterAudioRecorder _recorder; @@ -76,6 +79,7 @@ class RecorderBottomSheetStore extends Store { RangeValues get loopRange => _audioFile == null ? null : _audioFile.loopRange; // getters + Repeat get repeat => _repeat; RecorderState get state => _state; RecordingStatus get status => _currentStatus; Duration get currentLength => _currentLength; @@ -89,6 +93,15 @@ class RecorderBottomSheetStore extends Store { bool get isLooping => (loopRange != null); + // queue helper + List _queue = []; + List get queue => _queue; + + getCurrentQueueIndex() { + if (currentAudioFile == null) return -1; + return _queue.indexWhere((element) => element.id == currentAudioFile.id); + } + getDurationLoopEnd() { if (loopRange == null) return null; return Duration(milliseconds: (loopRange.end * 1000).floor()); @@ -117,6 +130,7 @@ class RecorderBottomSheetStore extends Store { Future startPlayer(String path) async { print("playing $path"); // set length not yet available + _player = AudioPlayer(); _player.onAudioPositionChanged.listen((pos) async { if (loopRange != null && pos >= getDurationLoopEnd()) { @@ -142,7 +156,24 @@ class RecorderBottomSheetStore extends Store { _player.onPlayerCompletion.listen((event) async { print("player completed"); - stopAction(false); + print("repeat: $_repeat; length: ${_queue.length}"); + + if (_repeat == Repeat.all && _queue.length > 0) { + int index = getCurrentQueueIndex(); + if (index == -1) { + print("cannot find next file, stopping..."); + stopAction(false); + return; + } + AudioFile nextAudioFile = _queue[(index + 1) % _queue.length]; + print( + "playing next in queue: ${nextAudioFile.id} ${nextAudioFile.name}"); + Future.delayed(Duration(milliseconds: 100), () async { + await startPlaybackAction(nextAudioFile); + }); + } else { + stopAction(false); + } }); print("play me"); @@ -251,9 +282,9 @@ class RecorderBottomSheetStore extends Store { _state = RecorderState.STOP; } if (_state == RecorderState.STOP || _state == RecorderState.PAUSING) { - changePlayerPosition(Duration(seconds: 0)); _audioFile = f; _currentPath = f.path; + changePlayerPosition(Duration(seconds: 0)); print("Init Audio file with Loop Range: ${f.loopRange}"); startPlayer(f.path).then((t) { @@ -272,7 +303,7 @@ class RecorderBottomSheetStore extends Store { stopPlayer(force).then((r) { if (r != -10) { _state = RecorderState.STOP; - trigger(); + playbackStoppedAction(); } }); } else { @@ -285,6 +316,10 @@ class RecorderBottomSheetStore extends Store { } }); + playbackStoppedAction.listen((_) { + trigger(); + }); + startRecordingAction.listen((_) { getFilename().then((path) { _currentPath = path; @@ -369,6 +404,15 @@ class RecorderBottomSheetStore extends Store { print("ping"); trigger(); }); + setRepeat.listen((r) { + _repeat = r; + trigger(); + }); + + setQueue.listen((q) { + _queue = q; + // trigger(); + }); print("editor store created"); } } @@ -381,6 +425,7 @@ Action setPath = Action(); Action stopAction = Action(); Action pauseAction = Action(); Action resumeAction = Action(); +Action playbackStoppedAction = Action(); Action setElapsed = Action(); Action skipTo = Action(); Action recordingFinished = Action(); @@ -389,6 +434,8 @@ Action setLoopRange = Action(); Action setAudioFormat = Action(); Action setMinimized = Action(); Action audioRecordingPermissionDenied = Action(); +Action setRepeat = Action(); +Action> setQueue = Action(); StoreToken recorderBottomSheetStoreToken = StoreToken(RecorderBottomSheetStore()); From 39a0b0b723e0a90495a2753062fcce0b32d0b26f Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 19 Dec 2021 21:45:21 +0100 Subject: [PATCH 132/146] Fix not stopping --- lib/looper.dart | 18 ++++++++++++------ lib/recorder_bottom_sheet.dart | 16 ++++++++++------ lib/recorder_store.dart | 15 ++++++++------- 3 files changed, 30 insertions(+), 19 deletions(-) diff --git a/lib/looper.dart b/lib/looper.dart index 7cd6bcb..2f4313b 100644 --- a/lib/looper.dart +++ b/lib/looper.dart @@ -9,12 +9,12 @@ class Looper extends StatefulWidget { final Color color; final Function onMinimize; final bool enableMinimize; - final String title; + final bool showTitle; final bool enableRepeat; Looper(this.color, this.onMinimize, {this.enableMinimize = true, - this.title, + this.showTitle = false, Key key, this.enableRepeat = false}) : super(key: key); @@ -25,6 +25,7 @@ class Looper extends StatefulWidget { class _LooperState extends State with StoreWatcherMixin { RangeValues range; + RecorderBottomSheetStore store; ActionSubscription audioFileChange; @@ -74,10 +75,15 @@ class _LooperState extends State with StoreWatcherMixin { print("lowerValue: $lowerValue"); print('max: $rangeMax'); print("currentLength: ${store.currentLength}"); + var title = null; + // (store.currentAudioFile != null && + // widget.showTitle) + // ? store.currentAudioFile.name + // : null; return Container( color: widget.color, - height: widget.title != null ? 150 : 120, + height: title != null ? 150 : 120, child: Column(children: [ Row( mainAxisSize: MainAxisSize.max, @@ -119,17 +125,17 @@ class _LooperState extends State with StoreWatcherMixin { ], )) ]), - widget.title != null + title != null ? Padding( padding: EdgeInsets.symmetric(horizontal: 16), child: Text( - widget.title, + title, softWrap: false, overflow: TextOverflow.clip, style: Theme.of(context).textTheme.headline6, )) : Container(), - widget.title != null ? SizedBox(height: 29) : SizedBox(height: 19), + title != null ? SizedBox(height: 29) : SizedBox(height: 19), Container( height: 50, child: Column(children: [ diff --git a/lib/recorder_bottom_sheet.dart b/lib/recorder_bottom_sheet.dart index 815c54c..6022364 100644 --- a/lib/recorder_bottom_sheet.dart +++ b/lib/recorder_bottom_sheet.dart @@ -376,7 +376,7 @@ class _RecorderBottomSheetState extends State Animation _scaleAnimation, _sheetScaleAnimation; bool minimized = true; - ActionSubscription sub, reloadSub; + ActionSubscription sub, sub2; @override void initState() { @@ -404,6 +404,10 @@ class _RecorderBottomSheetState extends State animateForward(); } }); + + sub2 = stopAction.listen((event) { + setState(() {}); + }); } @override @@ -411,7 +415,10 @@ class _RecorderBottomSheetState extends State if (sub != null) { sub.cancel(); } - if (reloadSub != null) reloadSub.cancel(); + + if (sub2 != null) { + sub2.cancel(); + } if (_controller != null) { _controller.dispose(); @@ -491,7 +498,6 @@ class _RecorderBottomSheetState extends State double width = MediaQuery.of(context).size.width; - print("NAME: ${store.currentAudioFile.name}"); Looper looper = Looper(color, () { // on if (onMinimize != null) { @@ -500,9 +506,7 @@ class _RecorderBottomSheetState extends State }, enableMinimize: true, enableRepeat: widget.showRepeat, - title: (widget.showTitle && store.currentAudioFile != null) - ? store.currentAudioFile.name - : null); + showTitle: widget.showTitle); BottomInfo info = BottomInfo(color); diff --git a/lib/recorder_store.dart b/lib/recorder_store.dart index c2bd36b..a9c1c06 100644 --- a/lib/recorder_store.dart +++ b/lib/recorder_store.dart @@ -97,6 +97,9 @@ class RecorderBottomSheetStore extends Store { List _queue = []; List get queue => _queue; + // whehter the repeat was stopped + bool _forcedStopped = false; + getCurrentQueueIndex() { if (currentAudioFile == null) return -1; return _queue.indexWhere((element) => element.id == currentAudioFile.id); @@ -131,6 +134,7 @@ class RecorderBottomSheetStore extends Store { print("playing $path"); // set length not yet available _player = AudioPlayer(); + _forcedStopped = false; _player.onAudioPositionChanged.listen((pos) async { if (loopRange != null && pos >= getDurationLoopEnd()) { @@ -158,7 +162,7 @@ class RecorderBottomSheetStore extends Store { print("player completed"); print("repeat: $_repeat; length: ${_queue.length}"); - if (_repeat == Repeat.all && _queue.length > 0) { + if (_repeat == Repeat.all && _queue.length > 0 && !_forcedStopped) { int index = getCurrentQueueIndex(); if (index == -1) { print("cannot find next file, stopping..."); @@ -288,6 +292,7 @@ class RecorderBottomSheetStore extends Store { print("Init Audio file with Loop Range: ${f.loopRange}"); startPlayer(f.path).then((t) { + playbackStarted(); // _state = RecorderState.PLAYING; // trigger(); }); @@ -295,6 +300,7 @@ class RecorderBottomSheetStore extends Store { }); stopAction.listen((force) { + _forcedStopped = force; if (_state == RecorderState.RECORDING || _state == RecorderState.PLAYING || _state == RecorderState.PAUSING) { @@ -303,7 +309,6 @@ class RecorderBottomSheetStore extends Store { stopPlayer(force).then((r) { if (r != -10) { _state = RecorderState.STOP; - playbackStoppedAction(); } }); } else { @@ -316,10 +321,6 @@ class RecorderBottomSheetStore extends Store { } }); - playbackStoppedAction.listen((_) { - trigger(); - }); - startRecordingAction.listen((_) { getFilename().then((path) { _currentPath = path; @@ -425,7 +426,7 @@ Action setPath = Action(); Action stopAction = Action(); Action pauseAction = Action(); Action resumeAction = Action(); -Action playbackStoppedAction = Action(); +Action playbackStarted = Action(); Action setElapsed = Action(); Action skipTo = Action(); Action recordingFinished = Action(); From 15a4b73db2575685e83c5ba8ab3d8c6fffc1d22a Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Tue, 21 Dec 2021 14:45:40 +0100 Subject: [PATCH 133/146] Highlight last played audio file --- lib/audio_list.dart | 20 ++++++++++++++++++-- lib/editor_views/audio.dart | 8 +++++++- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/lib/audio_list.dart b/lib/audio_list.dart index d64f50d..a9fa135 100644 --- a/lib/audio_list.dart +++ b/lib/audio_list.dart @@ -37,6 +37,7 @@ class AudioListState extends State List subs = []; TextEditingController _searchController; FocusNode searchFocusNode; + AudioFile _highlightAudioFile; @override void initState() { @@ -90,6 +91,14 @@ class AudioListState extends State showHasNoPermissionsDialog(context); }); + startPlaybackAction.listen((event) { + // find the index + + setState(() { + _highlightAudioFile = recorderStore.currentAudioFile; + }); + }); + toggleAudioIdeasSearch.listen((_) { if (store.isSearching) { Future.delayed(Duration(milliseconds: 100), () { @@ -105,6 +114,7 @@ class AudioListState extends State print("DISPOSE"); recordingFinished.clearListeners(); audioRecordingPermissionDenied.clearListeners(); + stopAction.clearListeners(); // recorderStore.dispose(); // store.dispose(); @@ -156,11 +166,12 @@ class AudioListState extends State renameAudioIdea(Tuple2(f, name)); } - _makeAudioFile(AudioFile f) { + _makeAudioFile(AudioFile f, Color color) { return Padding( padding: EdgeInsets.symmetric(horizontal: 8), child: AudioFileView( index: -1, + backgroundColor: color, globalKey: _globalKey, file: f, onDelete: () => _onDelete(f), @@ -191,7 +202,12 @@ class AudioListState extends State _makeAudioFileViewList(List files) { return SliverList( delegate: SliverChildBuilderDelegate((context, index) { - return _makeAudioFile(files[index]); + Color color = (_highlightAudioFile != null && + _highlightAudioFile.id == files[index].id) + ? Theme.of(context).accentColor + : null; + + return _makeAudioFile(files[index], color); }, childCount: files.length)); } diff --git a/lib/editor_views/audio.dart b/lib/editor_views/audio.dart index 476735b..aad730b 100644 --- a/lib/editor_views/audio.dart +++ b/lib/editor_views/audio.dart @@ -12,8 +12,10 @@ import 'package:sound/utils.dart'; class AudioFileListItem extends StatelessWidget { final Function onLongPress, onPressed; final AudioFile file; + final backgroundColor; - AudioFileListItem(this.file, {this.onLongPress, this.onPressed}); + AudioFileListItem(this.file, + {this.onLongPress, this.onPressed, this.backgroundColor}); @override Widget build(BuildContext context) { @@ -28,6 +30,7 @@ class AudioFileListItem extends StatelessWidget { trailing: trailing, subtitle: subTitle, dense: true, + tileColor: backgroundColor, visualDensity: VisualDensity.comfortable, contentPadding: EdgeInsets.all(2), leading: IconButton( @@ -43,6 +46,7 @@ class AudioFileView extends StatelessWidget { final AudioFile file; final int index; final GlobalKey globalKey; + final Color backgroundColor; final Function onDelete, onMove, onShare, @@ -60,6 +64,7 @@ class AudioFileView extends StatelessWidget { @required this.onMove, @required this.onRename, @required this.globalKey, + this.backgroundColor, this.onToggleStarred, this.onPlay, Key key}) @@ -107,6 +112,7 @@ class AudioFileView extends StatelessWidget { Widget build(BuildContext context) { var view = AudioFileListItem(file, onLongPress: () => _onAudioFileLongPress(context, file), + backgroundColor: backgroundColor, onPressed: () { print("trying to play ${file.path}"); if (File(file.path).existsSync()) { From 3272020a3c1dfd3335c68993e3daab8a38735440 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Tue, 21 Dec 2021 14:46:57 +0100 Subject: [PATCH 134/146] Repeat one --- lib/looper.dart | 20 ++++++++++++-------- lib/recorder_bottom_sheet.dart | 3 --- lib/recorder_store.dart | 9 ++++++--- 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/lib/looper.dart b/lib/looper.dart index 2f4313b..1279405 100644 --- a/lib/looper.dart +++ b/lib/looper.dart @@ -75,11 +75,9 @@ class _LooperState extends State with StoreWatcherMixin { print("lowerValue: $lowerValue"); print('max: $rangeMax'); print("currentLength: ${store.currentLength}"); - var title = null; - // (store.currentAudioFile != null && - // widget.showTitle) - // ? store.currentAudioFile.name - // : null; + var title = (store.currentAudioFile != null && widget.showTitle) + ? store.currentAudioFile.name + : null; return Container( color: widget.color, @@ -104,16 +102,22 @@ class _LooperState extends State with StoreWatcherMixin { (widget.enableRepeat) ? IconButton( icon: Icon( - Icons.repeat, - color: (store.repeat == Repeat.all) + (store.repeat == Repeat.one) + ? Icons.repeat_one + : Icons.repeat, + color: (store.repeat == Repeat.all || + store.repeat == Repeat.one) ? Theme.of(context).accentColor : null, ), onPressed: () { if (store.repeat == Repeat.all) + setRepeat(Repeat.one); + else if (store.repeat == Repeat.one) { setRepeat(Repeat.off); - else + } else { setRepeat(Repeat.all); + } }, ) : Container(), diff --git a/lib/recorder_bottom_sheet.dart b/lib/recorder_bottom_sheet.dart index 6022364..8d841c1 100644 --- a/lib/recorder_bottom_sheet.dart +++ b/lib/recorder_bottom_sheet.dart @@ -403,9 +403,6 @@ class _RecorderBottomSheetState extends State if (!minimized && (!store.isLooping || force)) { animateForward(); } - }); - - sub2 = stopAction.listen((event) { setState(() {}); }); } diff --git a/lib/recorder_store.dart b/lib/recorder_store.dart index a9c1c06..f17c8b9 100644 --- a/lib/recorder_store.dart +++ b/lib/recorder_store.dart @@ -50,7 +50,7 @@ class RecorderPositionStore extends Store { } } -enum Repeat { all, off } +enum Repeat { all, off, one } Action changeRecorderPosition = Action(); StoreToken recorderPositionStoreToken = StoreToken(RecorderPositionStore()); @@ -162,14 +162,17 @@ class RecorderBottomSheetStore extends Store { print("player completed"); print("repeat: $_repeat; length: ${_queue.length}"); - if (_repeat == Repeat.all && _queue.length > 0 && !_forcedStopped) { + if ((_repeat == Repeat.all) || + (_repeat == Repeat.one) && _queue.length > 0 && !_forcedStopped) { int index = getCurrentQueueIndex(); if (index == -1) { print("cannot find next file, stopping..."); stopAction(false); return; } - AudioFile nextAudioFile = _queue[(index + 1) % _queue.length]; + int nextIndex = + (_repeat == Repeat.all) ? (index + 1) % _queue.length : index; + AudioFile nextAudioFile = _queue[nextIndex]; print( "playing next in queue: ${nextAudioFile.id} ${nextAudioFile.name}"); Future.delayed(Duration(milliseconds: 100), () async { From c2358eb9fe50c749fbb3b2f4098841472f20e839 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Tue, 21 Dec 2021 14:47:16 +0100 Subject: [PATCH 135/146] Allow import multiple audio files --- android/app/src/main/AndroidManifest.xml | 6 ++ lib/dialogs/import_dialog.dart | 102 ++++++++++++++++------- 2 files changed, 79 insertions(+), 29 deletions(-) diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 51514a7..deccb24 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -78,6 +78,12 @@ + + + + + + diff --git a/lib/dialogs/import_dialog.dart b/lib/dialogs/import_dialog.dart index ca04c96..764fa00 100644 --- a/lib/dialogs/import_dialog.dart +++ b/lib/dialogs/import_dialog.dart @@ -2,10 +2,13 @@ import 'package:flutter/material.dart'; import 'package:sound/local_storage.dart'; import 'package:sound/model.dart'; import 'package:sound/note_editor.dart'; +import 'package:sound/note_search_view.dart'; typedef FutureNoteCallback = Future Function(); typedef FutureNoteImportCallback = Future Function(Note); +enum ImportMode { asNew, search } + showImportDialog(BuildContext context, String title, FutureNoteCallback onNew, FutureNoteImportCallback onImport, {String newButtonText = 'Import as NEW', @@ -22,6 +25,7 @@ showImportDialog(BuildContext context, String title, FutureNoteCallback onNew, builder: (BuildContext context) { // if selected is null (use empty new note) Note selected; + ImportMode mode; _open(Note note) async { if (openNote) { @@ -40,7 +44,7 @@ showImportDialog(BuildContext context, String title, FutureNoteCallback onNew, _open(note); } - _onNew() async { + _importAsNew() async { Note newNote = await onNew(); if (syncNote) { LocalStorage().syncNote(newNote); @@ -50,39 +54,79 @@ showImportDialog(BuildContext context, String title, FutureNoteCallback onNew, _open(newNote); } + _onNew(setState) { + setState(() { + selected = null; + mode = ImportMode.asNew; + }); + } + + _onSearch(setState) { + Navigator.push( + context, + new MaterialPageRoute( + builder: (context) => NoteSearchViewLoader( + single: true, + collection: NoteCollection.empty(), + onAddNotes: (List notes) async { + setState(() { + selected = notes[0]; + mode = ImportMode.search; + }); + }, + ))); + } + return StatefulBuilder(builder: (context, setState) { return AlertDialog( title: new Text(title), content: Builder(builder: (context) { - double width = MediaQuery.of(context).size.width; return Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - Flexible( - child: ElevatedButton( - child: Text(newButtonText), onPressed: _onNew)), - SizedBox(height: 10), - Row(mainAxisAlignment: MainAxisAlignment.center, children: [ - Container(child: Text("-- or select a note --")) - ]), - SizedBox(height: 15), - Row(mainAxisSize: MainAxisSize.max, children: [ - new DropdownButton( - value: selected, - isDense: true, - items: notes - .map((e) => DropdownMenuItem( - child: SizedBox( - width: width - 152, - child: Text( - "${notes.indexOf(e)}: ${e.title}", - overflow: TextOverflow.ellipsis)), - value: e)) - .toList(), - onChanged: (v) => setState(() => selected = v)), - ]) - ]); + mainAxisSize: MainAxisSize.min, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + Column( + mainAxisSize: MainAxisSize.min, + children: [ + IconButton( + icon: Icon( + Icons.new_label, + size: 30, + color: (mode == ImportMode.asNew) + ? Theme.of(context).accentColor + : null, + ), + onPressed: () => _onNew(setState)), + Text("As New", textScaleFactor: 0.7) + ], + ), + Column( + mainAxisSize: MainAxisSize.min, + children: [ + IconButton( + icon: Icon( + Icons.search, + size: 30, + color: (mode == ImportMode.search) + ? Theme.of(context).accentColor + : null, + ), + onPressed: () => _onSearch(setState)), + Text("Search", textScaleFactor: 0.7) + ], + ), + ]), + (selected != null) + ? Padding( + padding: EdgeInsets.only(top: 32), + child: Text(selected.title.trim() == "" + ? EMPTY_TEXT + : selected.title)) + : Container() + ], + ); }), actions: [ new TextButton( From ed6ead5fa4c20d3bde5c35400f719db7bc4e08b5 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Tue, 21 Dec 2021 15:47:09 +0100 Subject: [PATCH 136/146] Fixes --- lib/audio_list.dart | 16 ++++-- lib/dialogs/audio_import_dialog.dart | 7 ++- lib/dialogs/import_dialog.dart | 73 +++++++++++++++++++++++----- lib/menu.dart | 61 ++++++++--------------- lib/menu_store.dart | 49 +++++++++++++++++++ lib/note_editor.dart | 30 ++++++++---- 6 files changed, 167 insertions(+), 69 deletions(-) create mode 100644 lib/menu_store.dart diff --git a/lib/audio_list.dart b/lib/audio_list.dart index a9fa135..3369e99 100644 --- a/lib/audio_list.dart +++ b/lib/audio_list.dart @@ -11,6 +11,7 @@ import 'package:sound/editor_views/audio.dart'; import 'package:sound/file_manager.dart'; import 'package:sound/local_storage.dart'; import 'package:sound/main.dart'; +import 'package:sound/menu_store.dart'; import 'package:sound/model.dart'; import 'package:sound/note_views/seach.dart'; import 'package:sound/recorder_bottom_sheet.dart'; @@ -21,7 +22,7 @@ import 'package:tuple/tuple.dart'; class AudioList extends StatefulWidget { final Function onMenuPressed; - AudioList(this.onMenuPressed); + AudioList({this.onMenuPressed}); @override State createState() { @@ -33,6 +34,7 @@ class AudioListState extends State with StoreWatcherMixin { GlobalKey _globalKey = GlobalKey(); AudioListStore store; + MenuStore menuStore; RecorderBottomSheetStore recorderStore; List subs = []; TextEditingController _searchController; @@ -45,6 +47,8 @@ class AudioListState extends State super.initState(); + menuStore = listenToStore(menuStoreToken); + searchFocusNode = new FocusNode(); store = listenToStore(audioListToken, handleStoreChange); recorderStore = @@ -59,7 +63,6 @@ class AudioListState extends State @override void didChangeDependencies() { super.didChangeDependencies(); - print("CHANGE>>>>>>>"); } void handleStoreChange(Store store) { @@ -114,7 +117,6 @@ class AudioListState extends State print("DISPOSE"); recordingFinished.clearListeners(); audioRecordingPermissionDenied.clearListeners(); - stopAction.clearListeners(); // recorderStore.dispose(); // store.dispose(); @@ -136,7 +138,11 @@ class AudioListState extends State stopAction(); } - widget.onMenuPressed(); + if (widget.onMenuPressed != null) { + widget.onMenuPressed(); + } else { + toggleMenu(); + } } showRecordingButton() { @@ -193,7 +199,7 @@ class AudioListState extends State setSearchAudioIdeas(s); setState(() {}); }, - text: (store.isSearching) ? "Search..." : "Idea", + text: (store.isSearching) ? "Search..." : "Ideas", focusNode: searchFocusNode, enabled: store.isSearching, controller: _searchController); diff --git a/lib/dialogs/audio_import_dialog.dart b/lib/dialogs/audio_import_dialog.dart index 52656a0..91dcf5c 100644 --- a/lib/dialogs/audio_import_dialog.dart +++ b/lib/dialogs/audio_import_dialog.dart @@ -80,6 +80,11 @@ _showAudioImportDialog(BuildContext context, List files) async { return note; } + Future> onImportAudioIdeas() async { + return await _prepareFiles(); + } + showImportDialog( - context, "Import ${files.length} Audio Files", onNew, onImport); + context, "Import ${files.length} Audio Files", onNew, onImport, + onImportAudioIdeas: onImportAudioIdeas); } diff --git a/lib/dialogs/import_dialog.dart b/lib/dialogs/import_dialog.dart index 764fa00..6fc32ad 100644 --- a/lib/dialogs/import_dialog.dart +++ b/lib/dialogs/import_dialog.dart @@ -1,13 +1,16 @@ import 'package:flutter/material.dart'; +import 'package:sound/audio_list.dart'; import 'package:sound/local_storage.dart'; +import 'package:sound/menu_store.dart'; import 'package:sound/model.dart'; import 'package:sound/note_editor.dart'; import 'package:sound/note_search_view.dart'; typedef FutureNoteCallback = Future Function(); +typedef FutureAudioIdeasImportCallback = Future> Function(); typedef FutureNoteImportCallback = Future Function(Note); -enum ImportMode { asNew, search } +enum ImportMode { asNew, search, idea } showImportDialog(BuildContext context, String title, FutureNoteCallback onNew, FutureNoteImportCallback onImport, @@ -15,7 +18,8 @@ showImportDialog(BuildContext context, String title, FutureNoteCallback onNew, String importButtonText = "Import", String ignoreNoteId, bool openNote = true, - bool syncNote = true}) async { + bool syncNote = true, + FutureAudioIdeasImportCallback onImportAudioIdeas}) async { List notes = await LocalStorage().getActiveNotes(); if (ignoreNoteId != null) notes = notes.where((element) => element.id != ignoreNoteId).toList(); @@ -34,7 +38,17 @@ showImportDialog(BuildContext context, String title, FutureNoteCallback onNew, } } - _import() async { + _importAsNew() async { + Note newNote = await onNew(); + if (syncNote) { + LocalStorage().syncNote(newNote); + } + + Navigator.of(context).pop(); + _open(newNote); + } + + _importSelected() async { // sync and pop current dialog Note note = await onImport(selected); if (syncNote) { @@ -44,14 +58,25 @@ showImportDialog(BuildContext context, String title, FutureNoteCallback onNew, _open(note); } - _importAsNew() async { - Note newNote = await onNew(); - if (syncNote) { - LocalStorage().syncNote(newNote); + _importAsIdea() async { + List ideas = await onImportAudioIdeas(); + for (AudioFile f in ideas) { + await LocalStorage().syncAudioFile(f); } + setMenuItem(MenuItem.AUDIO); + Navigator.pop(context); + } - Navigator.of(context).pop(); - _open(newNote); + _import() async { + if (mode == ImportMode.asNew) { + await _importAsNew(); + } else if (mode == ImportMode.search && selected != null) { + await _importSelected(); + } else if (mode == ImportMode.idea) { + _importAsIdea(); + } else { + print("cannot import"); + } } _onNew(setState) { @@ -61,6 +86,13 @@ showImportDialog(BuildContext context, String title, FutureNoteCallback onNew, }); } + _onIdea(setState) { + setState(() { + selected = null; + mode = ImportMode.idea; + }); + } + _onSearch(setState) { Navigator.push( context, @@ -99,7 +131,7 @@ showImportDialog(BuildContext context, String title, FutureNoteCallback onNew, : null, ), onPressed: () => _onNew(setState)), - Text("As New", textScaleFactor: 0.7) + Text("New Note", textScaleFactor: 0.7) ], ), Column( @@ -117,6 +149,23 @@ showImportDialog(BuildContext context, String title, FutureNoteCallback onNew, Text("Search", textScaleFactor: 0.7) ], ), + (onImportAudioIdeas != null) + ? Column( + mainAxisSize: MainAxisSize.min, + children: [ + IconButton( + icon: Icon( + Icons.lightbulb, + size: 30, + color: (mode == ImportMode.idea) + ? Theme.of(context).accentColor + : null, + ), + onPressed: () => _onIdea(setState)), + Text("As Ideas", textScaleFactor: 0.7) + ], + ) + : Container(), ]), (selected != null) ? Padding( @@ -137,9 +186,7 @@ showImportDialog(BuildContext context, String title, FutureNoteCallback onNew, ), // usually buttons at the bottom of the dialog new ElevatedButton( - child: new Text(importButtonText), - onPressed: (selected != null) ? _import : null, - ), + child: new Text(importButtonText), onPressed: _import), ], ); }); diff --git a/lib/menu.dart b/lib/menu.dart index a03b4bb..879b0f3 100644 --- a/lib/menu.dart +++ b/lib/menu.dart @@ -1,8 +1,10 @@ import 'package:flutter/material.dart'; +import 'package:flutter_flux/flutter_flux.dart'; import 'package:sound/audio_list.dart'; import 'package:sound/home.dart'; import 'package:sound/intent_receive.dart'; import 'package:sound/collections.dart'; +import 'package:sound/menu_store.dart'; import 'package:sound/settings.dart'; import 'package:sound/trash.dart'; @@ -15,17 +17,8 @@ class Menu extends StatefulWidget { } } -enum MenuItem { HOME, SETTINGS, TRASH, SETS, AUDIO } - -class MenuOption { - MenuItem item; - String name; - IconData icon; - MenuOption({this.item, this.name, this.icon}); -} - -class _MenuState extends State with SingleTickerProviderStateMixin { - bool isCollapsed = true; +class _MenuState extends State + with SingleTickerProviderStateMixin, StoreWatcherMixin { final animateMenuDuration = const Duration(milliseconds: 300); AnimationController _controller; @@ -33,20 +26,12 @@ class _MenuState extends State with SingleTickerProviderStateMixin { Animation _scaleAnimation, _menuScaleAnimation; // scale home content from 1.0 to 0.8 - MenuItem current = MenuItem.HOME; - - var options = [ - MenuOption(icon: Icons.dashboard, name: "Home", item: MenuItem.HOME), - MenuOption(icon: Icons.music_note, name: "Ideas", item: MenuItem.AUDIO), - MenuOption( - icon: Icons.list_alt_outlined, name: "Sets", item: MenuItem.SETS), - MenuOption(icon: Icons.delete_sweep, name: "Trash", item: MenuItem.TRASH), - MenuOption(icon: Icons.settings, name: "Settings", item: MenuItem.SETTINGS), - ]; + MenuStore store; @override void initState() { super.initState(); + store = listenToStore(menuStoreToken); _controller = AnimationController(vsync: this, duration: animateMenuDuration); _scaleAnimation = Tween(begin: 1.0, end: 0.8).animate(_controller); @@ -66,9 +51,7 @@ class _MenuState extends State with SingleTickerProviderStateMixin { _switch(MenuItem item) { _onMenuPressed(); - setState(() { - current = item; - }); + setMenuItem(item); //Navigator.push( // context, new MaterialPageRoute(builder: (context) => Settings())); } @@ -109,7 +92,7 @@ class _MenuState extends State with SingleTickerProviderStateMixin { } _getView() { - switch (current) { + switch (store.item) { case MenuItem.HOME: return Home(this._onMenuPressed); case MenuItem.SETTINGS: @@ -119,7 +102,7 @@ class _MenuState extends State with SingleTickerProviderStateMixin { case MenuItem.SETS: return Collections(this._onMenuPressed); case MenuItem.AUDIO: - return AudioList(this._onMenuPressed); + return AudioList(onMenuPressed: this._onMenuPressed); default: return Container(); } @@ -133,22 +116,22 @@ class _MenuState extends State with SingleTickerProviderStateMixin { duration: animateMenuDuration, top: 0, bottom: 0, - left: isCollapsed ? 0 : 0.6 * screenWidth, - right: isCollapsed ? 0 : -0.4 * screenWidth, + left: store.collapsed ? 0 : 0.6 * screenWidth, + right: store.collapsed ? 0 : -0.4 * screenWidth, child: ScaleTransition( scale: _scaleAnimation, child: MediaQuery.removePadding( context: context, - removeTop: isCollapsed ? false : true, + removeTop: store.collapsed ? false : true, child: Material( animationDuration: animateMenuDuration, - child: !isCollapsed + child: !store.collapsed ? GestureDetector( onTap: _onMenuPressed, child: AbsorbPointer(child: _getView())) : _getView(), - borderRadius: - BorderRadius.all(Radius.circular(isCollapsed ? 0 : 10)), + borderRadius: BorderRadius.all( + Radius.circular(store.collapsed ? 0 : 10)), color: Theme.of(context).appBarTheme.color, clipBehavior: Clip.antiAlias, elevation: 5, @@ -156,14 +139,12 @@ class _MenuState extends State with SingleTickerProviderStateMixin { } _onMenuPressed() { - setState(() { - if (isCollapsed) { - _controller.forward(); - } else { - _controller.reverse(); - } - isCollapsed = !isCollapsed; - }); + if (store.collapsed) { + _controller.forward(); + } else { + _controller.reverse(); + } + toggleMenu(); } _menuWithScaffold(BuildContext context) { diff --git a/lib/menu_store.dart b/lib/menu_store.dart new file mode 100644 index 0000000..23291d4 --- /dev/null +++ b/lib/menu_store.dart @@ -0,0 +1,49 @@ +import 'package:flutter/material.dart' show IconData, Icons; +import 'package:flutter_flux/flutter_flux.dart' show Action, Store, StoreToken; + +enum MenuItem { HOME, SETTINGS, TRASH, SETS, AUDIO } + +class MenuOption { + MenuItem item; + String name; + IconData icon; + MenuOption({this.item, this.name, this.icon}); +} + +var options = [ + MenuOption(icon: Icons.dashboard, name: "Home", item: MenuItem.HOME), + MenuOption(icon: Icons.music_note, name: "Ideas", item: MenuItem.AUDIO), + MenuOption(icon: Icons.list_alt_outlined, name: "Sets", item: MenuItem.SETS), + MenuOption(icon: Icons.delete_sweep, name: "Trash", item: MenuItem.TRASH), + MenuOption(icon: Icons.settings, name: "Settings", item: MenuItem.SETTINGS), +]; + +class MenuStore extends Store { + // default values + + MenuItem _item = MenuItem.HOME; + + bool _collapsed; + + bool get collapsed => _collapsed; + MenuItem get item => _item; + + MenuStore() { + // init listener + _collapsed = true; + + toggleMenu.listen((s) { + _collapsed = !_collapsed; + trigger(); + }); + + setMenuItem.listen((item) { + _item = item; + trigger(); + }); + } +} + +Action setMenuItem = Action(); +Action toggleMenu = Action(); +StoreToken menuStoreToken = StoreToken(MenuStore()); diff --git a/lib/note_editor.dart b/lib/note_editor.dart index 0c0d035..f1ee58a 100644 --- a/lib/note_editor.dart +++ b/lib/note_editor.dart @@ -406,35 +406,45 @@ class NoteEditorState extends State changeAudioFile(f); }, onMove: () { - showImportDialog(context, "Copy audio to", () async { + showImportDialog(context, "Move audio to", () async { // new audio file - AudioFile copy = await FileManager().copyToNew(f); Future.delayed(Duration(milliseconds: 200), () { showSnack(_globalKey.currentState, - "The audio file as copiedr to a new note"); + "The audio file as moved to a new note"); }); + + store.note.audioFiles.removeWhere((a) => a.id == f.id); + LocalStorage().syncNote(store.note); + Note note = Note.empty(); - note.audioFiles.add(copy); + note.audioFiles.add(f); + LocalStorage().syncNote(note); + setState(() {}); // manual sync - LocalStorage().syncNote(note); return note; }, (Note note) async { - AudioFile copy = await FileManager().copyToNew(f); - + print("Testing"); + print("Moving to note ${note.title}"); Future.delayed(Duration(milliseconds: 200), () { showSnack(_globalKey.currentState, - "The audio file as copied to a ${note.title}"); + "The audio file was moved to a ${note.title}"); }); if (note.id == widget.note.id) { + AudioFile copy = await FileManager().copyToNew(f); copy.name += " - copy"; addAudioFile(copy); } else { // manual sync - note.audioFiles.add(copy); + + store.note.audioFiles.removeWhere((a) => a.id == f.id); + LocalStorage().syncNote(store.note); + + note.audioFiles.add(f); LocalStorage().syncNote(note); + setState(() {}); } return note; @@ -442,7 +452,7 @@ class NoteEditorState extends State openNote: false, syncNote: false, // do not sync note, because otherwise this component gets updated twice - importButtonText: "Copy", + importButtonText: "Move", ignoreNoteId: store.note.id, newButtonText: "Copy as NEW"); }, From e5c7ee176baa408a2c14f648656ab9bd22569f77 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Tue, 21 Dec 2021 15:58:47 +0100 Subject: [PATCH 137/146] Fix audio import --- lib/dialogs/audio_import_dialog.dart | 1 + lib/dialogs/import_dialog.dart | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/dialogs/audio_import_dialog.dart b/lib/dialogs/audio_import_dialog.dart index 91dcf5c..431f03f 100644 --- a/lib/dialogs/audio_import_dialog.dart +++ b/lib/dialogs/audio_import_dialog.dart @@ -63,6 +63,7 @@ _showAudioImportDialog(BuildContext context, List files) async { String newBase = Uuid().v4() + ext; String newPath = p.join(filesDir.path, newBase); AudioFile move = await FileManager().copy(f, newPath, id: f.id); + move.createdAt = f.file.lastModifiedSync(); move.name = p.basename(f.path); copied.add(move); } diff --git a/lib/dialogs/import_dialog.dart b/lib/dialogs/import_dialog.dart index 6fc32ad..a4de284 100644 --- a/lib/dialogs/import_dialog.dart +++ b/lib/dialogs/import_dialog.dart @@ -61,9 +61,10 @@ showImportDialog(BuildContext context, String title, FutureNoteCallback onNew, _importAsIdea() async { List ideas = await onImportAudioIdeas(); for (AudioFile f in ideas) { - await LocalStorage().syncAudioFile(f); + await LocalStorage().addAudioIdea(f); } setMenuItem(MenuItem.AUDIO); + Navigator.pop(context); } @@ -71,6 +72,7 @@ showImportDialog(BuildContext context, String title, FutureNoteCallback onNew, if (mode == ImportMode.asNew) { await _importAsNew(); } else if (mode == ImportMode.search && selected != null) { + print("import selected..."); await _importSelected(); } else if (mode == ImportMode.idea) { _importAsIdea(); From 16456b5ebaf87766a8e260099ab117c7b194f565 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Thu, 23 Dec 2021 13:40:48 +0100 Subject: [PATCH 138/146] Use subs --- lib/audio_list.dart | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/lib/audio_list.dart b/lib/audio_list.dart index 3369e99..0ddbd81 100644 --- a/lib/audio_list.dart +++ b/lib/audio_list.dart @@ -90,33 +90,40 @@ class AudioListState extends State }); // audioRecordingPermissionDenied.clearListeners(); - audioRecordingPermissionDenied.listen((_) { + subs.add(audioRecordingPermissionDenied.listen((_) { showHasNoPermissionsDialog(context); - }); + })); - startPlaybackAction.listen((event) { + subs.add(startPlaybackAction.listen((event) { // find the index setState(() { _highlightAudioFile = recorderStore.currentAudioFile; }); - }); + })); - toggleAudioIdeasSearch.listen((_) { + subs.add(toggleAudioIdeasSearch.listen((_) { if (store.isSearching) { Future.delayed(Duration(milliseconds: 100), () { print("REQUESTING FOCUS"); FocusScope.of(context).requestFocus(searchFocusNode); }); } - }); + })); + + subs.add(stopAction.listen((event) { + setState(() {}); + })); } @override void dispose() { print("DISPOSE"); - recordingFinished.clearListeners(); - audioRecordingPermissionDenied.clearListeners(); + for (ActionSubscription sub in subs) { + if (sub != null) { + sub.cancel(); + } + } // recorderStore.dispose(); // store.dispose(); From 9ecf51ebb95fbd0084673ff93cc92f170305247c Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 1 Mar 2026 03:50:14 +0100 Subject: [PATCH 139/146] Bootstrap clean modernization from origin/feature-audio-files --- .metadata | 24 +- analysis_options.yaml | 3 + android/app/build.gradle | 77 +- android/app/src/debug/AndroidManifest.xml | 9 +- android/app/src/main/AndroidManifest.xml | 93 +- android/app/src/profile/AndroidManifest.xml | 6 +- android/build.gradle | 17 +- android/gradle.properties | 5 +- .../gradle/wrapper/gradle-wrapper.properties | 3 +- android/settings.gradle | 30 +- ios/Flutter/AppFrameworkInfo.plist | 2 +- ios/Flutter/Debug.xcconfig | 1 + ios/Flutter/Release.xcconfig | 1 + ios/Podfile | 41 + ios/Podfile.lock | 121 ++ ios/Runner.xcodeproj/project.pbxproj | 116 +- .../contents.xcworkspacedata | 2 +- .../xcshareddata/xcschemes/Runner.xcscheme | 5 +- .../contents.xcworkspacedata | 3 + ios/Runner/AppDelegate.swift | 2 +- ios/Runner/Info.plist | 6 + lib/audio_ideas.dart | 108 ++ lib/backup.dart | 243 +-- lib/collections_page.dart | 243 +++ lib/db.dart | 35 +- lib/dialogs/audio_action_dialog.dart | 81 +- lib/dialogs/audio_import_dialog.dart | 39 +- lib/dialogs/color_picker_dialog.dart | 17 +- lib/dialogs/confirmation_dialogs.dart | 199 ++- lib/dialogs/export_dialog.dart | 42 +- lib/dialogs/import_dialog.dart | 201 +-- lib/dialogs/initial_import_dialog.dart | 65 +- lib/dialogs/text_import_dialog.dart | 21 +- lib/editor_store.dart | 437 +++--- lib/editor_views/additional_info.dart | 344 +---- lib/editor_views/audio.dart | 382 ++--- lib/editor_views/section.dart | 369 +++-- lib/export.dart | 364 +---- lib/export_note.dart | 30 +- lib/file_manager.dart | 10 +- lib/gallery.dart | 17 +- lib/home.dart | 276 ++-- lib/intent_receive.dart | 54 +- lib/local_storage.dart | 529 +++---- lib/looper.dart | 235 +-- lib/main.dart | 232 ++- lib/menu.dart | 99 +- lib/model.dart | 787 ++++------ lib/note_editor.dart | 795 +++------- lib/note_item.dart | 450 +++--- lib/note_list.dart | 7 +- lib/note_viewer.dart | 468 ++---- lib/note_views/appbar.dart | 224 +-- lib/note_views/seach.dart | 49 +- lib/range_slider.dart | 1325 +---------------- lib/recorder_bottom_sheet.dart | 648 ++------ lib/recorder_store.dart | 592 +++----- lib/settings.dart | 356 ++--- lib/settings_store.dart | 126 +- lib/share.dart | 11 +- lib/storage.dart | 531 ++++--- lib/trash.dart | 6 +- lib/ultimate.dart | 4 - lib/utils.dart | 157 +- macos/.gitignore | 7 + macos/Flutter/Flutter-Debug.xcconfig | 2 + macos/Flutter/Flutter-Release.xcconfig | 2 + macos/Flutter/GeneratedPluginRegistrant.swift | 24 + macos/Podfile | 42 + macos/Podfile.lock | 62 + macos/Runner.xcodeproj/project.pbxproj | 801 ++++++++++ .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/xcschemes/Runner.xcscheme | 99 ++ .../contents.xcworkspacedata | 10 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + macos/Runner/AppDelegate.swift | 13 + .../AppIcon.appiconset/Contents.json | 68 + .../AppIcon.appiconset/app_icon_1024.png | Bin 0 -> 102994 bytes .../AppIcon.appiconset/app_icon_128.png | Bin 0 -> 5680 bytes .../AppIcon.appiconset/app_icon_16.png | Bin 0 -> 520 bytes .../AppIcon.appiconset/app_icon_256.png | Bin 0 -> 14142 bytes .../AppIcon.appiconset/app_icon_32.png | Bin 0 -> 1066 bytes .../AppIcon.appiconset/app_icon_512.png | Bin 0 -> 36406 bytes .../AppIcon.appiconset/app_icon_64.png | Bin 0 -> 2218 bytes macos/Runner/Base.lproj/MainMenu.xib | 343 +++++ macos/Runner/Configs/AppInfo.xcconfig | 14 + macos/Runner/Configs/Debug.xcconfig | 2 + macos/Runner/Configs/Release.xcconfig | 2 + macos/Runner/Configs/Warnings.xcconfig | 13 + macos/Runner/DebugProfile.entitlements | 14 + macos/Runner/Info.plist | 34 + macos/Runner/MainFlutterWindow.swift | 15 + macos/Runner/Release.entitlements | 10 + macos/RunnerTests/RunnerTests.swift | 12 + pubspec.lock | 773 +++++++--- pubspec.yaml | 55 +- test/widget_test.dart | 32 +- 97 files changed, 6204 insertions(+), 8036 deletions(-) create mode 100644 analysis_options.yaml create mode 100644 ios/Podfile create mode 100644 ios/Podfile.lock create mode 100644 lib/audio_ideas.dart create mode 100644 lib/collections_page.dart create mode 100644 macos/.gitignore create mode 100644 macos/Flutter/Flutter-Debug.xcconfig create mode 100644 macos/Flutter/Flutter-Release.xcconfig create mode 100644 macos/Flutter/GeneratedPluginRegistrant.swift create mode 100644 macos/Podfile create mode 100644 macos/Podfile.lock create mode 100644 macos/Runner.xcodeproj/project.pbxproj create mode 100644 macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme create mode 100644 macos/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 macos/Runner/AppDelegate.swift create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png create mode 100644 macos/Runner/Base.lproj/MainMenu.xib create mode 100644 macos/Runner/Configs/AppInfo.xcconfig create mode 100644 macos/Runner/Configs/Debug.xcconfig create mode 100644 macos/Runner/Configs/Release.xcconfig create mode 100644 macos/Runner/Configs/Warnings.xcconfig create mode 100644 macos/Runner/DebugProfile.entitlements create mode 100644 macos/Runner/Info.plist create mode 100644 macos/Runner/MainFlutterWindow.swift create mode 100644 macos/Runner/Release.entitlements create mode 100644 macos/RunnerTests/RunnerTests.swift diff --git a/.metadata b/.metadata index bcef94e..34b9d76 100644 --- a/.metadata +++ b/.metadata @@ -4,7 +4,27 @@ # This file should be version controlled and should not be manually edited. version: - revision: bbfbf1770cca2da7c82e887e4e4af910034800b6 - channel: stable + revision: "9f455d2486bcb28cad87b062475f42edc959f636" + channel: "stable" project_type: app + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: 9f455d2486bcb28cad87b062475f42edc959f636 + base_revision: 9f455d2486bcb28cad87b062475f42edc959f636 + - platform: macos + create_revision: 9f455d2486bcb28cad87b062475f42edc959f636 + base_revision: 9f455d2486bcb28cad87b062475f42edc959f636 + + # User provided section + + # List of Local paths (relative to this file) that should be + # ignored by the migrate tool. + # + # Files that are not part of the templates will be ignored by default. + unmanaged_files: + - 'lib/main.dart' + - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/analysis_options.yaml b/analysis_options.yaml new file mode 100644 index 0000000..5de6c67 --- /dev/null +++ b/analysis_options.yaml @@ -0,0 +1,3 @@ +analyzer: + exclude: + - build/** diff --git a/android/app/build.gradle b/android/app/build.gradle index e4c35ac..6d0c393 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -1,3 +1,9 @@ +plugins { + id 'com.android.application' + id 'kotlin-android' + id 'dev.flutter.flutter-gradle-plugin' +} + def localProperties = new Properties() def localPropertiesFile = rootProject.file('local.properties') if (localPropertiesFile.exists()) { @@ -6,87 +12,50 @@ if (localPropertiesFile.exists()) { } } -def keystoreProperties = new Properties() -def keystorePropertiesFile = rootProject.file('key.properties') -if (keystorePropertiesFile.exists()) { - keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) -} - -def flutterRoot = localProperties.getProperty('flutter.sdk') -if (flutterRoot == null) { - throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") -} - -def flutterVersionCode = localProperties.getProperty('flutter.versionCode') -if (flutterVersionCode == null) { - flutterVersionCode = '1' -} - -def flutterVersionName = localProperties.getProperty('flutter.versionName') -if (flutterVersionName == null) { - flutterVersionName = '1.0' -} - -apply plugin: 'com.android.application' -apply plugin: 'kotlin-android' -apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" +def flutterVersionCode = localProperties.getProperty('flutter.versionCode') ?: '1' +def flutterVersionName = localProperties.getProperty('flutter.versionName') ?: '1.0' android { - compileSdkVersion 28 + namespace 'com.example.sound' + compileSdk flutter.compileSdkVersion + ndkVersion flutter.ndkVersion - sourceSets { - main.java.srcDirs += 'src/main/kotlin' + compileOptions { + sourceCompatibility JavaVersion.VERSION_11 + targetCompatibility JavaVersion.VERSION_11 } - lintOptions { - disable 'InvalidPackage' + kotlinOptions { + jvmTarget = JavaVersion.VERSION_11.toString() } defaultConfig { - // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId "de.onenightproductions.sketchord" - minSdkVersion 19 - targetSdkVersion 30 + minSdk flutter.minSdkVersion + targetSdk flutter.targetSdkVersion versionCode flutterVersionCode.toInteger() versionName flutterVersionName } flavorDimensions "app" productFlavors { - dev { dimension "app" resValue "string", "app_name", "SketChord Dev" versionNameSuffix "-dev" - applicationIdSuffix ".dev" + applicationId "de.onenightproductions.sketchord.dev" } prod { dimension "app" resValue "string", "app_name", "SketChord" - applicationIdSuffix ".prod" + applicationId "de.onenightproductions.sketchord.prod" versionNameSuffix "-prod" } } - signingConfigs { - release { - keyAlias keystoreProperties['keyAlias'] - keyPassword keystoreProperties['keyPassword'] - storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null - storePassword keystoreProperties['storePassword'] - } - } - buildTypes { release { - // TODO: Add your own signing config for the release build. - // Signing with the debug keys for now, so `flutter run --release` works. - signingConfig signingConfigs.release - - minifyEnabled true - shrinkResources true - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - + signingConfig signingConfigs.debug } } } @@ -94,7 +63,3 @@ android { flutter { source '../..' } - -dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" -} diff --git a/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml index 693742c..b628ae4 100644 --- a/android/app/src/debug/AndroidManifest.xml +++ b/android/app/src/debug/AndroidManifest.xml @@ -1,13 +1,8 @@ - - + - + - - - - - - + - - - - - - - - + android:name="io.flutter.embedding.android.NormalTheme" + android:resource="@style/NormalTheme" /> - - + + - - - - - - + + + + - - - - - - - - - - + + + - + - - - - + + + + + + + + diff --git a/android/app/src/profile/AndroidManifest.xml b/android/app/src/profile/AndroidManifest.xml index 0df249b..bbd7ee7 100644 --- a/android/app/src/profile/AndroidManifest.xml +++ b/android/app/src/profile/AndroidManifest.xml @@ -1,7 +1,3 @@ - - + diff --git a/android/build.gradle b/android/build.gradle index 3100ad2..bc157bd 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,20 +1,7 @@ -buildscript { - ext.kotlin_version = '1.3.50' - repositories { - google() - jcenter() - } - - dependencies { - classpath 'com.android.tools.build:gradle:3.5.0' - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } -} - allprojects { repositories { google() - jcenter() + mavenCentral() } } @@ -26,6 +13,6 @@ subprojects { project.evaluationDependsOn(':app') } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/android/gradle.properties b/android/gradle.properties index 443ee21..1d21b8c 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -1,5 +1,4 @@ -org.gradle.jvmargs=-Xmx1536M -android.enableR8=true +org.gradle.jvmargs=-Xmx4G -XX:MaxMetaspaceSize=2G -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError android.useAndroidX=true android.enableJetifier=true -extra-gen-snapshot-options=--obfuscate \ No newline at end of file +kotlin.jvm.target.validation.mode=warning diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index 296b146..ac3b479 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ -#Fri Jun 23 08:50:38 CEST 2017 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-all.zip diff --git a/android/settings.gradle b/android/settings.gradle index 44e62bc..b507b94 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -1,11 +1,25 @@ -include ':app' +pluginManagement { + def flutterSdkPath = { + def properties = new Properties() + file("local.properties").withInputStream { properties.load(it) } + def flutterSdkPath = properties.getProperty("flutter.sdk") + assert flutterSdkPath != null, "flutter.sdk not set in local.properties" + return flutterSdkPath + }() -def localPropertiesFile = new File(rootProject.projectDir, "local.properties") -def properties = new Properties() + includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") -assert localPropertiesFile.exists() -localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } + repositories { + google() + mavenCentral() + gradlePluginPortal() + } +} -def flutterSdkPath = properties.getProperty("flutter.sdk") -assert flutterSdkPath != null, "flutter.sdk not set in local.properties" -apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" +plugins { + id "dev.flutter.flutter-plugin-loader" version "1.0.0" + id "com.android.application" version "8.9.1" apply false + id "org.jetbrains.kotlin.android" version "2.1.0" apply false +} + +include ":app" diff --git a/ios/Flutter/AppFrameworkInfo.plist b/ios/Flutter/AppFrameworkInfo.plist index 6b4c0f7..d57061d 100644 --- a/ios/Flutter/AppFrameworkInfo.plist +++ b/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 8.0 + 13.0 diff --git a/ios/Flutter/Debug.xcconfig b/ios/Flutter/Debug.xcconfig index 592ceee..ec97fc6 100644 --- a/ios/Flutter/Debug.xcconfig +++ b/ios/Flutter/Debug.xcconfig @@ -1 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" #include "Generated.xcconfig" diff --git a/ios/Flutter/Release.xcconfig b/ios/Flutter/Release.xcconfig index 592ceee..c4855bf 100644 --- a/ios/Flutter/Release.xcconfig +++ b/ios/Flutter/Release.xcconfig @@ -1 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" #include "Generated.xcconfig" diff --git a/ios/Podfile b/ios/Podfile new file mode 100644 index 0000000..c9c27c7 --- /dev/null +++ b/ios/Podfile @@ -0,0 +1,41 @@ +platform :ios, '13.0' + +ENV['COCOAPODS_DISABLE_STATS'] = 'true' + +project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, +} + +def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" + end + + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches + end + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" +end + +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + +flutter_ios_podfile_setup + +target 'Runner' do + use_frameworks! + + flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) +end + +post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_ios_build_settings(target) + target.build_configurations.each do |config| + config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '13.0' + end + end +end diff --git a/ios/Podfile.lock b/ios/Podfile.lock new file mode 100644 index 0000000..a0e34e2 --- /dev/null +++ b/ios/Podfile.lock @@ -0,0 +1,121 @@ +PODS: + - audioplayers_darwin (0.0.1): + - Flutter + - FlutterMacOS + - DKImagePickerController/Core (4.3.9): + - DKImagePickerController/ImageDataManager + - DKImagePickerController/Resource + - DKImagePickerController/ImageDataManager (4.3.9) + - DKImagePickerController/PhotoGallery (4.3.9): + - DKImagePickerController/Core + - DKPhotoGallery + - DKImagePickerController/Resource (4.3.9) + - DKPhotoGallery (0.0.19): + - DKPhotoGallery/Core (= 0.0.19) + - DKPhotoGallery/Model (= 0.0.19) + - DKPhotoGallery/Preview (= 0.0.19) + - DKPhotoGallery/Resource (= 0.0.19) + - SDWebImage + - SwiftyGif + - DKPhotoGallery/Core (0.0.19): + - DKPhotoGallery/Model + - DKPhotoGallery/Preview + - SDWebImage + - SwiftyGif + - DKPhotoGallery/Model (0.0.19): + - SDWebImage + - SwiftyGif + - DKPhotoGallery/Preview (0.0.19): + - DKPhotoGallery/Model + - DKPhotoGallery/Resource + - SDWebImage + - SwiftyGif + - DKPhotoGallery/Resource (0.0.19): + - SDWebImage + - SwiftyGif + - file_picker (0.0.1): + - DKImagePickerController/PhotoGallery + - Flutter + - Flutter (1.0.0) + - path_provider_foundation (0.0.1): + - Flutter + - FlutterMacOS + - permission_handler_apple (9.3.0): + - Flutter + - receive_sharing_intent (1.8.1): + - Flutter + - record_ios (1.2.0): + - Flutter + - SDWebImage (5.21.7): + - SDWebImage/Core (= 5.21.7) + - SDWebImage/Core (5.21.7) + - share_plus (0.0.1): + - Flutter + - shared_preferences_foundation (0.0.1): + - Flutter + - FlutterMacOS + - sqflite_darwin (0.0.4): + - Flutter + - FlutterMacOS + - SwiftyGif (5.4.5) + +DEPENDENCIES: + - audioplayers_darwin (from `.symlinks/plugins/audioplayers_darwin/darwin`) + - file_picker (from `.symlinks/plugins/file_picker/ios`) + - Flutter (from `Flutter`) + - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`) + - permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`) + - receive_sharing_intent (from `.symlinks/plugins/receive_sharing_intent/ios`) + - record_ios (from `.symlinks/plugins/record_ios/ios`) + - share_plus (from `.symlinks/plugins/share_plus/ios`) + - shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`) + - sqflite_darwin (from `.symlinks/plugins/sqflite_darwin/darwin`) + +SPEC REPOS: + trunk: + - DKImagePickerController + - DKPhotoGallery + - SDWebImage + - SwiftyGif + +EXTERNAL SOURCES: + audioplayers_darwin: + :path: ".symlinks/plugins/audioplayers_darwin/darwin" + file_picker: + :path: ".symlinks/plugins/file_picker/ios" + Flutter: + :path: Flutter + path_provider_foundation: + :path: ".symlinks/plugins/path_provider_foundation/darwin" + permission_handler_apple: + :path: ".symlinks/plugins/permission_handler_apple/ios" + receive_sharing_intent: + :path: ".symlinks/plugins/receive_sharing_intent/ios" + record_ios: + :path: ".symlinks/plugins/record_ios/ios" + share_plus: + :path: ".symlinks/plugins/share_plus/ios" + shared_preferences_foundation: + :path: ".symlinks/plugins/shared_preferences_foundation/darwin" + sqflite_darwin: + :path: ".symlinks/plugins/sqflite_darwin/darwin" + +SPEC CHECKSUMS: + audioplayers_darwin: 4027b33a8f471d996c13f71cb77f0b1583b5d923 + DKImagePickerController: 946cec48c7873164274ecc4624d19e3da4c1ef3c + DKPhotoGallery: b3834fecb755ee09a593d7c9e389d8b5d6deed60 + file_picker: b159e0c068aef54932bb15dc9fd1571818edaf49 + Flutter: cabc95a1d2626b1b06e7179b784ebcf0c0cde467 + path_provider_foundation: 0b743cbb62d8e47eab856f09262bb8c1ddcfe6ba + permission_handler_apple: 9878588469a2b0d0fc1e048d9f43605f92e6cec2 + receive_sharing_intent: 79c848f5b045674ad60b9fea3bafea59962ad2c1 + record_ios: 26294aaa39e4bb7665b0fef78bdc23d723b432f2 + SDWebImage: e9fc87c1aab89a8ab1bbd74eba378c6f53be8abf + share_plus: 8b6f8b3447e494cca5317c8c3073de39b3600d1f + shared_preferences_foundation: 5086985c1d43c5ba4d5e69a4e8083a389e2909e6 + sqflite_darwin: 5a7236e3b501866c1c9befc6771dfd73ffb8702d + SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4 + +PODFILE CHECKSUM: 9685c422f978e625b905c0c983d663c2de289dfc + +COCOAPODS: 1.15.2 diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 9aa00ae..0356d75 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 46; + objectVersion = 54; objects = { /* Begin PBXBuildFile section */ @@ -13,6 +13,7 @@ 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; + C88FDDAD4C348B31BB3F3D2C /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F15C175C2430CD5EC14B4CE7 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -31,7 +32,9 @@ /* Begin PBXFileReference section */ 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; + 2FAC781980CA86D8ED6838D8 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 67DE8992BF8EA33C49EB5557 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; @@ -42,6 +45,8 @@ 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + D4B3D6E841C0FF6D5E3FD916 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; + F15C175C2430CD5EC14B4CE7 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -49,12 +54,21 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + C88FDDAD4C348B31BB3F3D2C /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 09F35E9A7360AAE72678E134 /* Frameworks */ = { + isa = PBXGroup; + children = ( + F15C175C2430CD5EC14B4CE7 /* Pods_Runner.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -72,6 +86,8 @@ 9740EEB11CF90186004384FC /* Flutter */, 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, + F4EBE7CC58343850C592F1C8 /* Pods */, + 09F35E9A7360AAE72678E134 /* Frameworks */, ); sourceTree = ""; }; @@ -98,6 +114,17 @@ path = Runner; sourceTree = ""; }; + F4EBE7CC58343850C592F1C8 /* Pods */ = { + isa = PBXGroup; + children = ( + D4B3D6E841C0FF6D5E3FD916 /* Pods-Runner.debug.xcconfig */, + 2FAC781980CA86D8ED6838D8 /* Pods-Runner.release.xcconfig */, + 67DE8992BF8EA33C49EB5557 /* Pods-Runner.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -105,12 +132,15 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( + 4EDCB63E7AD716ECEC3A4226 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + D6DA809C184AE964E62E477E /* [CP] Embed Pods Frameworks */, + 12DFB11D7EFEBB27E3239BA2 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -127,7 +157,7 @@ 97C146E61CF9000F007C117D /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1020; + LastUpgradeCheck = 1510; ORGANIZATIONNAME = ""; TargetAttributes = { 97C146ED1CF9000F007C117D = { @@ -169,12 +199,31 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ + 12DFB11D7EFEBB27E3239BA2 /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Copy Pods Resources"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); name = "Thin Binary"; outputPaths = ( @@ -183,8 +232,31 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; + 4EDCB63E7AD716ECEC3A4226 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); @@ -197,6 +269,23 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; + D6DA809C184AE964E62E477E /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -272,7 +361,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -294,7 +383,10 @@ "$(PROJECT_DIR)/Flutter", ); INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); LIBRARY_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/Flutter", @@ -354,7 +446,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -403,7 +495,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -426,7 +518,10 @@ "$(PROJECT_DIR)/Flutter", ); INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); LIBRARY_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/Flutter", @@ -453,7 +548,10 @@ "$(PROJECT_DIR)/Flutter", ); INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); LIBRARY_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/Flutter", @@ -492,4 +590,4 @@ /* End XCConfigurationList section */ }; rootObject = 97C146E61CF9000F007C117D /* Project object */; -} \ No newline at end of file +} diff --git a/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata index 1d526a1..919434a 100644 --- a/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ b/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -2,6 +2,6 @@ + location = "self:"> diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index a28140c..fc5ae03 100644 --- a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ @@ -45,11 +46,13 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + customLLDBInitFile = "$(SRCROOT)/Flutter/ephemeral/flutter_lldbinit" launchStyle = "0" useCustomWorkingDirectory = "NO" ignoresPersistentStateOnLaunch = "NO" debugDocumentVersioning = "YES" debugServiceExtension = "internal" + enableGPUValidationMode = "1" allowLocationSimulation = "YES"> diff --git a/ios/Runner.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcworkspace/contents.xcworkspacedata index 1d526a1..21a3cc1 100644 --- a/ios/Runner.xcworkspace/contents.xcworkspacedata +++ b/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -4,4 +4,7 @@ + + diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift index 70693e4..b636303 100644 --- a/ios/Runner/AppDelegate.swift +++ b/ios/Runner/AppDelegate.swift @@ -1,7 +1,7 @@ import UIKit import Flutter -@UIApplicationMain +@main @objc class AppDelegate: FlutterAppDelegate { override func application( _ application: UIApplication, diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index 2f74184..00d96c2 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -41,5 +41,11 @@ UIViewControllerBasedStatusBarAppearance + NSMicrophoneUsageDescription + SketChord needs microphone access to record audio clips for your notes. + CADisableMinimumFrameDurationOnPhone + + UIApplicationSupportsIndirectInputEvents + diff --git a/lib/audio_ideas.dart b/lib/audio_ideas.dart new file mode 100644 index 0000000..6ac4013 --- /dev/null +++ b/lib/audio_ideas.dart @@ -0,0 +1,108 @@ +import 'package:flutter/material.dart'; +import 'package:sound/dialogs/audio_action_dialog.dart'; +import 'package:sound/editor_views/audio.dart'; +import 'package:sound/local_storage.dart'; +import 'package:sound/model.dart'; +import 'package:sound/share.dart'; + +class AudioIdeasPage extends StatefulWidget { + final VoidCallback onMenuPressed; + + const AudioIdeasPage({required this.onMenuPressed, super.key}); + + @override + State createState() => _AudioIdeasPageState(); +} + +class _AudioIdeasPageState extends State { + List _ideas = []; + bool _loading = true; + + @override + void initState() { + super.initState(); + _loadIdeas(); + } + + Future _loadIdeas() async { + final ideas = await LocalStorage().getAudioIdeas(); + if (!mounted) return; + setState(() { + _ideas = ideas; + _loading = false; + }); + } + + Future _deleteIdea(AudioFile file) async { + await LocalStorage().deleteAudioIdea(file); + await _loadIdeas(); + } + + Future _moveIdea(AudioFile file) async { + await showMoveToNoteDialog(context, () async { + await LocalStorage().deleteAudioIdea(file); + await _loadIdeas(); + }, file); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + leading: IconButton( + icon: const Icon(Icons.menu), + onPressed: widget.onMenuPressed, + ), + title: const Text('Ideas'), + ), + body: _loading + ? const Center(child: CircularProgressIndicator()) + : _ideas.isEmpty + ? const Center(child: Text('No audio ideas yet')) + : RefreshIndicator( + onRefresh: _loadIdeas, + child: ListView.builder( + itemCount: _ideas.length, + itemBuilder: (context, index) { + final file = _ideas[index]; + return Dismissible( + key: ValueKey(file.id), + direction: DismissDirection.endToStart, + onDismissed: (_) => _deleteIdea(file), + background: Container( + alignment: Alignment.centerRight, + color: Colors.redAccent, + padding: const EdgeInsets.symmetric(horizontal: 16), + child: const Icon(Icons.delete), + ), + child: ListTile( + leading: IconButton( + icon: const Icon(Icons.play_arrow), + onPressed: () => playInDialog(context, file), + ), + title: Text(file.name), + subtitle: Text(file.durationString), + trailing: PopupMenuButton( + onSelected: (action) async { + if (action == 'share') { + await shareFile(file.path); + } else if (action == 'move') { + await _moveIdea(file); + } else if (action == 'delete') { + await _deleteIdea(file); + } + }, + itemBuilder: (context) => const [ + PopupMenuItem(value: 'share', child: Text('Share')), + PopupMenuItem(value: 'move', child: Text('Move to Note')), + PopupMenuItem(value: 'delete', child: Text('Delete')), + ], + ), + ), + ); + }, + ), + ), + ); + } +} diff --git a/lib/backup.dart b/lib/backup.dart index ff18eff..986e26f 100644 --- a/lib/backup.dart +++ b/lib/backup.dart @@ -1,32 +1,29 @@ import 'dart:convert'; import 'dart:io'; import 'dart:typed_data'; -import 'package:archive/archive.dart'; import 'package:archive/archive_io.dart'; import 'package:file_picker/file_picker.dart'; -import 'package:flutter_file_dialog/flutter_file_dialog.dart'; import 'package:path_provider/path_provider.dart'; import 'package:permission_handler/permission_handler.dart'; -import 'package:uuid/uuid.dart'; import "model.dart"; import 'package:path/path.dart' as p; const NOTES_FILENAME = "notes.json"; -const COLLECTIONS_FILENAME = "collections.json"; -const AUDIOFILES_FILENAME = "audioFiles.json"; class ImportException implements Exception { String errMsg() => 'cannot import file'; } -class BackupData { - final List notes; - final List collections; - - BackupData({this.notes, this.collections}); -} - class Backup { + Future _pickFilePath( + {required FileType type, List? allowedExtensions}) async { + final result = await FilePicker.platform.pickFiles( + type: type, + allowedExtensions: allowedExtensions, + ); + return result?.files.single.path; + } + Future getPermissions() async { return await Permission.storage.request().isGranted; } @@ -43,19 +40,25 @@ class Backup { return Directory(p.join(root.path, 'files')); } - Future import() async { - File f = await FilePicker.getFile( - type: FileType.any, - // allowedExtensions: ['zip', 'json'], - ); - if (f.path.endsWith(".json")) { - Note note = readNote(f.path); - return BackupData(notes: [note], collections: []); - } else if (f.path.endsWith(".zip")) { - return await _readZip(f.path); + Future> importZip() async { + final path = + await _pickFilePath(type: FileType.custom, allowedExtensions: ['zip']); + if (path == null) return []; + return readZip(path); + } + + Future> import() async { + final path = await _pickFilePath(type: FileType.any); + if (path == null) return []; + if (path.endsWith(".json")) { + Note? note = readNote(path); + if (note == null) return []; + return [note]; + } else if (path.endsWith(".zip")) { + return await readZip(path); } - return BackupData(notes: [], collections: []); + return []; } String decodeZipContent(ArchiveFile f) { @@ -63,10 +66,8 @@ class Backup { return new String.fromCharCodes(l); } - Future _readZip(String path) async { + Future> readZip(String path) async { List notes = []; - List collections = []; - try { final bytes = File(path).readAsBytesSync(); @@ -76,138 +77,34 @@ class Backup { print(f.name); } final noteListFile = archive.files - .firstWhere((a) => a.name == NOTES_FILENAME, orElse: () => null); - - if (noteListFile == null) { - print("cannot find note list"); - throw new ImportException(); - } + .where((a) => a.name == NOTES_FILENAME) + .cast() + .firstWhere((a) => a != null, orElse: () => null); + if (noteListFile == null) throw ImportException(); final noteIds = jsonDecode(decodeZipContent(noteListFile)); print("zip contains $noteIds"); - Map noteIdMap = {}; for (String noteId in noteIds) { - var noteFile = archive.files - .firstWhere((a) => a.name == "$noteId.json", orElse: () => null); - + final noteFile = archive.files + .where((a) => a.name == "$noteId.json") + .cast() + .firstWhere((a) => a != null, orElse: () => null); if (noteFile == null) { - print("cannot find note with id $noteId"); - throw new ImportException(); + continue; } var noteMap = jsonDecode(decodeZipContent(noteFile)); Note note = Note.fromJson(noteMap, noteMap['id']); - note.id = Uuid().v4(); - - for (Section section in note.sections) { - section.id = Uuid().v4(); - } - - for (AudioFile f in note.audioFiles) { - noteIdMap[f.id] = Uuid().v4(); - f.id = noteIdMap[f.id]; - } - notes.add(note); } - - final collectionsListFile = archive.files.firstWhere( - (a) => a.name == COLLECTIONS_FILENAME, - orElse: () => null); - - if (collectionsListFile == null) { - print("cannot find collections list"); - } else { - final collectionIds = jsonDecode(decodeZipContent(collectionsListFile)); - - for (String collectionId in collectionIds) { - var collectionFile = archive.files.firstWhere( - (a) => a.name == "$collectionId.json", - orElse: () => null); - - if (collectionFile == null) { - print("cannot find note with id $collectionId"); - } else { - var collectionMap = jsonDecode(decodeZipContent(collectionFile)); - NoteCollection c = NoteCollection.fromJson(collectionMap); - collections.add(c); - } - } - } - - for (NoteCollection c in collections) { - // update id - c.id = Uuid().v4(); - for (Note note in c.notes) { - if (noteIdMap.containsKey(note.id)) { - note.id = noteIdMap[note.id]; - } - } - } - - final audioFilesFile = archive.files - .firstWhere((a) => a.name == AUDIOFILES_FILENAME, orElse: () => null); - - Map renameMap = {}; - - if (audioFilesFile == null) { - print("cannot find audiofiles json"); - } else { - print("restoring audio files"); - Map audioFilesMap = - jsonDecode(decodeZipContent(audioFilesFile)); - final filesDir = await getFilesDir(); - - audioFilesMap.forEach((internalName, path) { - final file = archive.files - .firstWhere((a) => a.name == internalName, orElse: () => null); - if (file == null) { - print( - "Error: cannot find audio file in archive $internalName that maps to $path"); - } else if (File(path).existsSync() && !renameMap.containsKey(path)) { - final data = file.content as List; - - final ext = p.extension(path); - final newPath = p.join(filesDir.path, Uuid().v4() + ext); - - print("write file to new path $newPath because it already exists"); - - File(newPath) - ..createSync(recursive: true) - ..writeAsBytesSync(data); - - renameMap[path] = newPath; - } else { - try { - print( - "restoring audio file from ${file.nameOfLinkedFile} to $path"); - final data = file.content as List; - - File(path) - ..createSync(recursive: true) - ..writeAsBytesSync(data); - } catch (e) { - print("cannot restore file $internalName to $path"); - } - } - }); - - for (Note note in notes) { - for (AudioFile f in note.audioFiles) { - if (renameMap.containsKey(f.path)) { - f.path = renameMap[f.path]; - } - } - } - } } catch (e) { print("unknwon error occurred $e"); throw new ImportException(); } - return BackupData(notes: notes, collections: collections); + return notes; } - Note readNote(String path) { + Note? readNote(String path) { String data = File(path).readAsStringSync(); try { var jsonData = jsonDecode(data); @@ -226,92 +123,46 @@ class Backup { } Future importNote() async { - File f = await FilePicker.getFile( - type: FileType.custom, - allowedExtensions: ['json'], - ); - - return readNote(f.path); + final path = + await _pickFilePath(type: FileType.custom, allowedExtensions: ['json']); + if (path == null) return Note.empty(); + return readNote(path) ?? Note.empty(); } - Future exportZip(List notes, - {List collections, String filename}) async { + Future exportZip(List notes) async { // Zip a directory to out.zip using the zipDirectory convenience method // Directory tempDir = await getExternalStorageDirectory(); // cache directory which is located at /storage/emulated/0/Android/data/com.myapp.de/cache/ //Directory tempDir = (await getExternalCacheDirectories())[0]; - Directory tempDir = await getFilesDir(); - String path; + print("saving into directory ${tempDir.path}"); - if (filename == null) { - path = p.join(tempDir.path, - "sound_notes_backup_${DateTime.now().toIso8601String()}.zip"); - } else { - path = p.join(tempDir.path, filename); - } + String path = p.join(tempDir.path, + "sound_notes_backup_${DateTime.now().toIso8601String()}.zip"); print("saving to $path"); var encoder = ZipFileEncoder(); - // create file try { encoder.create(path); } on FileSystemException catch (e) { print("cannot create zip at location $path ${e.message}"); - return null; + return ''; } - Map audioFilesMap = {}; - // write notes for (Note note in notes) { var filename = "${note.id}.json"; var notePath = p.join(tempDir.path, filename); File(notePath).writeAsStringSync(jsonEncode(note.toJson())); encoder.addFile(File(notePath), filename); - - for (AudioFile f in note.audioFiles) { - File file = File(f.path); - String internalName = filename + Uuid().v4() + ".wav"; - - if (file.existsSync()) { - audioFilesMap[internalName] = f.path; - encoder.addFile(file, internalName); - } - } } - // write note filenames var notesPath = p.join(tempDir.path, NOTES_FILENAME); File(notesPath) .writeAsStringSync(jsonEncode(notes.map((n) => n.id).toList())); encoder.addFile(File(notesPath), NOTES_FILENAME); - - // collections - - if (collections != null) { - for (NoteCollection c in collections) { - var filename = "${c.id}.json"; - var collectionPath = p.join(tempDir.path, filename); - File(collectionPath).writeAsStringSync(jsonEncode(c.toJson())); - - encoder.addFile(File(collectionPath), filename); - } - - // write sets - var setsPath = p.join(tempDir.path, COLLECTIONS_FILENAME); - File(setsPath) - .writeAsStringSync(jsonEncode(collections.map((n) => n.id).toList())); - encoder.addFile(File(setsPath), COLLECTIONS_FILENAME); - } - - var audioFilesPath = p.join(tempDir.path, AUDIOFILES_FILENAME); - File(audioFilesPath).writeAsStringSync(jsonEncode(audioFilesMap)); - encoder.addFile(File(audioFilesPath), AUDIOFILES_FILENAME); - - // close encoder.close(); return path; } diff --git a/lib/collections_page.dart b/lib/collections_page.dart new file mode 100644 index 0000000..bc3819a --- /dev/null +++ b/lib/collections_page.dart @@ -0,0 +1,243 @@ +import 'package:flutter/material.dart'; +import 'package:sound/local_storage.dart'; +import 'package:sound/model.dart'; +import 'package:sound/note_editor.dart'; + +class CollectionsPage extends StatefulWidget { + final VoidCallback onMenuPressed; + + const CollectionsPage({required this.onMenuPressed, super.key}); + + @override + State createState() => _CollectionsPageState(); +} + +class _CollectionsPageState extends State { + List _collections = []; + bool _loading = true; + + @override + void initState() { + super.initState(); + _loadCollections(); + } + + Future _loadCollections() async { + final collections = await LocalStorage().getCollections(); + if (!mounted) return; + setState(() { + _collections = collections; + _loading = false; + }); + } + + Future _createCollection() async { + final collection = NoteCollection.empty(); + await LocalStorage().syncCollection(collection); + await _openCollection(collection); + } + + Future _openCollection(NoteCollection collection) async { + await Navigator.push( + context, + MaterialPageRoute( + builder: (context) => CollectionEditorPage(collection: collection), + ), + ); + await _loadCollections(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + leading: IconButton( + icon: const Icon(Icons.menu), + onPressed: widget.onMenuPressed, + ), + title: const Text('Sets'), + actions: [ + IconButton(icon: const Icon(Icons.add), onPressed: _createCollection), + ], + ), + body: _loading + ? const Center(child: CircularProgressIndicator()) + : _collections.isEmpty + ? const Center(child: Text('No sets yet')) + : RefreshIndicator( + onRefresh: _loadCollections, + child: ListView.builder( + itemCount: _collections.length, + itemBuilder: (context, index) { + final c = _collections[index]; + return ListTile( + title: Text(c.title.isEmpty ? 'Untitled Set' : c.title), + subtitle: Text('${c.activeNotes.length} notes'), + trailing: const Icon(Icons.chevron_right), + onTap: () => _openCollection(c), + ); + }, + ), + ), + ); + } +} + +class CollectionEditorPage extends StatefulWidget { + final NoteCollection collection; + + const CollectionEditorPage({required this.collection, super.key}); + + @override + State createState() => _CollectionEditorPageState(); +} + +class _CollectionEditorPageState extends State { + late NoteCollection _collection; + late TextEditingController _titleController; + late TextEditingController _descriptionController; + + @override + void initState() { + super.initState(); + _collection = widget.collection; + _titleController = TextEditingController(text: _collection.title); + _descriptionController = TextEditingController(text: _collection.description); + } + + @override + void dispose() { + _titleController.dispose(); + _descriptionController.dispose(); + super.dispose(); + } + + Future _save() async { + _collection.title = _titleController.text; + _collection.description = _descriptionController.text; + await LocalStorage().syncCollection(_collection); + } + + Future _deleteCollection() async { + await LocalStorage().deleteCollection(_collection); + if (mounted) Navigator.pop(context); + } + + Future _addNotes() async { + final notes = await LocalStorage().getActiveNotes(); + if (!mounted) return; + + final selected = _collection.notes.map((n) => n.id).toSet(); + await showDialog( + context: context, + builder: (context) { + return StatefulBuilder( + builder: (context, setState) { + return AlertDialog( + title: const Text('Add notes'), + content: SizedBox( + width: 460, + height: 420, + child: ListView.builder( + itemCount: notes.length, + itemBuilder: (context, index) { + final note = notes[index]; + final checked = selected.contains(note.id); + return CheckboxListTile( + value: checked, + title: Text(note.title.isEmpty ? 'Untitled Note' : note.title), + onChanged: (value) { + setState(() { + if (value ?? false) { + selected.add(note.id); + } else { + selected.remove(note.id); + } + }); + }, + ); + }, + ), + ), + actions: [ + TextButton( + onPressed: () => Navigator.pop(context), + child: const Text('Cancel'), + ), + ElevatedButton( + onPressed: () async { + _collection.notes = notes.where((n) => selected.contains(n.id)).toList(); + await _save(); + if (mounted) Navigator.pop(context); + setState(() {}); + }, + child: const Text('Apply'), + ), + ], + ); + }, + ); + }, + ); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: const Text('Edit Set'), + actions: [ + IconButton(icon: const Icon(Icons.playlist_add), onPressed: _addNotes), + IconButton(icon: const Icon(Icons.delete), onPressed: _deleteCollection), + ], + ), + body: Column( + children: [ + Padding( + padding: const EdgeInsets.all(12), + child: TextField( + controller: _titleController, + decoration: const InputDecoration(labelText: 'Title'), + onChanged: (_) => _save(), + ), + ), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 12), + child: TextField( + controller: _descriptionController, + decoration: const InputDecoration(labelText: 'Description'), + onChanged: (_) => _save(), + ), + ), + const SizedBox(height: 8), + Expanded( + child: ListView.builder( + itemCount: _collection.notes.length, + itemBuilder: (context, index) { + final note = _collection.notes[index]; + return ListTile( + title: Text(note.title.isEmpty ? 'Untitled Note' : note.title), + trailing: IconButton( + icon: const Icon(Icons.remove_circle_outline), + onPressed: () async { + setState(() { + _collection.notes.removeAt(index); + }); + await _save(); + }, + ), + onTap: () { + Navigator.push( + context, + MaterialPageRoute(builder: (context) => NoteEditor(note)), + ); + }, + ); + }, + ), + ), + ], + ), + ); + } +} diff --git a/lib/db.dart b/lib/db.dart index 9ccdbdf..0c2d82f 100644 --- a/lib/db.dart +++ b/lib/db.dart @@ -8,25 +8,10 @@ class DB { List _notes = []; List get notes => _notes; - List _collections = []; - List get collections => _collections; - void setNotes(List l) { _notes = l; } - void setCollections(List l) { - _collections = l; - } - - void addCollection(NoteCollection collection) { - _collections.add(collection); - } - - void removeCollection(NoteCollection collection) { - _collections.remove(collection); - } - void addNote(Note note) { _notes.add(note); } @@ -42,24 +27,28 @@ class DB { DB._internal(); List get uniqueLabels => _notes - .where((n) => n.label != null && n.label != "") - .map((n) => n.label) + .map((n) => n.label) + .whereType() + .where((v) => v.isNotEmpty) .toSet() .toList(); List get uniqueCapos => _notes - .where((n) => n.capo != null && n.capo != "") - .map((n) => n.capo.toString()) + .map((n) => n.capo) + .whereType() + .where((v) => v.isNotEmpty) .toSet() .toList(); List get uniqueKeys => _notes - .where((n) => n.key != null && n.key != "") - .map((n) => n.key) + .map((n) => n.key) + .whereType() + .where((v) => v.isNotEmpty) .toSet() .toList(); List get uniqueTunings => _notes - .where((n) => n.tuning != null && n.tuning != "") - .map((n) => n.tuning) + .map((n) => n.tuning) + .whereType() + .where((v) => v.isNotEmpty) .toSet() .toList(); } diff --git a/lib/dialogs/audio_action_dialog.dart b/lib/dialogs/audio_action_dialog.dart index f798cf4..f0d0ea5 100644 --- a/lib/dialogs/audio_action_dialog.dart +++ b/lib/dialogs/audio_action_dialog.dart @@ -1,9 +1,6 @@ import 'package:flutter/material.dart'; -import 'package:sound/file_manager.dart'; -import 'package:sound/local_storage.dart'; import 'package:sound/model.dart'; -import 'package:sound/note_editor.dart'; -import 'package:sound/note_search_view.dart'; +import 'package:sound/dialogs/import_dialog.dart'; class AudioAction { final IconData icon; @@ -43,9 +40,10 @@ var enum2Action = { showAudioActionDialog(BuildContext context, List actionEnums, ValueChanged onActionPressed) { - // actions are an icon with a descrition unterneath it - - var actions = actionEnums.map((x) => enum2Action[x]).toList(); + final actions = actionEnums + .map((x) => enum2Action[x]) + .whereType() + .toList(); showDialog( context: context, builder: (context) { @@ -60,12 +58,13 @@ showAudioActionDialog(BuildContext context, List actionEnums, IconButton( icon: Icon(action.icon, size: 30), onPressed: () => onActionPressed(action)), - Text(action.description, textScaleFactor: 0.7) + Text(action.description, + textScaler: const TextScaler.linear(0.7)) ], ); }).toList()), // actions: [ - // FlatButton( + // TextButton( // child: Text("Close"), // onPressed: () => Navigator.of(context).pop()) // ] @@ -73,59 +72,27 @@ showAudioActionDialog(BuildContext context, List actionEnums, }); } -showMoveToNoteDialog(BuildContext context, Function onDone, AudioFile f) { - // actions are an icon with a descrition unterneath it - onMoveToNew() async { +showMoveToNoteDialog( + BuildContext context, Future Function() onDone, AudioFile f) { + Future onMoveToNew() async { // create a new note Note note = Note.empty(); note.audioFiles.add(f); - - // manual sync - await LocalStorage().syncNote(note); - - Navigator.of(context) - .push(new MaterialPageRoute(builder: (context) => NoteEditor(note))) - .then((value) => onDone()); + await onDone(); + return note; } - onSearch() { - Navigator.push( - context, - new MaterialPageRoute( - builder: (context) => NoteSearchViewLoader( - single: true, - collection: NoteCollection.empty(), - onAddNotes: (List notes) async { - print("selected notes: ${notes.map((e) => e.title)}"); - assert(notes.length == 1); - Note note = notes[0]; - note.audioFiles.add(f); - await LocalStorage().syncNote(note); - Navigator.of(context).push(new MaterialPageRoute( - builder: (context) => NoteEditor(note))); - }, - ))).then((value) { - onDone(); - }); - } - - toggleStar() async { - f.starred = !f.starred; - await LocalStorage().syncAudioFile(f); + Future onMoveToExisting(Note note) async { + note.audioFiles.add(f); + await onDone(); + return note; } - var id2action = { - AudioActionEnum.move_to_new.index: onMoveToNew, - AudioActionEnum.search.index: onSearch, - AudioActionEnum.star.index: toggleStar, - AudioActionEnum.unstar.index: toggleStar, - }; - var order = [ - AudioActionEnum.move_to_new, - AudioActionEnum.search, - ]; - - showAudioActionDialog(context, order, (value) { - id2action[value.id](); - }); + showImportDialog( + context, + "Move audio file to note", + onMoveToNew, + onMoveToExisting, + importButtonText: "Move", + ); } diff --git a/lib/dialogs/audio_import_dialog.dart b/lib/dialogs/audio_import_dialog.dart index 431f03f..b82ed42 100644 --- a/lib/dialogs/audio_import_dialog.dart +++ b/lib/dialogs/audio_import_dialog.dart @@ -14,16 +14,12 @@ showAudioImportDialog(BuildContext context, List files) { // analyse the playability and duration of audio files Future getDuration(File f) async { - AudioPlayer _player = AudioPlayer(); - - int result = await _player.play(f.path, isLocal: true, volume: 0); - if (result != 1) return null; - - Duration duration = await _player.onDurationChanged.first; - - await _player.stop(); - await _player.dispose(); - + final player = AudioPlayer(); + await player.setSource(DeviceFileSource(f.path)); + await player.play(DeviceFileSource(f.path), volume: 0); + final duration = await player.onDurationChanged.first; + await player.stop(); + await player.dispose(); return duration; } @@ -31,13 +27,7 @@ showAudioImportDialog(BuildContext context, List files) { List audioFiles = []; for (File f in files) { - Duration duration = await getDuration((f)); - if (duration == null) { - final snackBar = SnackBar( - backgroundColor: Theme.of(context).errorColor, - content: Text("cannot load audio ${f.path}")); - Scaffold.of(context).showSnackBar(snackBar); - } + Duration duration = await getDuration(f); print("=> File ${f.path} is ${duration.inSeconds} seconds"); var audioFile = AudioFile( @@ -81,11 +71,18 @@ _showAudioImportDialog(BuildContext context, List files) async { return note; } - Future> onImportAudioIdeas() async { - return await _prepareFiles(); + Future onImportAudioIdeas() async { + final prepared = await _prepareFiles(); + for (final f in prepared) { + await LocalStorage().addAudioIdea(f); + } } showImportDialog( - context, "Import ${files.length} Audio Files", onNew, onImport, - onImportAudioIdeas: onImportAudioIdeas); + context, + "Import ${files.length} Audio Files", + onNew, + onImport, + onImportAudioIdeas: onImportAudioIdeas, + ); } diff --git a/lib/dialogs/color_picker_dialog.dart b/lib/dialogs/color_picker_dialog.dart index b72cee6..7d4d83f 100644 --- a/lib/dialogs/color_picker_dialog.dart +++ b/lib/dialogs/color_picker_dialog.dart @@ -1,12 +1,15 @@ -import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; class ColorPicker extends StatelessWidget { - final Color pickerColor; + final Color? pickerColor; final List availableColors; final ValueChanged onColorChanged; - ColorPicker({this.availableColors, this.onColorChanged, this.pickerColor}); + const ColorPicker( + {required this.availableColors, + required this.onColorChanged, + this.pickerColor, + super.key}); _getItem(Color color) { return Padding( @@ -80,7 +83,7 @@ List getCardColors(BuildContext context) { return colors; } -showColorPickerDialog(BuildContext context, Color currentColor, +showColorPickerDialog(BuildContext context, Color? currentColor, ValueChanged onColorChanged) { List colors = getCardColors(context); @@ -91,7 +94,7 @@ showColorPickerDialog(BuildContext context, Color currentColor, showDialog( context: context, builder: (context) { - Color selected = currentColor; + Color selected = currentColor ?? colors.first; return StatefulBuilder(builder: (context, setState) { return AlertDialog( @@ -100,7 +103,7 @@ showColorPickerDialog(BuildContext context, Color currentColor, title: Text("Choose a Color"), actions: [ TextButton(child: Text("Cancel"), onPressed: _onCancel), - ElevatedButton( + TextButton( child: Text("Apply"), onPressed: () { onColorChanged(selected); @@ -111,7 +114,7 @@ showColorPickerDialog(BuildContext context, Color currentColor, child: ColorPicker( availableColors: colors, pickerColor: - selected == null ? Theme.of(context).cardColor : selected, + selected, onColorChanged: (color) => setState(() => selected = color), ), ), diff --git a/lib/dialogs/confirmation_dialogs.dart b/lib/dialogs/confirmation_dialogs.dart index ffcf7db..b3fc78e 100644 --- a/lib/dialogs/confirmation_dialogs.dart +++ b/lib/dialogs/confirmation_dialogs.dart @@ -2,125 +2,124 @@ import 'package:flutter/material.dart'; import 'package:sound/local_storage.dart'; import 'package:sound/model.dart'; -showDeleteDialog(BuildContext context, Note note, Function onDelete) async { - bool isInCollection = - await LocalStorage().getNumCollectionsByNoteId(note.id) > 0; - - String message = "Are you sure you want to delete this note?"; - - if (isInCollection) { - message = - "Note is part of a collection. When removing this note it will be automatically removed from its collections. \n Are you sure you want to delete this note?"; - } - +Future showDeleteDialog( + BuildContext context, + Note note, + VoidCallback onDelete, +) async { + const message = 'Are you sure you want to delete this note?'; _deleteDialog(context, message, onDelete); } -showNoteCollectionDeleteDialog( - BuildContext context, NoteCollection c, Function onDelete) async { - String message = "Are you sure you want to delete this collection?"; +Future showNoteCollectionDeleteDialog( + BuildContext context, + Object collection, + VoidCallback onDelete, +) async { + const message = 'Are you sure you want to delete this collection?'; _deleteDialog(context, message, onDelete); } -_deleteDialog(BuildContext context, String message, Function onDelete) { - showDialog( - context: context, - builder: (context) { - return AlertDialog( - content: Text(message), - actions: [ - TextButton( - onPressed: () { - Navigator.of(context).pop(); - }, - child: Text("No")), - ElevatedButton( - onPressed: () { - onDelete(); - Future.delayed(Duration(milliseconds: 100), () { - onDelete(); - }); - }, - child: Text("Yes")) - ], - ); - }); +void _deleteDialog( + BuildContext context, + String message, + VoidCallback onDelete, +) { + showDialog( + context: context, + builder: (context) { + return AlertDialog( + content: Text(message), + actions: [ + TextButton( + onPressed: () => Navigator.of(context).pop(), + child: const Text('No'), + ), + ElevatedButton( + onPressed: () { + onDelete(); + Navigator.of(context).pop(); + }, + child: const Text('Yes'), + ), + ], + ); + }, + ); } -showDeleteForeverDialog({ - BuildContext context, - Note note, - Function onDelete, +void showDeleteForeverDialog({ + required BuildContext context, + required Note note, + required VoidCallback onDelete, }) { - String message = - "Are you sure you want to delete \"${note.title}\" irrevocably?"; + final message = 'Are you sure you want to delete "${note.title}" irrevocably?'; showConfirmationDialog( - title: "Delete Irrevocably", - context: context, - onConfirm: () { - LocalStorage().deleteNote(note); - onDelete(); - }, - onDeny: () {}, - message: message); + title: 'Delete Irrevocably', + context: context, + onConfirm: () { + LocalStorage().deleteNote(note); + onDelete(); + }, + onDeny: () {}, + message: message, + ); } -showDeleteNotesForeverDialog({ - BuildContext context, - List notes, - Function onDelete, +void showDeleteNotesForeverDialog({ + required BuildContext context, + required List notes, + required VoidCallback onDelete, }) { - String message = - "Are you sure you want to delete ${notes.length} note/s irrevocably?"; + final message = + 'Are you sure you want to delete ${notes.length} note/s irrevocably?'; showConfirmationDialog( - title: "Delete Irrevocably", - context: context, - onConfirm: () { - for (Note note in notes) { - LocalStorage().deleteNote(note); - } - onDelete(); - }, - onDeny: () {}, - message: message); + title: 'Delete Irrevocably', + context: context, + onConfirm: () { + for (final note in notes) { + LocalStorage().deleteNote(note); + } + onDelete(); + }, + onDeny: () {}, + message: message, + ); } -showConfirmationDialog( - {BuildContext context, - String title, - String message, - Function onConfirm, - Function onDeny}) { - showDialog( +void showConfirmationDialog({ + required BuildContext context, + required String title, + required String message, + required VoidCallback onConfirm, + VoidCallback? onDeny, +}) { + showDialog( context: context, builder: (BuildContext context) { - return StatefulBuilder(builder: (context, setState) { - return AlertDialog( - title: new Text(title), - content: Padding( - child: Text(message), - padding: EdgeInsets.only(right: 10), + return AlertDialog( + title: Text(title), + content: Padding( + padding: const EdgeInsets.only(right: 10), + child: Text(message), + ), + actions: [ + TextButton( + child: const Text('No'), + onPressed: () { + onDeny?.call(); + Navigator.of(context).pop(); + }, + ), + ElevatedButton( + child: const Text('Yes'), + onPressed: () { + onConfirm(); + Navigator.of(context).pop(); + }, ), - actions: [ - new TextButton( - child: Text("No"), - onPressed: () { - if (onDeny != null) { - onDeny(); - } - Navigator.of(context).pop(); - }, - ), - // usually buttons at the bottom of the dialog - new ElevatedButton( - child: new Text("Yes"), - onPressed: () { - onConfirm(); - Navigator.of(context).pop(); - }), - ], - ); - }); + ], + ); }, ); } diff --git a/lib/dialogs/export_dialog.dart b/lib/dialogs/export_dialog.dart index e7868e2..d6f3222 100644 --- a/lib/dialogs/export_dialog.dart +++ b/lib/dialogs/export_dialog.dart @@ -1,49 +1,35 @@ -import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_share/flutter_share.dart'; -import 'package:sound/backup.dart'; import 'package:sound/export.dart'; import 'package:sound/model.dart'; -showExportDialog(BuildContext context, List notes, - {List collections, String title}) { +showExportDialog(BuildContext context, Note note) { showDialog( context: context, builder: (BuildContext context) { // return object of type Dialog - ExportType current = ExportType.ZIP; + ExportType current = ExportType.PDF; - _share() async { - await Exporter.exportShare(notes, current, - collections: collections, title: title); - Navigator.of(context).pop(); - } + _export() async { + await Exporter.exportShare(note, current); - _save() async { - await Exporter.exportDialog(notes, current, - collections: collections, title: title); Navigator.of(context).pop(); } - var options = (kReleaseMode) - ? [ExportType.ZIP, ExportType.PDF, ExportType.TEXT] - : [ExportType.ZIP, ExportType.PDF, ExportType.TEXT, ExportType.JSON]; - return StatefulBuilder(builder: (context, setState) { return AlertDialog( - title: new Text("Export Options"), + title: const Text("Export Options"), content: Row(children: [ - Padding( + const Padding( child: Text("Format:"), padding: EdgeInsets.only(right: 10), ), - DropdownButton( + DropdownButton( value: current, - items: options - .map((e) => DropdownMenuItem( + items: ExportType.values + .map((e) => DropdownMenuItem( child: Text(getExtension(e)), value: e)) .toList(), - onChanged: (v) => setState(() => current = v)), + onChanged: (v) => setState(() => current = v!)), ]), actions: [ TextButton( @@ -53,8 +39,12 @@ showExportDialog(BuildContext context, List notes, }, ), // usually buttons at the bottom of the dialog - ElevatedButton(child: Text("Share"), onPressed: _share), - ElevatedButton(onPressed: _save, child: Text("Save")) + TextButton( + child: const Text("Export"), + onPressed: () { + _export(); + }, + ), ], ); }); diff --git a/lib/dialogs/import_dialog.dart b/lib/dialogs/import_dialog.dart index a4de284..958a746 100644 --- a/lib/dialogs/import_dialog.dart +++ b/lib/dialogs/import_dialog.dart @@ -1,56 +1,39 @@ import 'package:flutter/material.dart'; -import 'package:sound/audio_list.dart'; import 'package:sound/local_storage.dart'; -import 'package:sound/menu_store.dart'; import 'package:sound/model.dart'; import 'package:sound/note_editor.dart'; -import 'package:sound/note_search_view.dart'; typedef FutureNoteCallback = Future Function(); -typedef FutureAudioIdeasImportCallback = Future> Function(); typedef FutureNoteImportCallback = Future Function(Note); - -enum ImportMode { asNew, search, idea } +typedef FutureAudioIdeaImportCallback = Future Function(); showImportDialog(BuildContext context, String title, FutureNoteCallback onNew, FutureNoteImportCallback onImport, {String newButtonText = 'Import as NEW', String importButtonText = "Import", - String ignoreNoteId, + String importIdeasButtonText = 'Import as Idea', + FutureAudioIdeaImportCallback? onImportAudioIdeas, bool openNote = true, - bool syncNote = true, - FutureAudioIdeasImportCallback onImportAudioIdeas}) async { + bool syncNote = true}) async { List notes = await LocalStorage().getActiveNotes(); - if (ignoreNoteId != null) - notes = notes.where((element) => element.id != ignoreNoteId).toList(); showDialog( context: context, builder: (BuildContext context) { // if selected is null (use empty new note) - Note selected; - ImportMode mode; + Note? selected; - _open(Note note) async { + _open(Note note) { if (openNote) { Navigator.push(context, - new MaterialPageRoute(builder: (context) => NoteEditor(note))); - } - } - - _importAsNew() async { - Note newNote = await onNew(); - if (syncNote) { - LocalStorage().syncNote(newNote); + MaterialPageRoute(builder: (context) => NoteEditor(note))); } - - Navigator.of(context).pop(); - _open(newNote); } - _importSelected() async { + _import() async { // sync and pop current dialog - Note note = await onImport(selected); + if (selected == null) return; + Note note = await onImport(selected!); if (syncNote) { LocalStorage().syncNote(note); } @@ -58,137 +41,77 @@ showImportDialog(BuildContext context, String title, FutureNoteCallback onNew, _open(note); } - _importAsIdea() async { - List ideas = await onImportAudioIdeas(); - for (AudioFile f in ideas) { - await LocalStorage().addAudioIdea(f); + _onNew() async { + Note newNote = await onNew(); + if (syncNote) { + LocalStorage().syncNote(newNote); } - setMenuItem(MenuItem.AUDIO); - Navigator.pop(context); + Navigator.of(context).pop(); + _open(newNote); } - _import() async { - if (mode == ImportMode.asNew) { - await _importAsNew(); - } else if (mode == ImportMode.search && selected != null) { - print("import selected..."); - await _importSelected(); - } else if (mode == ImportMode.idea) { - _importAsIdea(); - } else { - print("cannot import"); + _onImportIdeas() async { + if (onImportAudioIdeas == null) return; + await onImportAudioIdeas(); + if (context.mounted) { + Navigator.of(context).pop(); } } - _onNew(setState) { - setState(() { - selected = null; - mode = ImportMode.asNew; - }); - } - - _onIdea(setState) { - setState(() { - selected = null; - mode = ImportMode.idea; - }); - } - - _onSearch(setState) { - Navigator.push( - context, - new MaterialPageRoute( - builder: (context) => NoteSearchViewLoader( - single: true, - collection: NoteCollection.empty(), - onAddNotes: (List notes) async { - setState(() { - selected = notes[0]; - mode = ImportMode.search; - }); - }, - ))); - } - return StatefulBuilder(builder: (context, setState) { return AlertDialog( - title: new Text(title), + title: Text(title), content: Builder(builder: (context) { + double width = MediaQuery.of(context).size.width; return Column( - mainAxisSize: MainAxisSize.min, - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: [ - Column( - mainAxisSize: MainAxisSize.min, - children: [ - IconButton( - icon: Icon( - Icons.new_label, - size: 30, - color: (mode == ImportMode.asNew) - ? Theme.of(context).accentColor - : null, - ), - onPressed: () => _onNew(setState)), - Text("New Note", textScaleFactor: 0.7) - ], - ), - Column( - mainAxisSize: MainAxisSize.min, - children: [ - IconButton( - icon: Icon( - Icons.search, - size: 30, - color: (mode == ImportMode.search) - ? Theme.of(context).accentColor - : null, - ), - onPressed: () => _onSearch(setState)), - Text("Search", textScaleFactor: 0.7) - ], - ), - (onImportAudioIdeas != null) - ? Column( - mainAxisSize: MainAxisSize.min, - children: [ - IconButton( - icon: Icon( - Icons.lightbulb, - size: 30, - color: (mode == ImportMode.idea) - ? Theme.of(context).accentColor - : null, - ), - onPressed: () => _onIdea(setState)), - Text("As Ideas", textScaleFactor: 0.7) - ], - ) - : Container(), - ]), - (selected != null) - ? Padding( - padding: EdgeInsets.only(top: 32), - child: Text(selected.title.trim() == "" - ? EMPTY_TEXT - : selected.title)) - : Container() - ], - ); + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + Flexible( + child: ElevatedButton( + child: Text(newButtonText), onPressed: _onNew)), + if (onImportAudioIdeas != null) ...[ + const SizedBox(height: 10), + Flexible( + child: ElevatedButton( + onPressed: _onImportIdeas, + child: Text(importIdeasButtonText))), + ], + SizedBox(height: 10), + Row(mainAxisAlignment: MainAxisAlignment.center, children: [ + Container(child: Text("-- or select a note --")) + ]), + SizedBox(height: 15), + Row(mainAxisSize: MainAxisSize.max, children: [ + DropdownButton( + value: selected, + isDense: true, + items: notes + .map((e) => DropdownMenuItem( + child: SizedBox( + width: width - 152, + child: Text( + "${notes.indexOf(e)}: ${e.title}", + overflow: TextOverflow.ellipsis)), + value: e)) + .toList(), + onChanged: (v) => setState(() => selected = v)), + ]) + ]); }), actions: [ - new TextButton( + TextButton( child: Text("Cancel"), onPressed: () { Navigator.of(context).pop(); }, ), // usually buttons at the bottom of the dialog - new ElevatedButton( - child: new Text(importButtonText), onPressed: _import), + TextButton( + child: Text(importButtonText), + onPressed: (selected != null) ? _import : null, + ), ], ); }); diff --git a/lib/dialogs/initial_import_dialog.dart b/lib/dialogs/initial_import_dialog.dart index bc5cb7b..c3f250b 100644 --- a/lib/dialogs/initial_import_dialog.dart +++ b/lib/dialogs/initial_import_dialog.dart @@ -1,11 +1,9 @@ import 'dart:convert'; import 'package:flutter/material.dart'; -import 'package:sound/backup.dart'; import 'package:sound/local_storage.dart'; import 'package:sound/model.dart'; import 'package:flutter/services.dart' show rootBundle; -import 'package:uuid/uuid.dart'; Future> getExampleNotes() async { String path = "assets/initial_data.json"; @@ -14,49 +12,23 @@ Future> getExampleNotes() async { return _notes.map((s) => Note.fromJson(s, s['id'])).toList(); } -Future> getInitialNotes() async { - String path = "assets/initial_notes.json"; - String data = await rootBundle.loadString(path); - Map map = jsonDecode(data); - return map['notes'].map((s) => Note.fromJson(s, s['id'])).toList(); -} - showInitialImportDialog( - BuildContext context, ValueChanged onDone) async { - List exampleNotes = await getInitialNotes(); - NoteCollection exampleCollection = NoteCollection.empty(); - exampleCollection.notes = exampleNotes; - exampleCollection.title = "Example Set"; - exampleCollection.description = "Your imported notes"; - exampleCollection.starred = true; - - showSelectNotesImportDialog(context, onDone, - BackupData(notes: exampleNotes, collections: [exampleCollection])); + BuildContext context, ValueChanged> onDone) async { + List exampleNotes = await getExampleNotes(); + showSelectNotesImportDialog(context, onDone, exampleNotes); } showSelectNotesImportDialog( - BuildContext context, ValueChanged onDone, BackupData backup, + BuildContext context, ValueChanged> onDone, List notes, {String title = "Would you like to import any of these example songs?"}) async { showSelectNotesDialog(context, (List selected) async { - List noteIds = selected.map((n) => n.id).toList(); - print("selected note ids: $noteIds"); - for (Note note in selected) { await LocalStorage().syncNote(note); Future.delayed(Duration(milliseconds: 50)); } - - for (NoteCollection collection in backup.collections) { - // remove all notes that where not imported - collection.notes.removeWhere((note) => !noteIds.contains(note.id)); - await LocalStorage().syncCollection(collection); - Future.delayed(Duration(milliseconds: 50)); - } - - onDone(backup); - }, () => onDone(BackupData(notes: [], collections: [])), backup.notes, - title: title); + onDone(selected); + }, onDone, notes, title: title); } typedef NoteListCallback = Future Function(List); @@ -91,8 +63,6 @@ showSelectNotesDialog(BuildContext context, NoteListCallback onApply, barrierDismissible: false, builder: (context) { return StatefulBuilder(builder: (context, setState) { - var width = MediaQuery.of(context).size.width; - return Center( child: AlertDialog( titlePadding: EdgeInsets.all(16), @@ -100,28 +70,27 @@ showSelectNotesDialog(BuildContext context, NoteListCallback onApply, title: Text(title), content: isImporting ? Center(child: CircularProgressIndicator()) - : Container( - width: width, - height: 400, + : SizedBox( + width: 480, + height: 320, child: ListView.builder( itemBuilder: (context, index) { Note note = notes[index]; return CheckboxListTile( - activeColor: Theme.of(context).accentColor, + activeColor: + Theme.of(context).colorScheme.secondary, value: checked[note], onChanged: (v) { - setState(() => checked[note] = v); + setState(() => checked[note] = v ?? false); }, title: ListTile( - title: Text(note.hasEmptyTitle - ? EMPTY_TEXT - : note.title), - subtitle: Text( - note.artist == null ? "" : note.artist), + title: Text(note.title), + subtitle: Text(note.artist ?? ''), )); }, itemCount: notes.length, - )), + ), + ), actions: isImporting ? [] : [ @@ -129,7 +98,7 @@ showSelectNotesDialog(BuildContext context, NoteListCallback onApply, child: Text("Cancel"), onPressed: _onCancel, ), - ElevatedButton( + TextButton( child: Text("Import"), onPressed: () { setState(() => isImporting = true); diff --git a/lib/dialogs/text_import_dialog.dart b/lib/dialogs/text_import_dialog.dart index 43dccc5..3dd1587 100644 --- a/lib/dialogs/text_import_dialog.dart +++ b/lib/dialogs/text_import_dialog.dart @@ -12,10 +12,10 @@ class ParsedNote { final String title; final List
sections; - ParsedNote({this.title, this.sections}); + ParsedNote({required this.title, required this.sections}); } -ParsedNote parseText(String text) { +ParsedNote? parseText(String text) { List splits = text.split('\n'); print("splits: ${splits.length}"); List> parts = []; @@ -23,8 +23,6 @@ ParsedNote parseText(String text) { List part = []; for (String s in splits) { - if (s == null) continue; - s = s.trim(); bool isEmpty = s == ""; @@ -56,11 +54,11 @@ ParsedNote parseText(String text) { if (part.length > 0) parts.add(part); // return empty if no part was found - if (parts.length == 0) return null; + if (parts.isEmpty) return null; int start = 0; List
sections = []; - String title; + String title = ""; // skip the start, cause it was the title if (parts[0].length == 1 && !parts[0][0].startsWith("[")) { @@ -90,8 +88,8 @@ ParsedNote parseText(String text) { showInvalidTextSnack(BuildContext context) { var snackbar = SnackBar( content: Text("The text the app received has no valid format!"), - backgroundColor: Theme.of(context).errorColor); - Scaffold.of(context).showSnackBar(snackbar); + backgroundColor: Theme.of(context).colorScheme.error); + ScaffoldMessenger.of(context).showSnackBar(snackbar); } Future readResponse(HttpClientResponse response) { @@ -129,11 +127,10 @@ showTextImportDialog(BuildContext context, String text) async { showImportDialog( context, "Import ${ultimateNote.title}", onNew, onImport); } else { - showSnackByContext(context, "Cannot retrieve note from $text"); + showSnack(context, "Cannot retrieve note from $text"); } } else { - ParsedNote parsed = parseText(text); - + ParsedNote? parsed = parseText(text); if (parsed == null) { showInvalidTextSnack(context); return; @@ -142,7 +139,7 @@ showTextImportDialog(BuildContext context, String text) async { Future onNew() async { Note empty = Note.empty(); empty.sections = parsed.sections; - if (parsed.title != null) empty.title = parsed.title; + empty.title = parsed.title; return empty; } diff --git a/lib/editor_store.dart b/lib/editor_store.dart index 9f7eab8..e74caf0 100644 --- a/lib/editor_store.dart +++ b/lib/editor_store.dart @@ -1,237 +1,228 @@ +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart' show Color; -import 'package:flutter_flux/flutter_flux.dart' show Action, Store, StoreToken; -import 'local_storage.dart'; +import 'package:tuple/tuple.dart'; + import 'file_manager.dart'; +import 'local_storage.dart'; import 'model.dart'; -import 'package:tuple/tuple.dart'; -class NoteEditorStore extends Store { - Note _note; - Note get note => _note; +class NoteEditorStore extends ChangeNotifier { + Note? _note; + Note? get note => _note; - Tuple2 _lastDeletion; + Tuple2? _lastDeletion; void setNote(Note n) { _note = n; + notifyListeners(); } - NoteEditorStore() { - editorSetNote.listen((note) { - _note = note; - trigger(); - }); - - addAudioFile.listen((f) async { - _note.audioFiles.add(f); - await LocalStorage().syncNoteAttr(_note, 'audioFiles'); - - trigger(); - }); - - addSection.listen((s) async { - _note.sections.add(s); - await LocalStorage().syncNoteAttr(_note, 'sections'); - trigger(); - }); - - hardDeleteAudioFile.listen((f) async { - FileManager().delete(f); - - _note.audioFiles.removeWhere((af) => af.id == f.id); - print("Removing: ${f.name}"); - await LocalStorage().syncNoteAttr(_note, 'audioFiles'); - - trigger(); - }); - - softDeleteAudioFile.listen((AudioFile f) async { - _note.audioFiles.remove(f); - print("Softly emoving: ${f.name}"); - - //FileManager().delete(f); - //await LocalStorage().syncNoteAttr(_note, 'audioFiles'); - - trigger(); - }); - - deleteSection.listen((s) async { - int index = _note.sections.indexWhere((element) => element.id == s.id); - print("try to delete section at index $index"); - _note.sections.removeAt(index); - _lastDeletion = Tuple2(index, s); - await LocalStorage().syncNoteAttr(_note, 'sections'); - - trigger(); - }); - - undoDeleteSection.listen((_) async { - _note.sections.insert(_lastDeletion.item1, _lastDeletion.item2); - await LocalStorage().syncNoteAttr(_note, 'sections'); - trigger(); - }); - - moveSectionUp.listen((s) async { - int index = _note.sections.indexOf(s); - if (index >= 1) { - print("move up with index $index"); - _note.sections.removeAt(index); - _note.sections.insert(index - 1, s); - await LocalStorage().syncNoteAttr(_note, 'sections'); - trigger(); - } - }); - moveSectionDown.listen((s) async { - int index = _note.sections.indexOf(s); - if (index != (note.sections.length - 1) && index >= 0) { - print('move down with index: $index'); - _note.sections.removeAt(index); - _note.sections.insert(index + 1, s); - await LocalStorage().syncNoteAttr(_note, 'sections'); - } - trigger(); - }); - changeSectionTitle.listen((t) async { - int index = _note.sections.indexOf(t.item1); - _note.sections[index].title = t.item2; - await LocalStorage().syncNoteAttr(_note, 'sections'); - trigger(); - }); - - changeTitle.listen((t) async { - _note.title = t; - print('chaning title...'); - await LocalStorage().syncNoteAttr(_note, 'title'); - trigger(); - }); - - changeContent.listen((t) async { - int index = _note.sections.indexOf(t.item1); - _note.sections[index].content = t.item2; - await LocalStorage().syncNoteAttr(_note, 'sections'); - trigger(); - }); - - changeCapo.listen((String x) async { - _note.capo = x; - await LocalStorage().syncNoteAttr(_note, 'capo'); - trigger(); - }); - - changeAudioFile.listen((AudioFile f) async { - int index = _note.audioFiles.indexWhere((AudioFile a) => a.id == f.id); - if (index == -1) { - print("cannot change audio file, file not found"); - return; - } - _note.audioFiles[index] = f; - - await LocalStorage().syncNoteAttr(_note, 'audioFiles'); - trigger(); - }); - - changeTuning.listen((String x) async { - _note.tuning = x; - await LocalStorage().syncNoteAttr(_note, 'tuning'); - trigger(); - }); - changeKey.listen((String x) async { - _note.key = x; - await LocalStorage().syncNoteAttr(_note, 'key'); - trigger(); - }); - changeLabel.listen((String x) async { - _note.label = x; - await LocalStorage().syncNoteAttr(_note, 'label'); - trigger(); - }); - changeArtist.listen((String x) async { - _note.artist = x; - await LocalStorage().syncNoteAttr(_note, 'artist'); - trigger(); - }); - changeInstrument.listen((String x) async { - _note.instrument = x; - await LocalStorage().syncNoteAttr(_note, 'instrument'); - trigger(); - }); - - updateNoteEditorView.listen((_) { - trigger(); - }); - - restoreAudioFile.listen((Tuple2 a) async { - print( - "restoring audio file ${a.item1.path} at ${a.item2} into the notes"); - _note.audioFiles.insert(a.item2, a.item1); - await LocalStorage().syncNoteAttr(_note, 'audioFiles'); - trigger(); - }); - - toggleStarred.listen((event) async { - _note.starred = !_note.starred; - await LocalStorage().syncNoteAttr(_note, 'starred'); - trigger(); - }); - - changeColor.listen((Color event) async { - _note.color = event; - await LocalStorage().syncNoteAttr(_note, 'color'); - trigger(); - }); - - setDuration.listen((Tuple2 a) async { - for (AudioFile f in _note.audioFiles) { - if (f.id == a.item1.id) { - print("setting duration of ${f.id} to duration ${a.item2}"); - f.duration = a.item2; - } + Future addAudioFile(AudioFile f) async { + if (_note == null) return; + _note!.audioFiles.add(f); + await LocalStorage().syncNoteAttr(_note!, 'audioFiles'); + notifyListeners(); + } + + Future addSection(Section s) async { + if (_note == null) return; + _note!.sections.add(s); + await LocalStorage().syncNoteAttr(_note!, 'sections'); + notifyListeners(); + } + + Future hardDeleteAudioFile(AudioFile f) async { + if (_note == null) return; + FileManager().delete(f); + _note!.audioFiles.remove(f); + await LocalStorage().syncNoteAttr(_note!, 'audioFiles'); + notifyListeners(); + } + + void softDeleteAudioFile(AudioFile f) { + if (_note == null) return; + _note!.audioFiles.remove(f); + notifyListeners(); + } + + Future deleteSection(Section s) async { + if (_note == null) return; + final index = _note!.sections.indexOf(s); + if (index < 0) return; + _note!.sections.removeAt(index); + _lastDeletion = Tuple2(index, s); + await LocalStorage().syncNoteAttr(_note!, 'sections'); + notifyListeners(); + } + + Future undoDeleteSection([dynamic _]) async { + if (_note == null || _lastDeletion == null) return; + _note!.sections.insert(_lastDeletion!.item1, _lastDeletion!.item2); + await LocalStorage().syncNoteAttr(_note!, 'sections'); + notifyListeners(); + } + + Future moveSectionUp(Section s) async { + if (_note == null) return; + final index = _note!.sections.indexOf(s); + if (index < 1) return; + _note!.sections.removeAt(index); + _note!.sections.insert(index - 1, s); + await LocalStorage().syncNoteAttr(_note!, 'sections'); + notifyListeners(); + } + + Future moveSectionDown(Section s) async { + if (_note == null) return; + final index = _note!.sections.indexOf(s); + if (index < 0 || index == _note!.sections.length - 1) return; + _note!.sections.removeAt(index); + _note!.sections.insert(index + 1, s); + await LocalStorage().syncNoteAttr(_note!, 'sections'); + notifyListeners(); + } + + Future changeSectionTitle(Tuple2 t) async { + if (_note == null) return; + final index = _note!.sections.indexOf(t.item1); + if (index < 0) return; + _note!.sections[index].title = t.item2; + await LocalStorage().syncNoteAttr(_note!, 'sections'); + notifyListeners(); + } + + Future changeTitle(String t) async { + if (_note == null) return; + _note!.title = t; + await LocalStorage().syncNoteAttr(_note!, 'title'); + notifyListeners(); + } + + Future changeContent(Tuple2 t) async { + if (_note == null) return; + final index = _note!.sections.indexOf(t.item1); + if (index < 0) return; + _note!.sections[index].content = t.item2; + await LocalStorage().syncNoteAttr(_note!, 'sections'); + notifyListeners(); + } + + Future changeCapo(String x) async { + if (_note == null) return; + _note!.capo = x; + await LocalStorage().syncNoteAttr(_note!, 'capo'); + notifyListeners(); + } + + Future changeAudioFile(AudioFile f) async { + if (_note == null) return; + final index = _note!.audioFiles.indexWhere((a) => a.id == f.id); + if (index == -1) return; + _note!.audioFiles[index] = f; + await LocalStorage().syncNoteAttr(_note!, 'audioFiles'); + notifyListeners(); + } + + Future changeTuning(String x) async { + if (_note == null || x.trim().isEmpty) return; + _note!.tuning = x; + await LocalStorage().syncNoteAttr(_note!, 'tuning'); + notifyListeners(); + } + + Future changeKey(String x) async { + if (_note == null || x.trim().isEmpty) return; + _note!.key = x; + await LocalStorage().syncNoteAttr(_note!, 'key'); + notifyListeners(); + } + + Future changeLabel(String x) async { + if (_note == null || x.trim().isEmpty) return; + _note!.label = x; + await LocalStorage().syncNoteAttr(_note!, 'label'); + notifyListeners(); + } + + Future changeArtist(String x) async { + if (_note == null || x.trim().isEmpty) return; + _note!.artist = x; + await LocalStorage().syncNoteAttr(_note!, 'artist'); + notifyListeners(); + } + + Future changeInstrument(String x) async { + if (_note == null || x.trim().isEmpty) return; + _note!.instrument = x; + await LocalStorage().syncNoteAttr(_note!, 'instrument'); + notifyListeners(); + } + + void updateNoteEditorView([dynamic _]) { + notifyListeners(); + } + + Future restoreAudioFile(Tuple2 a) async { + if (_note == null) return; + _note!.audioFiles.insert(a.item2, a.item1); + await LocalStorage().syncNoteAttr(_note!, 'audioFiles'); + notifyListeners(); + } + + Future toggleStarred([dynamic _]) async { + if (_note == null) return; + _note!.starred = !_note!.starred; + await LocalStorage().syncNoteAttr(_note!, 'starred'); + notifyListeners(); + } + + Future changeColor(Color event) async { + if (_note == null) return; + _note!.color = event; + await LocalStorage().syncNoteAttr(_note!, 'color'); + notifyListeners(); + } + + Future setDuration(Tuple2 a) async { + if (_note == null) return; + for (final f in _note!.audioFiles) { + if (f.id == a.item1.id) { + f.duration = a.item2; } - await LocalStorage().syncNoteAttr(_note, 'audioFiles'); - trigger(); - }); - - changeBPM.listen((int event) async { - _note.bpm = event; - print("setting bpm to $event"); - await LocalStorage().syncNoteAttr(_note, 'bpm'); - trigger(); - }); - - changeLength.listen((int event) async { - _note.length = event; - print("setting legnth to $event"); - await LocalStorage().syncNoteAttr(_note, 'length'); - trigger(); - }); + } + await LocalStorage().syncNoteAttr(_note!, 'audioFiles'); + notifyListeners(); } } -Action editorSetNote = Action(); -Action softDeleteAudioFile = Action(); -Action hardDeleteAudioFile = Action(); -Action
deleteSection = Action(); -Action undoDeleteSection = Action(); -Action
addSection = Action(); -Action
moveSectionUp = Action(); -Action
moveSectionDown = Action(); -Action> changeSectionTitle = Action(); -Action changeTitle = Action(); -Action changeCapo = Action(); -Action changeTuning = Action(); -Action changeKey = Action(); -Action changeLabel = Action(); -Action changeArtist = Action(); -Action changeBPM = Action(); -Action changeLength = Action(); -Action changeInstrument = Action(); -Action changeAudioFile = Action(); -Action> changeContent = Action(); -Action addAudioFile = Action(); -Action> restoreAudioFile = Action(); -Action> uploadCallback = Action(); -Action updateNoteEditorView = Action(); -Action toggleStarred = Action(); -Action changeColor = Action(); -Action> setDuration = Action(); - -StoreToken noteEditorStoreToken = StoreToken(NoteEditorStore()); +final NoteEditorStore noteEditorStore = NoteEditorStore(); + +void editorSetNote(Note note) => noteEditorStore.setNote(note); +void softDeleteAudioFile(AudioFile file) => noteEditorStore.softDeleteAudioFile(file); +Future hardDeleteAudioFile(AudioFile file) => noteEditorStore.hardDeleteAudioFile(file); +Future deleteSection(Section section) => noteEditorStore.deleteSection(section); +Future undoDeleteSection([dynamic _]) => noteEditorStore.undoDeleteSection(); +Future addSection(Section section) => noteEditorStore.addSection(section); +Future moveSectionUp(Section section) => noteEditorStore.moveSectionUp(section); +Future moveSectionDown(Section section) => noteEditorStore.moveSectionDown(section); +Future changeSectionTitle(Tuple2 value) => + noteEditorStore.changeSectionTitle(value); +Future changeTitle(String value) => noteEditorStore.changeTitle(value); +Future changeCapo(String value) => noteEditorStore.changeCapo(value); +Future changeTuning(String value) => noteEditorStore.changeTuning(value); +Future changeKey(String value) => noteEditorStore.changeKey(value); +Future changeLabel(String value) => noteEditorStore.changeLabel(value); +Future changeArtist(String value) => noteEditorStore.changeArtist(value); +Future changeInstrument(String value) => noteEditorStore.changeInstrument(value); +Future changeAudioFile(AudioFile value) => noteEditorStore.changeAudioFile(value); +Future changeContent(Tuple2 value) => + noteEditorStore.changeContent(value); +Future addAudioFile(AudioFile file) => noteEditorStore.addAudioFile(file); +Future restoreAudioFile(Tuple2 value) => + noteEditorStore.restoreAudioFile(value); +void uploadCallback(Tuple2 value) {} +void updateNoteEditorView([dynamic _]) => noteEditorStore.updateNoteEditorView(); +Future toggleStarred([dynamic _]) => noteEditorStore.toggleStarred(); +Future changeColor(Color value) => noteEditorStore.changeColor(value); +Future setDuration(Tuple2 value) => + noteEditorStore.setDuration(value); diff --git a/lib/editor_views/additional_info.dart b/lib/editor_views/additional_info.dart index eda3cb2..6d29f36 100644 --- a/lib/editor_views/additional_info.dart +++ b/lib/editor_views/additional_info.dart @@ -1,331 +1,87 @@ import 'package:flutter/material.dart'; -import 'package:sound/dialogs/change_number_dialog.dart'; import 'package:sound/editor_store.dart'; import 'package:sound/model.dart'; -import 'package:sound/utils.dart'; -import 'package:tuple/tuple.dart'; -class NoteEditorTitle extends StatefulWidget { +class NoteEditorTitle extends StatelessWidget { final String title, hintText, labelText; final bool allowEdit; final ValueChanged onChange; - final FocusNode focus; - final bool showInsertDate; - NoteEditorTitle( - {@required this.title, - @required this.onChange, + const NoteEditorTitle( + {required this.title, + required this.onChange, this.allowEdit = true, this.hintText = 'Enter Title', this.labelText = 'Title', - this.focus, - this.showInsertDate = false, - Key key}) - : super(key: key); - - @override - _NoteEditorTitleState createState() => _NoteEditorTitleState(); -} - -class _NoteEditorTitleState extends State { - TextEditingController controller; - - @override - void initState() { - super.initState(); - controller = TextEditingController(text: widget.title); - } - - @override - void didUpdateWidget(NoteEditorTitle oldWidget) { - super.didUpdateWidget(oldWidget); - - if (controller.text != widget.title) { - controller.text = widget.title; - controller.selection = - TextSelection.fromPosition(TextPosition(offset: widget.title.length)); - } - } - - _insertDate() { - if (!widget.showInsertDate || controller.text.length > 0) { - return null; - } - return TextButton( - onPressed: () { - widget.onChange(getFormattedDate(DateTime.now())); - }, - child: Text("Insert Date")); - } + super.key}); @override Widget build(BuildContext context) { return ListTile( visualDensity: VisualDensity.comfortable, - trailing: _insertDate(), title: TextFormField( - controller: controller, - enabled: widget.allowEdit, - focusNode: widget.focus, + enabled: allowEdit, + initialValue: title, decoration: InputDecoration( - labelText: widget.labelText, + labelText: labelText, border: InputBorder.none, - hintText: widget.hintText), - onChanged: widget.onChange, + hintText: hintText), + onChanged: onChange, maxLines: 1)); } } -enum AdditionalInfoItem { tuning, capo, key, label, artist, title } - -getAddtionalInfoItemFromNote(Note note, AdditionalInfoItem item) { - switch (item) { - case AdditionalInfoItem.key: - return note.key; - case AdditionalInfoItem.tuning: - return note.tuning; - case AdditionalInfoItem.capo: - return note.capo; - case AdditionalInfoItem.label: - return note.label; - case AdditionalInfoItem.artist: - return note.artist; - case AdditionalInfoItem.title: - return note.title; - default: - return null; - } -} - -class NoteEditorAdditionalInfo extends StatefulWidget { +class NoteEditorAdditionalInfo extends StatelessWidget { final Note note; final bool allowEdit; - final List items; - final ValueChanged onFocusChange; - final ValueChanged> - onChange; // general any value change (to update suggestions) - - const NoteEditorAdditionalInfo(this.note, - {this.allowEdit = true, - this.items = const [ - AdditionalInfoItem.key, - AdditionalInfoItem.tuning, - AdditionalInfoItem.capo, - AdditionalInfoItem.label, - AdditionalInfoItem.artist - ], - this.onFocusChange, - this.onChange, - Key key}) - : super(key: key); - - @override - _NoteEditorAdditionalInfoState createState() => - _NoteEditorAdditionalInfoState(); -} - -class _NoteEditorAdditionalInfoState extends State { - Map focusNodes = {}; - Map controllers = {}; - - TextEditingController bpmController, lengthController; - - @override - void didUpdateWidget(NoteEditorAdditionalInfo oldWidget) { - super.didUpdateWidget(oldWidget); - - print("Addtional Info Widget Update"); - widget.items.forEach((item) { - String data = getAddtionalInfoItemFromNote(widget.note, item); - print(item); - print("note value: $data"); - print("controller value: ${controllers[item].text}"); - if (data == null) data = ""; - - if (controllers[item].text != data && data != null) { - print("update from note"); - controllers[item].text = data; - controllers[item].selection = - TextSelection.fromPosition(TextPosition(offset: data.length)); - } - }); - - if (widget.note.bpm != null) { - bpmController.text = widget.note.bpm.toString(); - } - if (widget.note.length != null) { - lengthController.text = widget.note.lengthStr; - } - } - - @override - void initState() { - super.initState(); - - widget.items.forEach((item) { - FocusNode node = FocusNode(); - node.addListener(() { - if (widget.onFocusChange != null && node.hasFocus) { - widget.onFocusChange(item); - } else { - widget.onFocusChange(null); - } - }); - focusNodes[item] = node; - - String text = getAddtionalInfoItemFromNote(widget.note, item); - controllers[item] = TextEditingController(text: text == null ? "" : text); - }); - bpmController = TextEditingController( - text: widget.note.bpm == null ? null : widget.note.bpm.toString()); - lengthController = TextEditingController(text: widget.note.lengthStr); - } + const NoteEditorAdditionalInfo(this.note, {this.allowEdit = true, super.key}); - _edit({initial, title, hint, item}) { + Widget _edit({ + required String? initial, + required String title, + required String hint, + required ValueChanged onChanged, + }) { return TextFormField( - focusNode: focusNodes[item], + initialValue: initial ?? '', decoration: InputDecoration( labelText: title, border: InputBorder.none, hintText: hint), - enabled: widget.allowEdit, - onChanged: (v) { - print("$item on changed => ${v == null}"); - if (widget.onChange != null) widget.onChange(Tuple2(item, v)); - }, - controller: controllers[item], + enabled: allowEdit, + onChanged: (v) => onChanged(v), maxLines: 1); } - _extra({text, title}) { - return TextFormField( - enabled: false, - initialValue: text, - decoration: - InputDecoration(labelText: title, border: InputBorder.none)); - } - - getEdit(AdditionalInfoItem item) { - switch (item) { - case AdditionalInfoItem.tuning: - return _edit( - initial: widget.note.tuning == null ? "" : widget.note.tuning, - title: "Tuning", - hint: "Standard, Dadgad ...", - item: item, - ); - - case AdditionalInfoItem.capo: - return _edit( - initial: widget.note.capo == null ? "" : widget.note.capo.toString(), - title: "Capo", - hint: "7, 5 ...", - item: item, - ); - - case AdditionalInfoItem.key: - return _edit( - initial: widget.note.key == null ? "" : widget.note.key.toString(), - title: "Key", - hint: "C Major, A Minor ...", - item: item, - ); - case AdditionalInfoItem.label: - return _edit( - initial: - widget.note.label == null ? "" : widget.note.label.toString(), - title: "Label", - hint: "Idea, Rock, Pop ...", - item: item, - ); - - case AdditionalInfoItem.artist: - return _edit( - initial: - widget.note.artist == null ? "" : widget.note.artist.toString(), - title: "Artist", - hint: "Passenger, Ed Sheeran ...", - item: item, - ); - case AdditionalInfoItem.title: - return _edit( - initial: - widget.note.title == null ? "" : widget.note.title.toString(), - title: "Title", - hint: "...", - item: item, - ); - default: - return null; - break; - } - } - @override Widget build(BuildContext context) { - var edits = widget.items.map((item) => getEdit(item)).toList(); - - // add bpm and length - // default length: 3 minutes - print(widget.note.bpm); - - // show - var bpmField = GestureDetector( - onTap: () { - if (widget.allowEdit) { - FocusScope.of(context).unfocus(); - - showChangeNumberDialog( - context, - "BPM", - widget.note.bpm == null - ? Note.defaultBPM.toDouble() - : widget.note.bpm.toDouble(), (value) { - print("setting bpm to $value"); - changeBPM(value.toInt()); - }, min: 0, max: 300, longPressStep: 5); - } - }, - child: TextFormField( - enabled: false, - controller: bpmController, - //focusNode: widget.focus, - decoration: - InputDecoration(labelText: "BPM", border: InputBorder.none), - )); - - var lengthField = GestureDetector( - onTap: () { - if (widget.allowEdit) { - FocusScope.of(context).unfocus(); - - showChangeNumberDialog( - context, - "Length", - widget.note.length == null - ? Note.defaultLength.toDouble() - : widget.note.length.toDouble(), (value) { - print("setting length to $value"); - changeLength(value.toInt()); - }, min: 0, max: 300, isTime: true, longPressStep: 10); - } - }, - child: TextFormField( - enabled: false, - controller: lengthController, - //focusNode: widget.focus, - decoration: - InputDecoration(labelText: "Length", border: InputBorder.none), - )); - - var extra = [ - lengthField, - bpmField, - _extra(text: dateToString(widget.note.createdAt), title: "Created At"), - _extra( - text: dateToString(widget.note.lastModified), - title: "Last Modified At") - ]; - var children = edits + extra; - return Wrap(runSpacing: 1, children: children); + return Padding( + padding: EdgeInsets.only(left: 10, top: 10), + child: Wrap(runSpacing: 1, children: [ + _edit( + initial: note.tuning, + title: "Tuning", + hint: "f.e. Standard, Dadgad", + onChanged: changeTuning), + _edit( + initial: note.capo, + title: "Capo", + hint: "f.e. 7, 5", + onChanged: changeCapo), + _edit( + initial: note.key, + title: "Key", + hint: "f.e. C Major, A Minor", + onChanged: changeKey), + _edit( + initial: note.label, + title: "Label", + hint: "f.e. Rock, Pop...", + onChanged: changeLabel), + _edit( + initial: note.artist, + title: "Artist", + hint: "leave empty if you are the artist", + onChanged: changeArtist), + ])); } } diff --git a/lib/editor_views/audio.dart b/lib/editor_views/audio.dart index aad730b..58145ce 100644 --- a/lib/editor_views/audio.dart +++ b/lib/editor_views/audio.dart @@ -2,41 +2,34 @@ import 'dart:io'; import 'package:audioplayers/audioplayers.dart'; import 'package:flutter/material.dart'; -import 'package:sound/dialogs/audio_action_dialog.dart'; -import 'package:sound/editor_store.dart'; -import 'package:sound/model.dart'; -import 'package:sound/recorder_store.dart'; -import 'package:sound/share.dart'; -import 'package:sound/utils.dart'; + +import '../dialogs/audio_action_dialog.dart'; +import '../editor_store.dart'; +import '../model.dart'; +import '../recorder_store.dart'; +import '../utils.dart'; class AudioFileListItem extends StatelessWidget { - final Function onLongPress, onPressed; + final VoidCallback? onLongPress; + final VoidCallback? onPressed; final AudioFile file; - final backgroundColor; - AudioFileListItem(this.file, - {this.onLongPress, this.onPressed, this.backgroundColor}); + const AudioFileListItem(this.file, {this.onLongPress, this.onPressed, super.key}); @override Widget build(BuildContext context) { - Widget subTitle = Text(file.createdAt.toIso8601String()); Widget trailing = Text(file.durationString); - - if (file.loopRange != null) - trailing = Text("${file.loopString} / ${file.durationString}"); - + if (file.loopRange != null) { + trailing = Text('${file.loopString} / ${file.durationString}'); + } return ListTile( onLongPress: onLongPress, trailing: trailing, - subtitle: subTitle, + subtitle: Text(file.createdAt.toIso8601String()), dense: true, - tileColor: backgroundColor, visualDensity: VisualDensity.comfortable, - contentPadding: EdgeInsets.all(2), - leading: IconButton( - icon: Icon(Icons.play_arrow), - onPressed: onPressed, - color: Theme.of(context).iconTheme.color), + contentPadding: const EdgeInsets.all(2), + leading: IconButton(icon: const Icon(Icons.play_arrow), onPressed: onPressed), title: Text(file.name), ); } @@ -45,60 +38,44 @@ class AudioFileListItem extends StatelessWidget { class AudioFileView extends StatelessWidget { final AudioFile file; final int index; - final GlobalKey globalKey; - final Color backgroundColor; - final Function onDelete, - onMove, - onShare, - onDuplicate, - onToggleStarred, - onPlay; // onPlay is just a callback, file will already be played back - final ValueChanged onRename; - - const AudioFileView( - {@required this.file, - @required this.index, - @required this.onDelete, - @required this.onDuplicate, - @required this.onShare, - @required this.onMove, - @required this.onRename, - @required this.globalKey, - this.backgroundColor, - this.onToggleStarred, - this.onPlay, - Key key}) - : super(key: key); - - _onAudioFileLongPress(BuildContext context, AudioFile file) { - var controller = - TextEditingController.fromValue(TextEditingValue(text: file.name)); - - showDialog( + final GlobalKey globalKey; + final VoidCallback onDelete; + final VoidCallback onMove; + final VoidCallback onShare; + + const AudioFileView({ + required this.file, + required this.index, + required this.onDelete, + required this.onShare, + required this.onMove, + required this.globalKey, + super.key, + }); + + Future _onAudioFileLongPress(BuildContext context, AudioFile file) async { + final controller = TextEditingController(text: file.name); + await showDialog( context: context, builder: (BuildContext context) { - // return object of type Dialog return AlertDialog( - title: new Text("Rename"), - content: new TextField( + title: const Text('Rename'), + content: TextField( autofocus: true, maxLines: 1, minLines: 1, - onSubmitted: (s) => print("submit $s"), controller: controller, ), actions: [ - new TextButton( - child: Text("Cancel"), - onPressed: () { - Navigator.of(context).pop(); - }, + TextButton( + child: const Text('Cancel'), + onPressed: () => Navigator.of(context).pop(), ), - // usually buttons at the bottom of the dialog - new ElevatedButton( - child: new Text("Apply"), + TextButton( + child: const Text('Apply'), onPressed: () { - onRename(controller.value.text); + file.name = controller.value.text; + changeAudioFile(file); Navigator.of(context).pop(); }, ), @@ -110,189 +87,146 @@ class AudioFileView extends StatelessWidget { @override Widget build(BuildContext context) { - var view = AudioFileListItem(file, - onLongPress: () => _onAudioFileLongPress(context, file), - backgroundColor: backgroundColor, - onPressed: () { - print("trying to play ${file.path}"); - if (File(file.path).existsSync()) { - if (onPlay != null) onPlay(); - startPlaybackAction(file); - } else { - showSnack(globalKey.currentState, "This files was removed!"); - } - }); + final view = AudioFileListItem( + file, + onLongPress: () => _onAudioFileLongPress(context, file), + onPressed: () { + if (File(file.path).existsSync()) { + startPlaybackAction(file); + } else { + showSnack(globalKey.currentState, 'This file was removed!'); + } + }, + ); return Dismissible( + key: ValueKey(file.id), child: view, onDismissed: (d) { - if (d == DismissDirection.startToEnd) { + if (d == DismissDirection.endToStart) { onDelete(); - } else {} + } }, confirmDismiss: (d) async { - if (d == DismissDirection.startToEnd) { - return true; - } else { - var id2action = { - AudioActionEnum.share.index: onShare, - AudioActionEnum.move.index: onMove, - AudioActionEnum.duplicate.index: onDuplicate, - AudioActionEnum.star.index: onToggleStarred, - AudioActionEnum.unstar.index: onToggleStarred, - }; - - var order = []; - - if (onShare != null) { - order.add(AudioActionEnum.share); - } - - if (onMove != null) { - order.add(AudioActionEnum.move); - } - - if (onDuplicate != null) { - order.add(AudioActionEnum.duplicate); - } - - if (onToggleStarred != null) { - if (file.starred) { - order.add(AudioActionEnum.unstar); - } else { - order.add(AudioActionEnum.star); - } - } - - showAudioActionDialog(context, order, (action) { + if (d == DismissDirection.endToStart) return true; + showAudioActionDialog( + context, + [ + AudioActionEnum.share, + AudioActionEnum.move, + ], + (action) { Navigator.of(context).pop(); - if (id2action.containsKey(action.id)) { - if (id2action[action.id] != null) { - id2action[action.id](); - } + if (action.id == 0) { + onShare(); + } else if (action.id == 1) { + onMove(); } - }); - // shareFile(file.path); - return false; - } + }, + ); + return false; }, direction: DismissDirection.horizontal, - key: GlobalKey(), - secondaryBackground: Card( - margin: EdgeInsets.all(0), - child: Container( - color: Theme.of(context).scaffoldBackgroundColor, - child: Row( - mainAxisAlignment: MainAxisAlignment.end, - children: [ - Icon(Icons.share), - Container(width: 8), - Icon(Icons.move_to_inbox), - Container(width: 8), - Icon(Icons.copy), - ]), - padding: EdgeInsets.all(10))), background: Card( - child: Container( - color: Theme.of(context).accentColor, - child: Row( - mainAxisAlignment: MainAxisAlignment.start, - children: [Icon(Icons.delete)]), - padding: EdgeInsets.all(10))), + child: Container( + color: Colors.greenAccent, + padding: const EdgeInsets.all(10), + child: const Row(children: [Icon(Icons.share)]), + ), + ), + secondaryBackground: Card( + child: Container( + color: Colors.redAccent, + padding: const EdgeInsets.all(10), + child: const Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [Icon(Icons.delete)], + ), + ), + ), ); } } -playInDialog(BuildContext context, AudioFile f) { - Duration position = Duration(seconds: 0); +void playInDialog(BuildContext context, AudioFile f) { + Duration position = Duration.zero; Duration duration = f.duration; + RecorderState state = RecorderState.playing; + final player = AudioPlayer(); - RecorderState state = RecorderState.PLAYING; - AudioPlayer player = AudioPlayer(); - - Future.delayed(Duration(milliseconds: 100), () => player.play(f.path)); + Future.delayed(const Duration(milliseconds: 100), () { + player.play(DeviceFileSource(f.path)); + }); showDialog( - context: context, - barrierDismissible: false, - builder: (context) { - return StatefulBuilder(builder: (context, setState) { - void onPlay() async { - await player.resume(); - setState(() => state = RecorderState.PLAYING); - } - - void onPause() async { - await player.pause(); - setState(() => state = RecorderState.PAUSING); - } - - void onSeek(Duration duration) async { - await player.seek(duration); - } + context: context, + barrierDismissible: false, + builder: (context) { + return StatefulBuilder(builder: (context, setState) { + void onPlay() async { + await player.resume(); + setState(() => state = RecorderState.playing); + } - void onStop() async { - await player.stop(); - Navigator.of(context).pop(); - } + void onPause() async { + await player.pause(); + setState(() => state = RecorderState.pausing); + } - player.onAudioPositionChanged.listen((event) { - if (event.inMilliseconds < f.duration.inMilliseconds) { - setState(() => position = event); - } - }); + void onSeek(Duration d) async => player.seek(d); - player.onDurationChanged.listen((event) { - print("duration chaned: ${event}"); - if (event != null && - event.inMilliseconds != duration.inMilliseconds) { - setState(() { - duration = event; - }); - } - }); + void onStop() async { + await player.stop(); + if (context.mounted) Navigator.of(context).pop(); + } - player.onPlayerCompletion.listen((event) { - setState(() { - state = RecorderState.STOP; - }); - onPlay(); - }); - return AlertDialog( - title: Text(f.name, textScaleFactor: 0.8), - content: Column( - mainAxisSize: MainAxisSize.min, - children: [ - Container( - height: 50, - child: Expanded( - child: Slider( - min: 0.0, - max: (duration.inMilliseconds / 1000).toDouble(), - value: (position.inMilliseconds / 1000).toDouble(), - onChanged: (value) { - print("on changed to $value"); - onSeek(Duration(milliseconds: (value * 1000).floor())); - }, - //activeColor: Colors.yellow, - ))), // slider - Row( - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: [ - IconButton( - icon: Icon(state == RecorderState.PLAYING - ? Icons.pause - : Icons.play_arrow), - onPressed: - state == RecorderState.PLAYING ? onPause : onPlay), - IconButton(icon: Icon(Icons.stop), onPressed: onStop), - ], - ) // controls - ], - ), - contentPadding: EdgeInsets.all(8), - titlePadding: EdgeInsets.all(16), - ); + player.onPositionChanged.listen((event) { + if (event.inMilliseconds < duration.inMilliseconds) { + setState(() => position = event); + } }); + player.onDurationChanged.listen((event) { + if (event.inMilliseconds != duration.inMilliseconds) { + setState(() => duration = event); + } + }); + player.onPlayerComplete.listen((_) { + setState(() => state = RecorderState.stop); + }); + + return AlertDialog( + title: Text(f.name, textScaler: const TextScaler.linear(0.8)), + content: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Slider( + min: 0.0, + max: (duration.inMilliseconds / 1000).toDouble(), + value: (position.inMilliseconds / 1000).toDouble().clamp( + 0.0, (duration.inMilliseconds / 1000).toDouble()), + onChanged: (value) { + onSeek(Duration(milliseconds: (value * 1000).floor())); + }, + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + IconButton( + icon: Icon(state == RecorderState.playing + ? Icons.pause + : Icons.play_arrow), + onPressed: + state == RecorderState.playing ? onPause : onPlay, + ), + IconButton(icon: const Icon(Icons.stop), onPressed: onStop), + ], + ), + ], + ), + contentPadding: const EdgeInsets.all(8), + titlePadding: const EdgeInsets.all(16), + ); }); + }, + ); } diff --git a/lib/editor_views/section.dart b/lib/editor_views/section.dart index 06d8211..3ae9fbf 100644 --- a/lib/editor_views/section.dart +++ b/lib/editor_views/section.dart @@ -1,202 +1,187 @@ -import 'dart:ui'; - import 'package:flutter/material.dart'; -import 'package:sound/editor_store.dart'; -import 'package:sound/model.dart'; -import 'package:sound/utils.dart'; -import 'package:tuple/tuple.dart'; import 'package:google_fonts/google_fonts.dart'; +import 'package:tuple/tuple.dart'; + +import '../editor_store.dart'; +import '../model.dart'; +import '../utils.dart'; class Editable extends StatefulWidget { - final String initialValue, hintText; - final TextStyle textStyle; + final String initialValue; + final TextStyle? textStyle; final ValueChanged onChange; - final int maxLines; + final String? hintText; + final int? maxLines; final bool multiline; - final String labelText; - - Editable( - {this.initialValue, - this.textStyle, - this.onChange, - this.hintText, - this.maxLines, - this.multiline = false, - this.labelText}); + final String? labelText; + + const Editable({ + super.key, + required this.initialValue, + this.textStyle, + required this.onChange, + this.hintText, + this.maxLines, + this.multiline = false, + this.labelText, + }); @override - State createState() { - return EditableState(); - } + State createState() => EditableState(); } class EditableState extends State { - TextEditingController _controller; + late TextEditingController _controller; @override void initState() { super.initState(); - _controller = TextEditingController.fromValue( - TextEditingValue(text: widget.initialValue)); + _controller = TextEditingController(text: widget.initialValue); } @override void dispose() { - _controller.clear(); + _controller.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return TextField( - decoration: InputDecoration.collapsed(hintText: widget.hintText) - .copyWith(labelText: widget.labelText), - keyboardType: - (widget.multiline) ? TextInputType.multiline : TextInputType.text, - expands: false, - minLines: 1, - maxLines: widget.maxLines, - - //maxLines: widget.maxLines, - enableInteractiveSelection: true, - onChanged: (s) { - if (widget.onChange != null) { - widget.onChange(s); - } - }, - controller: _controller, - textInputAction: - (widget.multiline) ? TextInputAction.newline : TextInputAction.done, - style: widget.textStyle); + decoration: InputDecoration.collapsed(hintText: widget.hintText) + .copyWith(labelText: widget.labelText), + keyboardType: widget.multiline ? TextInputType.multiline : TextInputType.text, + expands: false, + minLines: 1, + maxLines: widget.maxLines, + enableInteractiveSelection: true, + onChanged: widget.onChange, + controller: _controller, + textInputAction: + widget.multiline ? TextInputAction.newline : TextInputAction.done, + style: widget.textStyle, + ); } } class AddSectionItem extends StatelessWidget { - const AddSectionItem({Key key}) : super(key: key); + const AddSectionItem({super.key}); @override Widget build(BuildContext context) { return Container( - padding: EdgeInsets.symmetric(horizontal: 5), - child: Container( - height: 40, - decoration: BoxDecoration( - border: - Border.all(color: Theme.of(context).cardColor, width: 2)), - child: TextButton( - child: Text("Add Section", - style: Theme.of(context).textTheme.caption), - onPressed: () => addSection(Section(title: "", content: "")), - ))); + padding: const EdgeInsets.symmetric(horizontal: 5), + child: Container( + height: 40, + decoration: BoxDecoration( + border: Border.all(color: Theme.of(context).cardColor, width: 2), + ), + child: TextButton( + child: Text('Add Section', style: Theme.of(context).textTheme.bodySmall), + onPressed: () => addSection(Section(title: '', content: '')), + ), + ), + ); } } class SectionListItem extends StatelessWidget { - // Section section, bool moveDown, bool moveUp, GlobalKey globalKey) { final Section section; - final bool moveDown, moveUp; + final bool moveDown; + final bool moveUp; final GlobalKey globalKey; - final double contentFontSize; - const SectionListItem( - {this.section, - this.moveUp, - this.moveDown, - this.globalKey, - this.contentFontSize = 10, - Key key}) - : super(key: key); + const SectionListItem({ + required this.section, + required this.moveUp, + required this.moveDown, + required this.globalKey, + super.key, + }); @override Widget build(BuildContext context) { - List trailingWidgets = []; - if (moveDown) - trailingWidgets.add(IconButton( - icon: Icon(Icons.arrow_drop_down), - onPressed: () => moveSectionDown(section))); - if (moveUp) - trailingWidgets.add(IconButton( - icon: Icon(Icons.arrow_drop_up), - onPressed: () => moveSectionUp(section), - )); - Widget trailing = Column( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: trailingWidgets - .map((t) => Row(children: [t])) - .toList(), + final trailingWidgets = []; + if (moveDown) { + trailingWidgets.add( + IconButton( + icon: const Icon(Icons.arrow_drop_down), + onPressed: () => moveSectionDown(section), + ), + ); + } + if (moveUp) { + trailingWidgets.add( + IconButton( + icon: const Icon(Icons.arrow_drop_up), + onPressed: () => moveSectionUp(section), + ), + ); + } + + final card = Card( + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Expanded( + child: Padding( + padding: const EdgeInsets.all(10), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding( + padding: const EdgeInsets.only(bottom: 10), + child: Editable( + initialValue: section.title, + textStyle: Theme.of(context).textTheme.titleMedium, + onChange: (s) => changeSectionTitle(Tuple2(section, s)), + hintText: 'Title', + maxLines: 4, + ), + ), + Editable( + initialValue: section.content, + textStyle: Theme.of(context).textTheme.bodyMedium?.copyWith( + fontSize: 13, + fontWeight: FontWeight.normal, + ), + onChange: (s) => changeContent(Tuple2(section, s)), + hintText: 'Content', + multiline: true, + maxLines: null, + ), + ], + ), + ), + ), + Column( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: trailingWidgets, + ), + ], + ), ); - Card card = Card( - child: Container( - child: Row( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisSize: MainAxisSize.min, - children: [ - Expanded( - child: Container( - padding: EdgeInsets.all(10), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Padding( - padding: EdgeInsets.only(bottom: 10), - child: Editable( - initialValue: section.title, - textStyle: GoogleFonts.robotoMono( - textStyle: Theme.of(context) - .textTheme - .subtitle1 - .copyWith( - fontFeatures: [FontFeature.enable('smcp')], - )), - onChange: (s) => - changeSectionTitle(Tuple2(section, s)), - hintText: 'Section Title', - maxLines: 100)), - Wrap(children: [ - Editable( - initialValue: section.content, - textStyle: GoogleFonts.robotoMono( - textStyle: Theme.of(context) - .textTheme - .subtitle2 - .copyWith( - fontSize: contentFontSize, - fontFeatures: [ - FontFeature.tabularFigures() - ], - fontWeight: FontWeight.normal)), - onChange: (s) => changeContent(Tuple2(section, s)), - hintText: 'Content', - multiline: true) - ]) - ]))), - trailing - ], - ))); - return Dismissible( - child: card, - onDismissed: (d) { + key: globalKey, + direction: DismissDirection.startToEnd, + background: Card( + child: Container( + color: Colors.redAccent, + padding: const EdgeInsets.all(10), + child: const Row(children: [Icon(Icons.delete)]), + ), + ), + onDismissed: (_) { deleteSection(section); - showUndoSnackbar( - context: context, - message: - "Deleted ${section.hasEmptyTitle ? "Section" : "section " + section.title}", - data: section, - onClose: () => {}, - onUndo: (_) { - undoDeleteSection(section); - }); + context, + section.hasEmptyTitle ? 'Section' : section.title, + section, + (_) => undoDeleteSection(), + ); }, - direction: DismissDirection.startToEnd, - key: globalKey, - background: Card( - child: Container( - color: Theme.of(context).accentColor, - child: Row(children: [Icon(Icons.delete)]), - padding: EdgeInsets.all(10))), + child: card, ); } } @@ -206,57 +191,49 @@ class SectionView extends StatelessWidget { final double textScaleFactor; final bool richChords; - SectionView({this.section, this.textScaleFactor, this.richChords = false}); + const SectionView({ + super.key, + required this.section, + required this.textScaleFactor, + this.richChords = false, + }); @override Widget build(BuildContext context) { return Card( - elevation: 0, - child: Container( - child: Row( + elevation: 0, + child: Padding( + padding: const EdgeInsets.all(10), + child: Column( crossAxisAlignment: CrossAxisAlignment.start, - mainAxisSize: MainAxisSize.min, - children: [ - Expanded( - child: Container( - padding: EdgeInsets.all(10), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Padding( - padding: EdgeInsets.only(bottom: 10), - child: Text(section.title, - style: GoogleFonts.robotoMono( - textStyle: Theme.of(context) - .textTheme - .subtitle1 - .copyWith(), - fontSize: 14, - fontFeatures: [ - FontFeature.enable('smcp'), - ], - ), - textScaleFactor: textScaleFactor, - maxLines: 1)), - Wrap(children: [ - Text( - (richChords) - ? resolveRichContent(section.content) - : section.content, - style: GoogleFonts.robotoMono( - textStyle: - Theme.of(context).textTheme.subtitle2, - fontSize: 10, - letterSpacing: 0, - fontFeatures: [FontFeature.tabularFigures()], - fontWeight: FontWeight.normal, - ), - textScaleFactor: textScaleFactor, - maxLines: null, - ) - ]) - ]))), + children: [ + Padding( + padding: const EdgeInsets.only(bottom: 10), + child: Text( + section.title, + style: GoogleFonts.robotoMono( + textStyle: Theme.of(context).textTheme.titleMedium, + fontSize: 14, + fontFeatures: const [FontFeature.enable('smcp')], + ), + textScaler: TextScaler.linear(textScaleFactor), + maxLines: 1, + ), + ), + Text( + richChords ? resolveRichContent(section.content) : section.content, + style: GoogleFonts.robotoMono( + textStyle: Theme.of(context).textTheme.bodyMedium, + fontSize: 10, + letterSpacing: 0, + fontFeatures: const [FontFeature.tabularFigures()], + fontWeight: FontWeight.normal, + ), + textScaler: TextScaler.linear(textScaleFactor), + ), ], - ))); + ), + ), + ); } } diff --git a/lib/export.dart b/lib/export.dart index 9a4d87a..717b3ca 100644 --- a/lib/export.dart +++ b/lib/export.dart @@ -1,19 +1,15 @@ -import 'dart:convert'; import 'dart:io'; import 'package:flutter/material.dart'; -import 'package:flutter/services.dart'; -import 'package:flutter_file_dialog/flutter_file_dialog.dart'; -import 'package:flutter_share/flutter_share.dart'; import 'package:pdf/pdf.dart'; import 'package:pdf/widgets.dart' as pw; +import 'package:share_plus/share_plus.dart'; import 'package:sound/backup.dart'; -import 'package:sound/local_storage.dart'; import 'package:sound/model.dart'; import 'package:path/path.dart' as p; -enum ExportType { PDF, JSON, TEXT, ZIP } +enum ExportType { PDF, JSON, TEXT } String getExtension(ExportType t) { switch (t) { @@ -23,69 +19,91 @@ String getExtension(ExportType t) { return "pdf"; case ExportType.TEXT: return "text"; - case ExportType.ZIP: - return "zip"; - - default: - return ""; } } -class PDFExporter { - pw.Document pdf; - var textStyle = pw.TextStyle(); - - PDFExporter() { - pdf = pw.Document(); +class Exporter { + static Future export(Note note, ExportType t) async { + switch (t) { + case ExportType.JSON: + return json(note); + case ExportType.PDF: + return pdf(note); + case ExportType.TEXT: + return text(note); + } } - static Future loadFont(String name) async { - var data = await rootBundle.load("assets/fonts/$name"); - return pw.Font.ttf(data); + static Future exportShare(Note note, ExportType t) async { + final path = await export(note, t); + await SharePlus.instance.share(ShareParams( + title: '${note.title}.${getExtension(t)}', + text: 'Sharing ${note.title} from SOUND', + files: [XFile(path)], + )); } - static String formatText(String text) { - return latin1.decode(utf8.encode(text), allowInvalid: false); - } + static String getText(Note note) { + String? info = note.getInfoText(); + String contents = ""; - static List splitTextPerRow(String text, {int maxRows = 60}) { - List rows = text.split("\n"); - List split = []; + if (note.artist != null && note.artist!.isNotEmpty) { + contents += "© ${note.artist} \n"; + } + contents += note.title + "\n"; - for (int i = 0; i < rows.length; i += maxRows) { - int end = (i + maxRows) > rows.length ? rows.length : i + maxRows; - print("Split from $i to $end"); - split.add(rows.sublist(i, end).join("\n")); + if (info != null) { + contents += info; + } + contents += "\n\n\n"; + for (Section section in note.sections) { + contents += "[${section.title}]" + "\n\n"; + contents += section.content; + contents += "\n\n"; } - return split; + return contents; } - List getPages(Note note, int totalPageCount, int pageOffset) { - //var data = await rootBundle.load("assets/fonts/arial.ttf"); - //var customFont = pw.Font.ttf(data); - //var textStyle = pw.TextStyle(font: customFont); + static Future text(Note note) async { + Directory d = await Backup().getFilesDir(); + String path = p.join(d.path, "${note.title}.txt"); + + String contents = getText(note); + File(path).writeAsStringSync(contents); + return path; + } + + static Future json(Note note) async { + return await Backup().exportNote(note); + } + + static Future getSize(String text, TextStyle textStyle, + {double textScaleFactor = 1.0}) async { + return (TextPainter( + text: TextSpan(text: text, style: textStyle), + maxLines: 1, + textScaler: TextScaler.linear(textScaleFactor), + textDirection: TextDirection.ltr) + ..layout()) + .size; + } - // var textStyle = pw.TextStyle( - // font: await loadFont("OpenSans-Regular.ttf"), - // fontBold: await loadFont("OpenSans-Bold.ttf")); + static Future pdf(Note note) async { + Directory d = await Backup().getFilesDir(); + String path = p.join(d.path, "${note.title}.pdf"); - String info = note.getInfoText(); + String? info = note.getInfoText(); // final Uint8List fontData = File('open-sans.ttf').readAsBytesSync(); // final ttf = pw.Font.ttf(fontData.buffer.asByteData()); + final pdf = pw.Document(); List sections = []; List> sectionRows = []; int rows = 0; - List
noteSections = note.sections - .where((element) => element.content.trim().length > 0) - .toList(); - - for (var section in noteSections) { + for (var section in note.sections) { int sectionLength = section.content.split("\n").length; - - if (((sectionRows.length == 0 && (rows + sectionLength) > 50)) || - ((sectionRows.length > 0) && (rows + sectionLength) > 58)) { + if ((rows + sectionLength) > 50) { sectionRows.add(sections); sections = []; rows = 0; @@ -94,31 +112,12 @@ class PDFExporter { rows += 3; rows += sectionLength; - // separate content to multiple rows - sections.add(pw.Row(children: [ - pw.Text(formatText(section.title), - style: textStyle.copyWith(fontWeight: pw.FontWeight.bold)) + pw.Text(section.title, + style: pw.TextStyle(fontWeight: pw.FontWeight.bold)) ])); sections.add(pw.Row(children: [pw.Container(height: 5)])); - - List split = splitTextPerRow(section.content); - - print("section has ${split.length} splits..."); - - for (int i = 0; i < split.length; i++) { - var text = split.elementAt(i); - - sections.add(pw.Row(children: [ - pw.Text(formatText(text), - style: textStyle.copyWith(fontSize: 11 * PdfPageFormat.point)) - ])); - - if (i != split.length - 1) { - sectionRows.add(sections); - sections = []; - } else {} - } + sections.add(pw.Row(children: [pw.Text(section.content)])); sections.add(pw.Row(children: [pw.Container(height: 10)])); print("rows: $rows"); @@ -133,50 +132,36 @@ class PDFExporter { List titleRows = []; // add capo information / artist information... - if (info != null) { + if (info != null && info.isNotEmpty) { titleRows.addAll([ - pw.Row( - children: [pw.Text(info, style: textStyle.copyWith(fontSize: 12))]), + pw.Row(children: [pw.Text(info, style: pw.TextStyle(fontSize: 12))]), pw.Row(children: [pw.Container(height: 10)]) ]); } // add title titleRows.add(pw.Row(children: [ - pw.Center( - child: pw.Text(formatText(note.title), - style: textStyle.copyWith(fontSize: 20))) + pw.Center(child: pw.Text(note.title, style: pw.TextStyle(fontSize: 20))) ])); // spacing between title and content - titleRows.add(pw.Row(children: [pw.Container(height: 50)])); + titleRows.add(pw.Row(children: [pw.Container(height: 20)])); - String artist = (note.artist != null ? note.artist : Settings().name); - artist = formatText(artist); + String? artist = note.artist; var copyright = (artist == null) ? pw.Container() : pw.Positioned( bottom: 0, right: 0, - child: pw.Text("© ${formatText(artist)}", style: textStyle), + child: pw.Text("© $artist"), ); - List pages = []; - for (var i = 0; i < sectionRows.length; i++) { - var page = pw.Positioned( - bottom: 0, - left: 0, - child: pw.Text("Page ${pageOffset + i + 1}/$totalPageCount", - style: textStyle), - ); - - pages.add(pw.Page( - margin: pw.EdgeInsets.only(top: 50, bottom: 20, left: 50, right: 20), + pdf.addPage(pw.Page( + margin: pw.EdgeInsets.all(20), pageFormat: PdfPageFormat.a4, build: (pw.Context context) { return pw.Stack(children: [ copyright, - page, pw.Column( children: (i == 0) ? (titleRows..addAll(sectionRows[i])) @@ -184,201 +169,8 @@ class PDFExporter { ]); })); // Page } - - return pages; - } - - addNotes(List notes) { - if (notes.length == 0) return; - - int totalPageCount = notes - .map((e) => getPages(e, 0, 0).length) - .toList() - .reduce((a, b) => a + b); - - int offset = 0; - - for (Note note in notes) { - var pages = getPages(note, totalPageCount, offset); - offset += pages.length; - - for (var page in pages) { - pdf.addPage(page); - } - } - } - - String save(String path) { - File(path).writeAsBytesSync(pdf.save()); + final file = File(path); + await file.writeAsBytes(await pdf.save()); return path; } } - -class Exporter { - static Future exportNotes(List notes, ExportType t, - {List collections, String title}) async { - Settings settings = await LocalStorage().getSettings(); - - for (Note note in notes) { - if (note.artist == null) { - if (settings != null) { - note.artist = settings.name; - } - } - } - - switch (t) { - case ExportType.JSON: - return json(notes, collections: collections, title: title); - case ExportType.PDF: - return pdf(notes, title: title); - case ExportType.TEXT: - return text(notes, title: title); - case ExportType.ZIP: - return zip(notes, collections: collections, title: title); - - default: - return null; - } - } - - static Future zip(List notes, - {List collections, String title}) async { - return await Backup().exportZip(notes, - collections: collections, - filename: getFilename(notes, 'zip', title: title)); - } - - static Future exportShare(List notes, ExportType t, - {List collections, String title}) async { - String path = - await exportNotes(notes, t, collections: collections, title: title); - - title = p.basename(path); - - print("export to $path"); - await FlutterShare.shareFile( - title: '$title.${getExtension(t)}', - text: 'Sharing $title from SOUND', - filePath: path); - } - - static Future saveFileDialog(String path) async { - final params = SaveFileDialogParams(sourceFilePath: path); - return await FlutterFileDialog.saveFile(params: params); - } - - static Future exportDialog(List notes, ExportType t, - {List collections, String title}) async { - String path = - await exportNotes(notes, t, collections: collections, title: title); - await saveFileDialog(path); - } - - static String getText(Note note) { - String info = note.getInfoText(); - String contents = ""; - - if (note.artist != null) { - contents += "© ${note.artist} \n\n"; - } - contents += note.title + "\n\n"; - - if (info != null) { - contents += info; - } - contents += "\n\n\n"; - for (var i = 0; i < note.sections.length; i++) { - Section section = note.sections[i]; - - var sectionTitleEmpty = - section.title == null || section.title.trim() == ""; - var contentEmpty = - section.content == null || section.content.trim() == ""; - - if (sectionTitleEmpty) { - if (!contentEmpty) { - contents += section.content; - } - } else { - contents += "[${section.title}]" + "\n\n"; - contents += section.content; - } - - if ((!sectionTitleEmpty || !contentEmpty) && - i != (note.sections.length - 1)) { - contents += "\n\n"; - } - } - return contents; - } - - static String getFilename(List notes, String extension, - {String title}) { - if (title == null) title = "${notes.length} notes"; - if (notes.length == 1) title = notes.elementAt(0).title; - return "$title.$extension"; - } - - static Future getPath(List notes, String extension, - {String title}) async { - Directory d = await Backup().getFilesDir(); - return p.join(d.path, getFilename(notes, extension, title: title)); - } - - static Future text( - List notes, { - String title, - }) async { - String contents = ""; - - for (int i = 0; i < notes.length; i++) { - contents += getText(notes.elementAt(0)); - if (i != 0 && i != (notes.length - 1)) { - contents += "\n\n\n\n"; - } - } - - String path = await getPath(notes, "txt", title: title); - File(path).writeAsStringSync(contents); - return path; - } - - static Future json(List notes, - {String title, List collections}) async { - //return await Backup().exportNote(note); - String path = await getPath(notes, "json", title: title); - Map data; - - data = { - "notes": notes.map((e) => e.toJson()).toList(), - }; - - if (collections != null) { - data["collections"] = collections.map((e) => e.toJson()).toList(); - } - - File(path).writeAsStringSync(jsonEncode(data)); - return path; - } - - static Future getSize(String text, TextStyle textStyle, - {double textScaleFactor = 1.0}) async { - return (TextPainter( - text: TextSpan(text: text, style: textStyle), - maxLines: 1, - textScaleFactor: textScaleFactor, - textDirection: TextDirection.ltr) - ..layout()) - .size; - } - - static Future pdf(List notes, {String title}) async { - String path = await getPath(notes, "pdf", title: title); - - PDFExporter exporter = PDFExporter(); - exporter.addNotes(notes); - - return exporter.save(path); - } -} diff --git a/lib/export_note.dart b/lib/export_note.dart index 6ddbc13..a5d69ff 100644 --- a/lib/export_note.dart +++ b/lib/export_note.dart @@ -1,13 +1,12 @@ import 'package:flutter/material.dart'; -import 'package:flutter_share/flutter_share.dart'; +import 'package:share_plus/share_plus.dart'; import 'package:sound/export.dart'; import 'package:sound/utils.dart'; import 'db.dart'; -import 'backup.dart'; import 'model.dart'; class ExportNote extends StatefulWidget { - final ScaffoldState state; + final ScaffoldState? state; ExportNote({this.state}); @@ -18,7 +17,7 @@ class ExportNote extends StatefulWidget { } class ExportNoteState extends State { - String id; + String? id; @override void initState() { @@ -26,19 +25,24 @@ class ExportNoteState extends State { id = null; } - Note get note => DB().notes.firstWhere((n) => n.id == id, orElse: () => null); + Note? get note { + for (final n in DB().notes) { + if (n.id == id) return n; + } + return null; + } _export() async { if (note == null) { showSnack(widget.state, "Please select a note to export first"); return; } - String path = await Exporter.pdf([note]); - - await FlutterShare.shareFile( - title: '${note.title}.pdf', - text: 'Sharing PDF of ${note.title}', - filePath: path); + String path = await Exporter.pdf(note!); + await SharePlus.instance.share(ShareParams( + title: '${note!.title}.pdf', + text: 'Sharing PDF of ${note!.title}', + files: [XFile(path)], + )); /* String path = await Backup().exportNote(note); @@ -87,8 +91,8 @@ class ExportNoteState extends State { width: 100, child: Padding( padding: EdgeInsets.only(left: 10), - child: ElevatedButton( - onPressed: _export, child: Text("Export PDF"))), + child: + ElevatedButton(onPressed: _export, child: Text("Export"))), ) ]) ]); diff --git a/lib/file_manager.dart b/lib/file_manager.dart index a3f7e56..70080c2 100644 --- a/lib/file_manager.dart +++ b/lib/file_manager.dart @@ -42,24 +42,24 @@ class FileManager { } } - Future copy(AudioFile f, String newPath, {String id}) async { + Future copy(AudioFile f, String newPath, {String? id}) async { File fileCopy = await copyFile(File(f.path), newPath); print("copy audio file ${f.name}"); return _new(f, fileCopy, id); } - AudioFile _new(AudioFile f, File newFile, String id) { + AudioFile _new(AudioFile f, File newFile, String? id) { return AudioFile( createdAt: f.createdAt, duration: f.duration, - id: id == null ? Uuid().v4() : id, + id: id, lastModified: DateTime.now(), loopRange: f.loopRange, name: f.name, path: newFile.path); } - Future copyToNew(AudioFile f, {String id}) async { + Future copyToNew(AudioFile f, {String? id}) async { Directory filesDir = await Backup().getFilesDir(); String ext = p.extension(f.path); String newPath = p.join(filesDir.path, @@ -67,7 +67,7 @@ class FileManager { return copy(f, newPath, id: id); } - Future move(AudioFile f, String newPath, {String id}) async { + Future move(AudioFile f, String newPath, {String? id}) async { File fileMove = await moveFile(File(f.path), newPath); return _new(f, fileMove, id); } diff --git a/lib/gallery.dart b/lib/gallery.dart index 3617f87..47da4aa 100644 --- a/lib/gallery.dart +++ b/lib/gallery.dart @@ -8,18 +8,19 @@ class Gallery extends StatelessWidget { int get maxRows => (items.length / numItemsPerRow).ceil(); - Gallery( - {@required this.numItemsPerRow, - @required this.items, + const Gallery( + {required this.numItemsPerRow, + required this.items, this.padding = 8.0, - this.widthHeightRatio = 1.0}); + this.widthHeightRatio = 1.0, + super.key}); EdgeInsetsGeometry _getPadding(int row, int col) { double top = (row == 0) ? padding : padding / 2; double bottom = (row == maxRows - 1) ? padding : padding / 2; double left = (col == 0) ? padding : padding / 2; double right = (col == numItemsPerRow - 1) ? padding : padding / 2; - return new EdgeInsets.fromLTRB(left, top, right, bottom); + return EdgeInsets.fromLTRB(left, top, right, bottom); } Widget _getItem(int row, int col, double width) { @@ -30,10 +31,10 @@ class Gallery extends StatelessWidget { EdgeInsetsGeometry _padding = _getPadding(row, col); if (index >= items.length) - return new Container( + return Container( width: _itemWidth, height: _itemHeight, padding: _padding); else - return new Container( + return Container( width: _itemWidth, height: _itemHeight, padding: _padding, @@ -49,7 +50,7 @@ class Gallery extends StatelessWidget { itemCount: rows, shrinkWrap: true, itemBuilder: (context, index) { - return new Row( + return Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, //crossAxisAlignment: CrossAxisAlignment.center, //mainAxisSize: MainAxisSize.min, diff --git a/lib/home.dart b/lib/home.dart index 35a2529..fea6dd1 100644 --- a/lib/home.dart +++ b/lib/home.dart @@ -1,71 +1,100 @@ import 'package:flutter/material.dart'; import 'package:sound/dialogs/color_picker_dialog.dart'; -import 'package:sound/dialogs/export_dialog.dart'; import 'package:sound/dialogs/initial_import_dialog.dart'; import 'package:sound/note_views/appbar.dart'; import 'package:sound/note_views/seach.dart'; -import 'package:sound/settings_store.dart'; -import 'package:sound/utils.dart'; import 'package:tuple/tuple.dart'; +import 'package:provider/provider.dart'; import 'local_storage.dart'; import 'file_manager.dart'; import 'note_list.dart'; import 'storage.dart'; -import 'package:flutter_flux/flutter_flux.dart'; import 'note_editor.dart'; import 'model.dart'; //import 'recorder.dart'; import 'db.dart'; -class Home extends StatelessWidget { - final Function onMenuPressed; +class Home extends StatefulWidget { + final VoidCallback onMenuPressed; - Home(this.onMenuPressed); + const Home(this.onMenuPressed, {super.key}); - _floatingButtonPress(BuildContext context) { + @override + State createState() => _HomeState(); +} + +class _HomeState extends State { + bool _initialImportChecked = false; + + @override + void initState() { + super.initState(); + _bootstrapHome(); + } + + Future _bootstrapHome() async { + final notes = await LocalStorage().getNotes(); + if (!mounted) return; + + LocalStorage().controller.sink.add( + notes.where((e) => !e.discarded).toList(), + ); + await _showInitialImportIfNeeded(); + } + + Future _showInitialImportIfNeeded() async { + if (_initialImportChecked) return; + _initialImportChecked = true; + + final initialStart = await LocalStorage().isInitialStart(); + if (!mounted || !initialStart) return; + + await showInitialImportDialog(context, (_) async { + await LocalStorage().setInitialStartDone(); + }); + } + + void _floatingButtonPress(BuildContext context) { Note note = Note.empty(); LocalStorage().syncNote(note); Navigator.push( - context, new MaterialPageRoute(builder: (context) => NoteEditor(note))); + context, MaterialPageRoute(builder: (context) => NoteEditor(note))); } @override Widget build(BuildContext context) { - LocalStorage().getNotes().then((value) => LocalStorage() - .controller - .sink - .add(value.where((e) => !e.discarded).toList())); - var builder = StreamBuilder>( stream: LocalStorage().stream, initialData: [], builder: (context, snap) { + print(snap); if (snap.hasData) { - DB().setNotes(snap.data.where((e) => !e.discarded).toList()); - return HomeContent(this.onMenuPressed); + final data = snap.data ?? []; + DB().setNotes(data.where((e) => !e.discarded).toList()); + return HomeContent(widget.onMenuPressed); } else { return CircularProgressIndicator(); } }, ); - return ScaffoldMessenger( - child: Scaffold( - floatingActionButton: FloatingActionButton( + return Scaffold( + floatingActionButton: FloatingActionButton( + foregroundColor: Colors.white, + backgroundColor: Theme.of(context).colorScheme.secondary, + onPressed: () => _floatingButtonPress(context), + child: IconButton( onPressed: () => _floatingButtonPress(context), - child: IconButton( - onPressed: () => _floatingButtonPress(context), - icon: Icon(Icons.add), - ), + icon: Icon(Icons.add), ), - //bottomSheet: RecorderBottomSheet(), - body: builder), - ); + ), + //bottomSheet: RecorderBottomSheet(), + body: builder); } } class HomeContent extends StatefulWidget { - final Function onMenuPressed; + final VoidCallback onMenuPressed; HomeContent(this.onMenuPressed); @override @@ -75,18 +104,19 @@ class HomeContent extends StatefulWidget { } class HomeContentState extends State - with StoreWatcherMixin, SingleTickerProviderStateMixin { - TextEditingController _controller; - StaticStorage storage; + with SingleTickerProviderStateMixin { + late TextEditingController _controller; + late StaticStorage storage; // settings store, use view and set recording format - bool isSearching; - bool filtersEnabled; + bool isSearching = false; + bool filtersEnabled = false; bool get isFiltering => storage.filters.length > 0; @override Widget build(BuildContext context) { + storage = context.watch(); return _sliver(); } @@ -99,34 +129,9 @@ class HomeContentState extends State @override void initState() { super.initState(); - isSearching = false; - filtersEnabled = false; _controller = TextEditingController(); - storage = listenToStore(storageToken); - - LocalStorage().getSettings().then((Settings settings) { - if (settings != null) { - changeSortBy(settings.sortBy); - changeSortDirection(settings.sortDirection); - changeListType(settings.noteListType); - } - }); - // init filemanager FileManager(); - - //LocalStorage().setInitialStart(false); - - // Future.delayed(Duration(milliseconds: 1000), () async { - - LocalStorage().isInitialStart().then((initalStart) { - if (initalStart) { - showInitialImportDialog(context, (_) { - print("set initial start done..."); - LocalStorage().setInitialStartDone(); - }); - } - }); } _activeFiltersView() { @@ -205,124 +210,63 @@ class HomeContentState extends State } _sliverNoteSelectionAppBar() { - var actions = [ - IconButton( - icon: Icon(Icons.share), - onPressed: () { - showExportDialog(context, storage.selectedNotes); - }), - IconButton( - icon: Icon(Icons.delete), - onPressed: () async { - bool contains = false; - - for (Note note in storage.selectedNotes) { - if (await LocalStorage().getNumCollectionsByNoteId(note.id) > 0) - contains = true; - } - - if (contains) { - String oneOrMore = - "One or more notes are part of a set. Notes will be removed from their sets. Are you sure you want to continue?"; - - showDialog( - context: context, - builder: (context) { - return AlertDialog( - content: Text(oneOrMore), - actions: [ - TextButton( - onPressed: () { - Navigator.of(context).pop(); - }, - child: Text("No")), - ElevatedButton( - onPressed: () { - discardAllSelectedNotes(true); - Navigator.of(context).pop(); - }, - child: Text("Yes")) - ], - ); - }); - } else { - showUndoSnackbar( - data: null, - context: context, - onClose: () {}, - onUndo: (_) { - undoDiscardAllSelectedNotes(); - }, - message: - "Moved ${storage.selectedNotes.length} Notes to Trash"); - - discardAllSelectedNotes(false); - } - }), - IconButton( - icon: Icon(Icons.color_lens), - onPressed: () { - showColorPickerDialog(context, null, (c) { - colorAllSelectedNotes(c); - }); - }), - IconButton( - icon: Icon((storage.selectedNotes - .where((e) => e.starred) - .toList() - .length - .toDouble() / - storage.selectedNotes.length.toDouble()) < - 0.5 - ? Icons.star - : Icons.star_border), - onPressed: () { - if ((storage.selectedNotes - .where((e) => e.starred) - .toList() - .length - .toDouble() / - storage.selectedNotes.length.toDouble()) < - 0.5) { - starAllSelectedNotes(); - } else { - unstarAllSelectedNotes(); - } - }) - ]; + print((storage.selectedNotes + .map((e) => e.starred) + .toList() + .length + .toDouble() / + storage.selectedNotes.length.toDouble())); return SliverAppBar( pinned: true, - flexibleSpace: _sortingView(), - expandedHeight: 80, leading: IconButton( icon: Icon(Icons.clear), onPressed: () => clearSelection()), title: Text(storage.selectedNotes.length.toString()), - actions: actions, + actions: [ + IconButton( + icon: Icon(Icons.delete), + onPressed: () => discardAllSelectedNotes()), + IconButton( + icon: Icon(Icons.color_lens), + onPressed: () { + showColorPickerDialog(context, null, (c) { + colorAllSelectedNotes(c); + }); + }), + IconButton( + icon: Icon((storage.selectedNotes + .where((e) => e.starred) + .toList() + .length + .toDouble() / + storage.selectedNotes.length.toDouble()) < + 0.5 + ? Icons.star + : Icons.star_border), + onPressed: () { + if ((storage.selectedNotes + .where((e) => e.starred) + .toList() + .length + .toDouble() / + storage.selectedNotes.length.toDouble()) < + 0.5) { + starAllSelectedNotes(); + } else { + unstarAllSelectedNotes(); + } + }), + ], ); } - _sortingView() { - return SortingView( - by: storage.sortBy, - direction: storage.sortDirection, - onDirectionChange: (d) { - changeSortDirection(d); - setDefaultSortDirection(d); - }, - onSortByChange: (by) { - changeSortBy(by); - setDefaultSortBy(by); - }); - } - _sliverAppBar() { return SliverAppBar( titleSpacing: 5.0, actions: isSearching ? _searchActionButtons() : _listActionButtons(), flexibleSpace: (filtersEnabled && isSearching) ? _filtersView() - : (isFiltering ? _activeFiltersView() : _sortingView()), + : (isFiltering ? _activeFiltersView() : Container()), leading: isSearching ? IconButton( icon: Icon(Icons.arrow_back), onPressed: () => _clearSearch()) @@ -331,7 +275,7 @@ class HomeContentState extends State child: Center(child: _searchView()), padding: EdgeInsets.only(left: 5)), expandedHeight: - (isSearching && filtersEnabled) ? 370 : (isFiltering ? 100 : 80), + (isSearching && filtersEnabled) ? 370 : (isFiltering ? 100 : 0), floating: false, pinned: true, ); @@ -343,7 +287,7 @@ class HomeContentState extends State triggerSelectNote(note); } else { Navigator.push(context, - new MaterialPageRoute(builder: (context) => NoteEditor(note))); + MaterialPageRoute(builder: (context) => NoteEditor(note))); } } @@ -373,7 +317,7 @@ class HomeContentState extends State Padding( padding: EdgeInsets.only(left: 16, top: 16), child: Row(children: [ - Text("Starred", style: Theme.of(context).textTheme.caption), + Text("Starred", style: Theme.of(context).textTheme.bodySmall), Padding( padding: EdgeInsets.only(left: 8), child: Icon(Icons.star, size: 16)) @@ -385,7 +329,7 @@ class HomeContentState extends State delegate: SliverChildListDelegate([ Padding( padding: EdgeInsets.only(left: 16), - child: Text("Other", style: Theme.of(context).textTheme.caption)) + child: Text("Other", style: Theme.of(context).textTheme.bodySmall)) ])), NoteList(true, storage.view, items, onTap, onLongPress, highlight: storage.search == "" ? null : storage.search.trim()) @@ -414,9 +358,7 @@ class HomeContentState extends State _searchView() { return SearchTextView( toggleIsSearching: _toggleIsSearching, - onChanged: (s) { - searchNotes(s); - }, + onChanged: searchNotes, controller: _controller); } } diff --git a/lib/intent_receive.dart b/lib/intent_receive.dart index 85e6aa2..23fcb96 100644 --- a/lib/intent_receive.dart +++ b/lib/intent_receive.dart @@ -1,47 +1,39 @@ import 'dart:io'; +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:receive_sharing_intent/receive_sharing_intent.dart'; import 'package:sound/dialogs/audio_import_dialog.dart'; -import 'package:sound/dialogs/text_import_dialog.dart'; showDataInvalidSnack(BuildContext context) { - var snackBar = SnackBar( + var snackbar = SnackBar( content: Text("The dataformat/files were invalid"), - backgroundColor: Theme.of(context).errorColor); - ScaffoldMessenger.of(context).showSnackBar(snackBar); + backgroundColor: Theme.of(context).colorScheme.error); + ScaffoldMessenger.of(context).showSnackBar(snackbar); } setupIntentReceivers(BuildContext context) { - // For sharing or opening urls/text coming from outside the app while the app is closed - ReceiveSharingIntent.getInitialText().then((String value) { - if (value != null) { - showTextImportDialog(context, value); + if (kIsWeb || !(Platform.isAndroid || Platform.isIOS)) { + return; + } + final sharing = ReceiveSharingIntent.instance; + // For sharing files coming from outside the app while the app is closed + sharing.getInitialMedia().then((List value) async { + var audioExtensions = ['.m4a', ".wav", ".mp3", ".aac"]; + var _validFiles = value.where( + (f) => audioExtensions.any((e) => f.path.toLowerCase().endsWith(e))); + + if (_validFiles.length == 0) { + showDataInvalidSnack(context); + return; } - }); - // For sharing images coming from outside the app while the app is closed - ReceiveSharingIntent.getInitialMedia() - .then((List value) async { - if (value != null) { - var audioExtensions = ['.m4a', ".wav", ".mp3", ".aac"]; - var _validFiles = value.where( - (f) => audioExtensions.any((e) => f.path.toLowerCase().endsWith(e))); + print("Shared valid audio files:" + + _validFiles.map((f) => f.path).join(",")); + List files = _validFiles.map((f) => File(f.path)).toList(); - if (_validFiles.length == 0) { - if (value.length > 0) { - showDataInvalidSnack(context); - } - return; - } + showAudioImportDialog(context, files); + // show dialog to add text/audio to file or create a new one - print("Shared valid audio files:" + - (_validFiles?.map((f) => f.path)?.join(",") ?? "")); - List files = _validFiles.map((f) => File(f.path)).toList(); - - showAudioImportDialog(context, files); - // show dialog to add text/audio to file or create a new one - - } - }); + }); } diff --git a/lib/local_storage.dart b/lib/local_storage.dart index f49a7b1..c98805b 100644 --- a/lib/local_storage.dart +++ b/lib/local_storage.dart @@ -1,79 +1,25 @@ +import 'dart:async'; import 'dart:convert'; import 'dart:io'; +import 'package:path/path.dart'; import 'package:shared_preferences/shared_preferences.dart'; +import 'package:sqflite/sqflite.dart'; import 'model.dart'; -import 'dart:async'; -import 'package:path/path.dart'; -import 'package:sqflite/sqflite.dart'; -// table defintions final String noteTable = 'notes'; final String sectionTable = 'sections'; final String audioFileTable = 'audiofiles'; final String collectionTable = 'collections'; final String collectionMappingTable = 'collectionmapping'; -// up and downgrades of the database -final migrations = { - 1: { - 2: [ - //upgrade - "CREATE TABLE $collectionTable(id TEXT PRIMARY KEY, title TEXT, description TEXT, createdAt TEXT, lastModified TEXT, starred INTEGER);", - "CREATE TABLE $collectionMappingTable (noteId TEXT, collectionId TEXT);" - ] - }, - 2: { - 1: [ - // downgrade - "DROP TABLE $collectionTable;", - "DROP TABLE $collectionMappingTable;", - ], - 3: [ - "ALTER TABLE $sectionTable ADD createdAt TEXT", - "ALTER TABLE $sectionTable ADD lastModified TEXT", - ] - }, - 3: { - 2: [ - "ALTER TABLE $sectionTable DROP COLUMN createdAt", - "ALTER TABLE $sectionTable DROP COLUMN lastModified", - ], - 4: [ - "ALTER TABLE $noteTable ADD length REAL", - ] - }, - 4: { - 3: [ - "ALTER TABLE $noteTable DROP COLUMN length", - ], - 5: [ - "ALTER TABLE $audioFileTable ADD text TEXT", - ] - }, - 5: { - 4: [ - "ALTER TABLE $audioFileTable DROP COLUMN text", - ], - 6: [ - "ALTER TABLE $audioFileTable ADD starred INTEGER", - ] - }, - 6: { - 5: [ - "ALTER TABLE $audioFileTable DROP COLUMN starred", - ] - } -}; - class LocalStorage { LocalStorage._internal(); - static final LocalStorage _singleton = new LocalStorage._internal(); + static final LocalStorage _singleton = LocalStorage._internal(); final StreamController> _controller = StreamController>.broadcast(); - final StreamController> _collectionController = StreamController>.broadcast(); @@ -85,316 +31,233 @@ class LocalStorage { Stream> get collectionStream => _collectionController.stream.asBroadcastStream(); - factory LocalStorage() { - return _singleton; - } - - Future deleteFile(File f) { - return f.delete(); - } - - Future anyNote() async { - final List> maps = - await (await getDatabase()).query(noteTable, limit: 1); + factory LocalStorage() => _singleton; - if (maps == null || (maps.length == 0)) - return false; - else - return true; - } + Future deleteFile(File f) => f.delete(); Future getDatabase() async { return openDatabase( - // Set the path to the database. Note: Using the `join` function from the - // `path` package is best practice to ensure the path is correctly - // constructed for each platform. - join(await getDatabasesPath(), 'sketchord.db'), - // When the database is first created, create a table to store dogs. - onCreate: (db, version) async { - // Run the CREATE TABLE statement on the database. - await createDatabase(db); - - if (version != 1) { - for (int i = 2; i <= version; i++) { - int oldVersion = i - 1; - int newVersion = i; - migrations[oldVersion][newVersion] - .forEach((script) async => await db.execute(script)); - } - } - }, onUpgrade: (Database db, int oldVersion, int newVersion) async { - print("performing upgrade from $oldVersion to $newVersion"); - migrations[oldVersion][newVersion] - .forEach((script) async => await db.execute(script)); - }, onDowngrade: (Database db, int oldVersion, int newVersion) { - print("performing downgrade from $oldVersion to $newVersion"); - migrations[oldVersion][newVersion] - .forEach((script) async => await db.execute(script)); - }, - // Set the version. This executes the onCreate function and provides a - // path to perform database upgrades and downgrades. - version: 6); + join(await getDatabasesPath(), 'sketchord.db'), + version: 2, + onCreate: (db, version) async => createDatabase(db), + onUpgrade: (db, oldVersion, newVersion) async => _ensureSchema(db), + onOpen: (db) async => _ensureSchema(db), + ); } Future createDatabase(Database db) async { - // create initial database - print("creating initial tables"); await db.execute( - """CREATE TABLE $noteTable(id TEXT PRIMARY KEY, title TEXT, createdAt TEXT, lastModified TEXT, - key TEXT, tuning TEXT, capo TEXT, instrument TEXT, label TEXT, artist TEXT, color TEXT, bpm REAL, zoom REAL, - scrollOffset REAL, starred INTEGER, discarded INTEGER); - """, + '''CREATE TABLE $noteTable( + id TEXT PRIMARY KEY, + title TEXT, + createdAt TEXT, + lastModified TEXT, + key TEXT, + tuning TEXT, + capo TEXT, + instrument TEXT, + label TEXT, + artist TEXT, + color TEXT, + bpm REAL, + length REAL, + zoom REAL, + scrollOffset REAL, + starred INTEGER, + discarded INTEGER + );''', + ); + await db.execute( + 'CREATE TABLE $sectionTable(id TEXT PRIMARY KEY, noteId TEXT, title TEXT, content TEXT, idx INTEGER);', + ); + await db.execute( + 'CREATE TABLE $audioFileTable(id TEXT PRIMARY KEY, noteId TEXT, idx INTEGER, duration TEXT, path TEXT, createdAt TEXT, lastModified TEXT, name TEXT, loopRange TEXT, text TEXT, starred INTEGER);', ); await db.execute( - 'CREATE TABLE $sectionTable(id TEXT PRIMARY KEY, noteId TEXT, title TEXT, content TEXT, idx INTEGER);'); + 'CREATE TABLE $collectionTable(id TEXT PRIMARY KEY, title TEXT, description TEXT, createdAt TEXT, lastModified TEXT, starred INTEGER);', + ); + await db.execute( + 'CREATE TABLE $collectionMappingTable(noteId TEXT, collectionId TEXT);', + ); + } + Future _ensureSchema(Database db) async { + await db.execute( + 'CREATE TABLE IF NOT EXISTS $collectionTable(id TEXT PRIMARY KEY, title TEXT, description TEXT, createdAt TEXT, lastModified TEXT, starred INTEGER);', + ); await db.execute( - 'CREATE TABLE $audioFileTable(id TEXT PRIMARY KEY, noteId TEXT, idx INTEGER, duration TEXT, path TEXT, createdAt TEXT, lastModified TEXT, name TEXT, loopRange TEXT);'); + 'CREATE TABLE IF NOT EXISTS $collectionMappingTable(noteId TEXT, collectionId TEXT);', + ); + + if (!await _hasColumn(db, noteTable, 'length')) { + await db.execute('ALTER TABLE $noteTable ADD length REAL;'); + } + if (!await _hasColumn(db, audioFileTable, 'text')) { + await db.execute('ALTER TABLE $audioFileTable ADD text TEXT;'); + } + if (!await _hasColumn(db, audioFileTable, 'starred')) { + await db.execute('ALTER TABLE $audioFileTable ADD starred INTEGER;'); + } } - Future syncNote(Note note) async { - print( - "Syncing note ${note.id} with title ${note.title}, ${note.sections.length} sections and ${note.audioFiles.length} audio files"); + Future _hasColumn(Database db, String table, String column) async { + final res = await db.rawQuery('PRAGMA table_info($table)'); + return res.any((row) => row['name'] == column); + } + Future syncNote(Note note) async { final db = await getDatabase(); - await db.delete(sectionTable, where: "noteId = ?", whereArgs: [note.id]); - + await db.delete(sectionTable, where: 'noteId = ?', whereArgs: [note.id]); for (int i = 0; i < note.sections.length; i++) { - Map sectionData = note.sections[i].toJson(); + final sectionData = note.sections[i].toJson(); sectionData['idx'] = i; sectionData['noteId'] = note.id; - - int id = await db.insert(sectionTable, sectionData, + await db.insert(sectionTable, sectionData, conflictAlgorithm: ConflictAlgorithm.replace); - - print("insert section ${note.sections[i].title} => $id"); } - // delete all old audio files with noteId - await db.delete(audioFileTable, where: "noteId = ?", whereArgs: [note.id]); - + await db.delete(audioFileTable, where: 'noteId = ?', whereArgs: [note.id]); for (int i = 0; i < note.audioFiles.length; i++) { - Map autdioFileData = note.audioFiles[i].toJson(); - autdioFileData['idx'] = i; - autdioFileData['noteId'] = note.id; - - await db.insert(audioFileTable, autdioFileData, + final audioFileData = note.audioFiles[i].toJson(); + audioFileData['idx'] = i; + audioFileData['noteId'] = note.id; + await db.insert(audioFileTable, audioFileData, conflictAlgorithm: ConflictAlgorithm.replace); } note.lastModified = DateTime.now(); - Map data = note.toJson(); - data.remove('sections'); - data.remove('audioFiles'); - - // check if note already exists - List noteQuery = await db.query(noteTable, - where: "id = ?", whereArgs: [note.id], limit: 1); - int row; - - if (noteQuery.length == 1) { - row = await db.update(noteTable, data, - where: "id = ?", - whereArgs: [note.id], - conflictAlgorithm: ConflictAlgorithm.replace); - } else { - row = await db.insert(noteTable, data, - conflictAlgorithm: ConflictAlgorithm.replace); - } + final data = note.toJson()..remove('sections')..remove('audioFiles'); + final row = await db.insert(noteTable, data, + conflictAlgorithm: ConflictAlgorithm.replace); - print("Done Syncing ${note.id} in row $row"); _controller.sink.add(await getNotes()); return row; } Future addAudioIdea(AudioFile f) async { - Database db = await getDatabase(); - - Map autdioFileData = f.toJson(); - return await db.insert(audioFileTable, autdioFileData, + final db = await getDatabase(); + final data = f.toJson(); + data.remove('noteId'); + data.remove('idx'); + return db.insert(audioFileTable, data, conflictAlgorithm: ConflictAlgorithm.replace); } Future syncAudioFile(AudioFile f) async { - var db = await getDatabase(); - return await db.update(audioFileTable, f.toJson(), - where: "id = ?", + final db = await getDatabase(); + return db.update(audioFileTable, f.toJson(), + where: 'id = ?', whereArgs: [f.id], conflictAlgorithm: ConflictAlgorithm.replace); } Future> getSections(String noteId) async { - List> maps = await (await getDatabase()) + var maps = await (await getDatabase()) .query(sectionTable, where: 'noteId = ?', whereArgs: [noteId]); - maps = maps.map((m) => Map.from(m)).toList(); - if (maps == null) return []; - - // copy maps to sort them properly - maps.sort((s1, s2) => s1['idx'] - s2['idx']); + maps.sort((s1, s2) => (s1['idx'] as int) - (s2['idx'] as int)); return maps.map((s) => Section.fromJson(s)).toList(); } Future> getAudioFiles(String noteId) async { - List> maps = await (await getDatabase()) + var maps = await (await getDatabase()) .query(audioFileTable, where: 'noteId = ?', whereArgs: [noteId]); - if (maps == null) return []; - - // copy maps to sort them properly maps = maps.map((m) => Map.from(m)).toList(); - maps.sort((s1, s2) => s1['idx'] - s2['idx']); + maps.sort((s1, s2) => (s1['idx'] as int) - (s2['idx'] as int)); return maps.map((s) => AudioFile.fromJson(s)).toList(); } Future> getAudioIdeas({bool descending = true}) async { - List> maps = await (await getDatabase()) - .query(audioFileTable, where: 'noteId IS NULL', whereArgs: []); - if (maps == null) return []; - - // copy maps to sort them properly + var maps = + await (await getDatabase()).query(audioFileTable, where: 'noteId IS NULL'); maps = maps.map((m) => Map.from(m)).toList(); - var files = maps.map((s) => AudioFile.fromJson(s)).toList(); - if (descending) { - files.sort((a1, a2) => a2.createdAt.compareTo(a1.createdAt)); - } + final files = maps.map((s) => AudioFile.fromJson(s)).toList(); + files.sort((a, b) => descending + ? b.createdAt.compareTo(a.createdAt) + : a.createdAt.compareTo(b.createdAt)); return files; } - Future parseNote(Map data) async { - String noteId = data['id']; - if (noteId == null) return null; + Future getNoteById(String id) async { + final maps = + await (await getDatabase()).query(noteTable, where: 'id = ?', whereArgs: [id]); + if (maps.isEmpty) return null; + return getNote(Map.from(maps.first)); + } - Note note = Note.fromJson(data, noteId); + Future getNote(Map data) async { + final noteId = data['id'] as String; + final note = Note.fromJson(data, noteId); note.sections = await getSections(noteId); note.audioFiles = await getAudioFiles(noteId); return note; } - Future getNoteById(String id) async { - final List> maps = await (await getDatabase()) - .query(noteTable, where: "id = ?", whereArgs: [id]); - - if (maps == null || maps.length == 0) - return null; - else - return parseNote(maps[0]); - } - Future> getNotes() async { - final List> maps = - await (await getDatabase()).query(noteTable); - - if (maps == null) return []; - - List notes = []; - - for (var map in maps) { - Note note = await parseNote(map); - if (note != null) notes.add(note); + final maps = await (await getDatabase()).query(noteTable); + final notes = []; + for (final map in maps) { + notes.add(await getNote(Map.from(map))); } return notes; } Future> getCollections() async { - final List> maps = - await (await getDatabase()).query(collectionTable); - - if (maps == null) return []; - List collections = []; - - for (var map in maps) { - String collectionId = map['id']; - NoteCollection collection = NoteCollection.fromJson(map); - // add notes by id - collection.notes = await getNotesByCollectionId(collectionId); + final maps = await (await getDatabase()).query(collectionTable); + final collections = []; + for (final map in maps) { + final collection = NoteCollection.fromJson(Map.from(map)); + collection.notes = await getNotesByCollectionId(collection.id); collections.add(collection); } - return collections; } Future syncCollection(NoteCollection collection) async { + final db = await getDatabase(); collection.lastModified = DateTime.now(); - var data = collection.toJson(); - data.remove('notes'); - - print("collection contains ${collection.notes.length} notes"); - - var db = await getDatabase(); - var query = await db - .query(collectionTable, where: "id = ?", whereArgs: [collection.id]); - if (query == null || query.length == 0) { - int row = await db.insert(collectionTable, data, - conflictAlgorithm: ConflictAlgorithm.replace); - print("Insert into row $row"); - } else { - print(query); - print("update table"); - _updateTable(collectionTable, data); - } + final data = collection.toJson()..remove('notes'); + await db.insert(collectionTable, data, + conflictAlgorithm: ConflictAlgorithm.replace); - var noteIds = await _getNoteIdsByCollectionId(collection.id, db); - print("note ids: $noteIds"); - - for (var note in collection.notes) { - if (!noteIds.contains(note.id)) { - // add setId / noteId pair - Map pair = { - "noteId": note.id, - "collectionId": collection.id - }; - - int row = await db.insert(collectionMappingTable, pair, - conflictAlgorithm: ConflictAlgorithm.replace); - print( - "insert noteId ${note.id} into collection ${collection.id} | row: $row"); + final existingNoteIds = await _getNoteIdsByCollectionId(collection.id, db); + for (final note in collection.notes) { + if (!existingNoteIds.contains(note.id)) { + await db.insert( + collectionMappingTable, + {'noteId': note.id, 'collectionId': collection.id}, + conflictAlgorithm: ConflictAlgorithm.replace, + ); } else { - noteIds.remove(note.id); + existingNoteIds.remove(note.id); } } - // if any noteId left in list, remove entry from table - for (var noteId in noteIds) { - print("delete noteId: $noteId | collectionId: ${collection.id}"); + for (final noteId in existingNoteIds) { await db.delete(collectionMappingTable, - where: "collectionId = ? AND noteId = ?", + where: 'collectionId = ? AND noteId = ?', whereArgs: [collection.id, noteId]); } - assert((await this._getNoteIdsByCollectionId(collection.id, db)).length == - collection.notes.length); - - var collections = await getCollections(); - _collectionController.sink.add(collections); + _collectionController.sink.add(await getCollections()); } Future getNumCollectionsByNoteId(String noteId) async { - final List> maps = await (await getDatabase()).query( - collectionMappingTable, - where: "noteId = ?", - whereArgs: [noteId]); - - if (maps == null) - return 0; - else - return maps.length; + final maps = await (await getDatabase()).query(collectionMappingTable, + where: 'noteId = ?', whereArgs: [noteId]); + return maps.length; } Future> getNotesByCollectionId(String collectionId) async { - final List> maps = await (await getDatabase()).query( - collectionMappingTable, - where: "collectionId = ?", - whereArgs: [collectionId]); - - if (maps == null) return []; - - List notes = []; - print("found ${maps.length} results"); - - for (var map in maps) { - Note note = await getNoteById(map['noteId']); + final maps = await (await getDatabase()).query(collectionMappingTable, + where: 'collectionId = ?', whereArgs: [collectionId]); + final notes = []; + for (final map in maps) { + final noteId = map['noteId'] as String?; + if (noteId == null) continue; + final note = await getNoteById(noteId); if (note != null) notes.add(note); } return notes; @@ -402,43 +265,31 @@ class LocalStorage { Future> _getNoteIdsByCollectionId( String collectionId, Database db) async { - final List> maps = await (db.query( - collectionMappingTable, - where: "collectionId = ?", - whereArgs: [collectionId])); - - if (maps == null) return []; - return maps.asMap().values.map((value) => value['noteId']).toList(); + final maps = await db.query(collectionMappingTable, + where: 'collectionId = ?', whereArgs: [collectionId]); + return maps + .map((row) => row['noteId']) + .whereType() + .toList(growable: true); } Future _deleteAudioFile(AudioFile audioFile) async { - var db = await getDatabase(); - await db.delete( - audioFileTable, - where: 'id = ?', - whereArgs: [audioFile.id], - ); - + final db = await getDatabase(); + await db.delete(audioFileTable, where: 'id = ?', whereArgs: [audioFile.id]); if (audioFile.file.existsSync()) { - FileSystemEntity e = await audioFile.file.delete(); + await audioFile.file.delete(); } return !audioFile.file.existsSync(); } - Future deleteAudioIdea(AudioFile audioFile) async { - return _deleteAudioFile(audioFile); - } + Future deleteAudioIdea(AudioFile audioFile) => _deleteAudioFile(audioFile); Future deleteNote(Note note) async { final db = await getDatabase(); + await db.delete(noteTable, where: 'id = ?', whereArgs: [note.id]); + await db.delete(collectionMappingTable, where: 'noteId = ?', whereArgs: [note.id]); - await db.delete( - noteTable, - where: 'id = ?', - whereArgs: [note.id], - ); - - for (AudioFile f in note.audioFiles) { + for (final f in note.audioFiles) { await _deleteAudioFile(f); } _controller.sink.add(await getNotes()); @@ -446,54 +297,30 @@ class LocalStorage { Future deleteCollection(NoteCollection collection) async { final db = await getDatabase(); - - await db.delete( - collectionTable, - where: 'id = ?', - whereArgs: [collection.id], - ); - - await db.delete( - collectionMappingTable, - where: 'collectionId = ?', - whereArgs: [collection.id], - ); + await db.delete(collectionTable, where: 'id = ?', whereArgs: [collection.id]); + await db.delete(collectionMappingTable, + where: 'collectionId = ?', whereArgs: [collection.id]); _collectionController.sink.add(await getCollections()); } Future _updateTable(String table, Map data, {String where = 'id = ?'}) async { final db = await getDatabase(); - - return await db.update( - table, - data, - where: where, - whereArgs: [data['id']], - ); + return db.update(table, data, where: where, whereArgs: [data['id']]); } - Future discardNote(Note note, bool removeFromCollection) async { + Future discardNote(Note note, {bool removeFromCollection = false}) async { note.discarded = true; - _updateNote(note); - + await _updateNote(note); if (removeFromCollection) { - print("removing note from collections"); - final db = await getDatabase(); - - await db.delete(collectionMappingTable, - where: "noteId = ?", whereArgs: [note.id]); + await db.delete(collectionMappingTable, where: 'noteId = ?', whereArgs: [note.id]); } } Future _updateNote(Note note) async { - // this function does not update sections and audio files note.lastModified = DateTime.now(); - var data = note.toJson(); - data.remove("sections"); - data.remove("audioFiles"); - + final data = note.toJson()..remove('sections')..remove('audioFiles'); await _updateTable(noteTable, data); _controller.sink.add(await getNotes()); } @@ -503,39 +330,22 @@ class LocalStorage { await _updateNote(note); } - Future restoreNoteById(String noteId) async { - Note note = await getNoteById(noteId); - if (note != null) { - note.discarded = false; - await _updateNote(note); - return true; - } else - return false; - } - Future syncNoteAttr(Note note, String attr) async { - if (["sections", "title", "audioFiles", "tuning"].contains(attr)) - note.lastModified = DateTime.now(); await syncNote(note); _controller.sink.add(await getNotes()); } Future isInitialStart() async { - SharedPreferences prefs = await SharedPreferences.getInstance(); - bool started = prefs.getBool('started'); - return started == null ? true : !started; + final prefs = await SharedPreferences.getInstance(); + final started = prefs.getBool('started'); + return !(started ?? false); } Future setInitialStartDone() async { - SharedPreferences prefs = await SharedPreferences.getInstance(); + final prefs = await SharedPreferences.getInstance(); await prefs.setBool('started', true); } - Future setInitialStart(bool initialStart) async { - SharedPreferences prefs = await SharedPreferences.getInstance(); - await prefs.setBool('started', initialStart); - } - Future> getActiveNotes() async { return (await getNotes()).where((n) => !n.discarded).toList(); } @@ -545,14 +355,19 @@ class LocalStorage { } Future syncSettings(Settings settings) async { - SharedPreferences prefs = await SharedPreferences.getInstance(); - return await prefs.setString("settings", jsonEncode(settings.toJson())); + final prefs = await SharedPreferences.getInstance(); + return prefs.setString('settings', jsonEncode(settings.toJson())); } Future getSettings() async { - SharedPreferences prefs = await SharedPreferences.getInstance(); - String data = prefs.getString('settings'); - if (data == null) return null; + final prefs = await SharedPreferences.getInstance(); + final data = prefs.getString('settings'); + if (data == null || data.isEmpty) { + return Settings( + theme: SettingsTheme.dark, + view: EditorView.single, + audioFormat: AudioFormat.wav); + } return Settings.fromJson(jsonDecode(data)); } } diff --git a/lib/looper.dart b/lib/looper.dart index 1279405..e71dbc0 100644 --- a/lib/looper.dart +++ b/lib/looper.dart @@ -1,195 +1,90 @@ +import 'package:another_flushbar/flushbar.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_flux/flutter_flux.dart'; -import 'package:sound/editor_store.dart'; -import 'package:sound/model.dart'; -import 'package:sound/recorder_store.dart'; +import 'package:provider/provider.dart'; + +import 'editor_store.dart'; import 'range_slider.dart' as frs; +import 'recorder_store.dart'; class Looper extends StatefulWidget { final Color color; - final Function onMinimize; - final bool enableMinimize; - final bool showTitle; - final bool enableRepeat; - - Looper(this.color, this.onMinimize, - {this.enableMinimize = true, - this.showTitle = false, - Key key, - this.enableRepeat = false}) - : super(key: key); + const Looper(this.color, {super.key}); @override - _LooperState createState() => _LooperState(); + State createState() => _LooperState(); } -class _LooperState extends State with StoreWatcherMixin { - RangeValues range; +class _LooperState extends State { + RangeValues? range; - RecorderBottomSheetStore store; - ActionSubscription audioFileChange; + void _onSaveLoop(RecorderBottomSheetStore store) { + if (range == null) return; + Flushbar( + message: 'Saved ${range!.start} to ${range!.end}', + duration: const Duration(seconds: 2), + ).show(context); - @override - void initState() { - super.initState(); - store = listenToStore(recorderBottomSheetStoreToken); - range = store.loopRange; - - audioFileChange = startPlaybackAction.listen((AudioFile f) { - print("playback action is started!"); - setState(() { - range = f.loopRange; - }); - }); + final current = store.currentAudioFile; + if (current != null) { + current.loopRange = range; + changeAudioFile(current); + } } @override - void dispose() { - audioFileChange.cancel(); - super.dispose(); - } - - _changeRangeValues(RangeValues values) { - print("CHANGE....."); - //AudioFile newFile = store.currentAudioFile; - //newFile.loopRange = values; - //changeAudioFile(newFile); - - setLoopRange(values); - - if (values == null) { - setState(() { - range = null; - }); + Widget build(BuildContext context) { + final store = context.watch(); + if (store.state == RecorderState.stop && range != null) { + range = null; + } + if (!((store.state == RecorderState.playing || + store.state == RecorderState.pausing) && + store.currentLength != null)) { + return const SizedBox.shrink(); } - } - - _view() { - var defaultRange = - RangeValues(0.0, store.currentLength.inMilliseconds.toDouble() / 1000); - var lowerValue = range == null ? defaultRange.start : range.start; - var upperValue = range == null ? defaultRange.end : range.end; - var rangeMax = (store.currentLength.inMilliseconds / 1000.0).toDouble(); - print("upperValue: $upperValue"); - print("lowerValue: $lowerValue"); - print('max: $rangeMax'); - print("currentLength: ${store.currentLength}"); - var title = (store.currentAudioFile != null && widget.showTitle) - ? store.currentAudioFile.name - : null; + final defaultRange = RangeValues(0.0, store.currentLength!.inSeconds.toDouble()); + final lowerValue = range?.start ?? defaultRange.start; + final upperValue = range?.end ?? defaultRange.end; return Container( color: widget.color, - height: title != null ? 150 : 120, - child: Column(children: [ - Row( - mainAxisSize: MainAxisSize.max, - mainAxisAlignment: MainAxisAlignment.spaceBetween, + height: 100, + child: Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.end, children: [ - widget.enableMinimize - ? Padding( - padding: EdgeInsets.only(left: 8), - child: IconButton( - onPressed: widget.onMinimize, - icon: Icon(Icons.close), - )) - : Container(), Padding( - padding: EdgeInsets.only(right: 8), - child: Row( - children: [ - (widget.enableRepeat) - ? IconButton( - icon: Icon( - (store.repeat == Repeat.one) - ? Icons.repeat_one - : Icons.repeat, - color: (store.repeat == Repeat.all || - store.repeat == Repeat.one) - ? Theme.of(context).accentColor - : null, - ), - onPressed: () { - if (store.repeat == Repeat.all) - setRepeat(Repeat.one); - else if (store.repeat == Repeat.one) { - setRepeat(Repeat.off); - } else { - setRepeat(Repeat.all); - } - }, - ) - : Container(), - TextButton( - child: Text("Reset"), - onPressed: (range != null) - ? () => _changeRangeValues(null) - : null), - ], - )) - ]), - title != null - ? Padding( - padding: EdgeInsets.symmetric(horizontal: 16), - child: Text( - title, - softWrap: false, - overflow: TextOverflow.clip, - style: Theme.of(context).textTheme.headline6, - )) - : Container(), - title != null ? SizedBox(height: 29) : SizedBox(height: 19), - Container( - height: 50, - child: Column(children: [ - Text( - "Looper:", + padding: const EdgeInsets.only(right: 8), + child: TextButton( + child: const Text('Save Loop'), + onPressed: range == null ? null : () => _onSaveLoop(store), + ), ), - Expanded( - child: frs.RangeSlider( - min: 0, - onChangeEnd: (double endLowerValue, double endUpperValue) { - _changeRangeValues(RangeValues(endLowerValue, endUpperValue)); - }, - max: (rangeMax > upperValue) ? rangeMax : upperValue, - showValueIndicator: true, - lowerValue: lowerValue, - upperValue: upperValue, - onChanged: (double newLowerValue, double newUpperValue) { - setState(() { - print("change looper....."); - range = RangeValues(newLowerValue, newUpperValue); - }); - }, - )) - ])) - ]), + ], + ), + const Text('Looper:'), + const SizedBox(height: 20), + Expanded( + child: frs.RangeSlider( + min: 0, + onChangeEnd: (endLowerValue, endUpperValue) { + setLoopRange(RangeValues(endLowerValue, endUpperValue)); + }, + max: (store.currentLength!.inMilliseconds / 1000.0).toDouble(), + showValueIndicator: true, + lowerValue: lowerValue, + upperValue: upperValue, + onChanged: (newLowerValue, newUpperValue) { + setState(() { + range = RangeValues(newLowerValue, newUpperValue); + }); + }, + ), + ), + ], + ), ); } - - @override - Widget build(BuildContext context) { - if ((store.state == RecorderState.PLAYING || - store.state == RecorderState.PAUSING) && - store.currentLength != null) { - return _view(); - } else { - return Container(); - } - } } - -/** -frs.RangeSlider( - key: GlobalKey(), - onChanged: (RangeValues newRange) { - print("changed to $newRange"); - setState(() => range = newRange); - }, - min: 0, - divisions: 100, - max: store.currentLength.inSeconds.toDouble(), - values: range == null ? defaultRange : range, - ) - **/ diff --git a/lib/main.dart b/lib/main.dart index c9443ca..509ac09 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,64 +1,93 @@ -import 'dart:async'; -import 'package:flutter/foundation.dart'; -import 'package:flutter/services.dart'; -import 'package:flutter_flux/flutter_flux.dart'; import 'package:flutter/material.dart'; -import 'package:receive_sharing_intent/receive_sharing_intent.dart'; +import 'package:provider/provider.dart'; +import 'package:sound/editor_store.dart'; import 'package:sound/local_storage.dart'; import 'package:sound/menu.dart'; import 'package:sound/model.dart'; +import 'package:sound/recorder_store.dart'; +import 'package:sound/storage.dart'; import 'settings_store.dart'; -import 'package:sentry_flutter/sentry_flutter.dart'; -import 'package:sentry/sentry.dart'; -Future main() async { - if (kReleaseMode) { - print("Running release mode"); - await SentryFlutter.init( - (options) { - options.dsn = - 'https://1b2a119a53224f48966b710bc30123be@o1005300.ingest.sentry.io/5966036'; - }, - // Init your App. - appRunner: () => runApp(App()), - ); - } else { - print("Running debug mode"); - runApp(App()); - } +void main() { + runApp(App()); } // ffe57c73 Color mainColor = Colors.red.shade300; -Color appBarColor = Colors.grey[900]; -Color secondaryColor = Colors.grey[900]; +Color appBarColor = Colors.grey.shade900; class App extends StatefulWidget { + App({super.key}); + // This widget is the root of your application. + final ThemeData dark = ThemeData.dark().copyWith( + primaryColor: mainColor, + textSelectionTheme: ThemeData().textSelectionTheme.copyWith( + selectionColor: mainColor, + cursorColor: mainColor, + selectionHandleColor: mainColor), + highlightColor: Colors.black54, + cardColor: Colors.grey.shade800, + appBarTheme: ThemeData.dark() + .appBarTheme + .copyWith(backgroundColor: appBarColor, titleTextStyle: ThemeData.dark().textTheme.titleLarge), + buttonTheme: + ThemeData.dark().buttonTheme.copyWith(buttonColor: mainColor), + chipTheme: ThemeData.dark().chipTheme.copyWith(selectedColor: mainColor), + sliderTheme: ThemeData.dark().sliderTheme.copyWith( + trackHeight: 5, + showValueIndicator: ShowValueIndicator.onDrag, + activeTrackColor: mainColor, + valueIndicatorColor: mainColor, + activeTickMarkColor: mainColor, + thumbColor: mainColor, + valueIndicatorTextStyle: ThemeData.dark().textTheme.bodyMedium, + + //overlayColor: mainColor + inactiveTrackColor: Colors.white), + visualDensity: VisualDensity.adaptivePlatformDensity, + floatingActionButtonTheme: + FloatingActionButtonThemeData(backgroundColor: mainColor), tabBarTheme: TabBarThemeData(indicatorColor: mainColor)); + + final ThemeData light = ThemeData.light().copyWith( + primaryColor: mainColor, + textSelectionTheme: ThemeData().textSelectionTheme.copyWith( + selectionColor: mainColor, + cursorColor: mainColor, + selectionHandleColor: mainColor), + cardColor: Colors.grey.shade200, + appBarTheme: ThemeData.light().appBarTheme.copyWith( + backgroundColor: appBarColor, + titleTextStyle: ThemeData.light().textTheme.titleLarge), + chipTheme: ThemeData.light().chipTheme.copyWith(selectedColor: mainColor), + highlightColor: mainColor, + sliderTheme: ThemeData.light().sliderTheme.copyWith( + trackHeight: 4, + thumbColor: mainColor, + showValueIndicator: ShowValueIndicator.onDrag, + valueIndicatorTextStyle: ThemeData.light().textTheme.bodyMedium, + //overlayColor: mainColor, + valueIndicatorColor: mainColor, + activeTickMarkColor: mainColor, + activeTrackColor: mainColor, // inactive loop area + inactiveTrackColor: appBarColor), + visualDensity: VisualDensity.adaptivePlatformDensity, + floatingActionButtonTheme: + FloatingActionButtonThemeData(backgroundColor: mainColor), tabBarTheme: TabBarThemeData(indicatorColor: mainColor)); @override - State createState() { - return AppState(); - } + State createState() => AppState(); } -class AppState extends State with StoreWatcherMixin { - SettingsStore store; +class AppState extends State { @override void initState() { super.initState(); - - store = listenToStore(settingsToken); - // initialize app with loaded settings LocalStorage().getSettings().then((s) { - if (s != null) { - updateSettings(s); - } else { - updateSettings(Settings.defaults()); - } + updateSettings(s); }); // _intentDataStreamSubscription = ReceiveSharingIntent.getMediaStream() @@ -66,7 +95,7 @@ class AppState extends State with StoreWatcherMixin { // setState(() { // print("shared media: $value"); // _sharedFiles = value; - // print("Shared:" + (_sharedarkdFiles?.map((f) => f.path)?.join(",") ?? "")); + // print("Shared:" + (_sharedFiles?.map((f) => f.path)?.join(",") ?? "")); // }); // }, onError: (err) { // print("getIntentDataStream error: $err"); @@ -85,111 +114,26 @@ class AppState extends State with StoreWatcherMixin { @override Widget build(BuildContext context) { - final ThemeData dark = ThemeData.dark().copyWith( - indicatorColor: mainColor, - primaryColor: Colors.white, - accentColor: mainColor, - buttonColor: mainColor, - brightness: Brightness.dark, - colorScheme: ColorScheme.light().copyWith( - primary: mainColor, - secondary: Colors.white, - background: Colors.white, - surface: Colors.white), - textSelectionTheme: ThemeData.dark().textSelectionTheme.copyWith( - selectionColor: mainColor, - cursorColor: mainColor, - selectionHandleColor: mainColor), - highlightColor: Colors.black54, - cardColor: Colors.grey.shade800, - selectedRowColor: mainColor, - //iconTheme: ThemeData.dark().iconTheme.copyWith(color: Colors.white), - appBarTheme: ThemeData.dark().appBarTheme.copyWith( - brightness: Brightness.light, - color: appBarColor, - foregroundColor: Colors.white, - textTheme: ThemeData.dark().textTheme - //titleTextStyle: ThemeData.dark() - // .appBarTheme - // .titleTextStyle - // .copyWith(fontSize: 16)), - ), - buttonTheme: - ThemeData.dark().buttonTheme.copyWith(buttonColor: mainColor), - chipTheme: ThemeData.dark().chipTheme.copyWith( - selectedColor: mainColor, - secondaryLabelStyle: ThemeData.light() - .chipTheme - .labelStyle - .copyWith(color: Colors.white)), - sliderTheme: ThemeData.dark().sliderTheme.copyWith( - trackHeight: 5, - showValueIndicator: ShowValueIndicator.always, - activeTrackColor: mainColor, - valueIndicatorColor: mainColor, - activeTickMarkColor: mainColor, - thumbColor: mainColor, - valueIndicatorTextStyle: - ThemeData.dark().primaryTextTheme.bodyText1, - - //overlayColor: mainColor - inactiveTrackColor: Colors.white), - visualDensity: VisualDensity.adaptivePlatformDensity, - floatingActionButtonTheme: FloatingActionButtonThemeData( - foregroundColor: appBarColor, - backgroundColor: ThemeData.dark().appBarTheme.backgroundColor)); - - // foregroundColor: Theme.of(context).appBarTheme.backgroundColor, - // backgroundColor: Theme.of(context).appBarTheme.textTheme.button.color, - final ThemeData light = ThemeData.light().copyWith( - primaryColor: Colors.white, - textSelectionTheme: ThemeData().textSelectionTheme.copyWith( - selectionColor: mainColor, - cursorColor: mainColor, - selectionHandleColor: mainColor), - cardColor: Colors.grey.shade200, - brightness: Brightness.light, - colorScheme: ColorScheme.light().copyWith( - primary: mainColor, - secondary: Colors.black54, - background: Colors.black54, - surface: Colors.black54), - appBarTheme: ThemeData.light().appBarTheme.copyWith( - brightness: Brightness.dark, - color: appBarColor, - textTheme: ThemeData.light().accentTextTheme), - chipTheme: ThemeData.light().chipTheme.copyWith( - selectedColor: mainColor, - secondaryLabelStyle: ThemeData.light() - .chipTheme - .labelStyle - .copyWith(color: Colors.white)), - indicatorColor: mainColor, - accentColor: mainColor, - highlightColor: mainColor, - buttonTheme: - ThemeData.dark().buttonTheme.copyWith(buttonColor: mainColor), - sliderTheme: ThemeData.light().sliderTheme.copyWith( - trackHeight: 4, - thumbColor: mainColor, - showValueIndicator: ShowValueIndicator.always, - valueIndicatorTextStyle: - ThemeData.light().primaryTextTheme.bodyText1, - //overlayColor: mainColor, - valueIndicatorColor: mainColor, - activeTickMarkColor: mainColor, - activeTrackColor: mainColor, // inactive loop area - inactiveTrackColor: appBarColor), - visualDensity: VisualDensity.adaptivePlatformDensity, - floatingActionButtonTheme: FloatingActionButtonThemeData( - foregroundColor: Colors.white, - backgroundColor: appBarColor, - )); - - return MaterialApp( - debugShowCheckedModeBanner: false, - title: 'SketChord', - theme: store.theme == SettingsTheme.dark ? dark : light, - home: Menu()); + return MultiProvider( + providers: [ + ChangeNotifierProvider.value(value: settingsStore), + ChangeNotifierProvider.value(value: storageStore), + ChangeNotifierProvider.value(value: noteEditorStore), + ChangeNotifierProvider.value( + value: recorderBottomSheetStore), + ChangeNotifierProvider.value( + value: playerPositionStore), + ChangeNotifierProvider.value( + value: recorderPositionStore), + ], + child: Consumer( + builder: (context, store, _) => MaterialApp( + title: 'SketChord', + theme: + store.theme == SettingsTheme.dark ? widget.dark : widget.light, + home: Menu(), + ), + ), + ); } } diff --git a/lib/menu.dart b/lib/menu.dart index 879b0f3..d31af03 100644 --- a/lib/menu.dart +++ b/lib/menu.dart @@ -1,15 +1,13 @@ import 'package:flutter/material.dart'; -import 'package:flutter_flux/flutter_flux.dart'; -import 'package:sound/audio_list.dart'; +import 'package:sound/audio_ideas.dart'; +import 'package:sound/collections_page.dart'; import 'package:sound/home.dart'; import 'package:sound/intent_receive.dart'; -import 'package:sound/collections.dart'; -import 'package:sound/menu_store.dart'; import 'package:sound/settings.dart'; import 'package:sound/trash.dart'; class Menu extends StatefulWidget { - Menu(); + const Menu({super.key}); @override State createState() { @@ -17,21 +15,38 @@ class Menu extends StatefulWidget { } } -class _MenuState extends State - with SingleTickerProviderStateMixin, StoreWatcherMixin { +enum MenuItem { HOME, AUDIO, SETS, SETTINGS, TRASH } + +class MenuOption { + MenuItem item; + String name; + IconData icon; + MenuOption({required this.item, required this.name, required this.icon}); +} + +class _MenuState extends State with SingleTickerProviderStateMixin { + bool isCollapsed = true; final animateMenuDuration = const Duration(milliseconds: 300); - AnimationController _controller; - Animation _slideAnimation; // slide menu from left to right - Animation _scaleAnimation, + late AnimationController _controller; + late Animation _slideAnimation; // slide menu from left to right + late Animation _scaleAnimation, _menuScaleAnimation; // scale home content from 1.0 to 0.8 - MenuStore store; + MenuItem current = MenuItem.HOME; + + var options = [ + MenuOption(icon: Icons.dashboard, name: "Home", item: MenuItem.HOME), + MenuOption(icon: Icons.music_note, name: "Ideas", item: MenuItem.AUDIO), + MenuOption( + icon: Icons.list_alt_outlined, name: "Sets", item: MenuItem.SETS), + MenuOption(icon: Icons.delete_sweep, name: "Trash", item: MenuItem.TRASH), + MenuOption(icon: Icons.settings, name: "Settings", item: MenuItem.SETTINGS), + ]; @override void initState() { super.initState(); - store = listenToStore(menuStoreToken); _controller = AnimationController(vsync: this, duration: animateMenuDuration); _scaleAnimation = Tween(begin: 1.0, end: 0.8).animate(_controller); @@ -51,7 +66,9 @@ class _MenuState extends State _switch(MenuItem item) { _onMenuPressed(); - setMenuItem(item); + setState(() { + current = item; + }); //Navigator.push( // context, new MaterialPageRoute(builder: (context) => Settings())); } @@ -76,15 +93,8 @@ class _MenuState extends State children: options .map((e) => TextButton.icon( label: Text(e.name, - style: Theme.of(context) - .textTheme - .button - .copyWith(fontSize: 20)), - icon: Icon(e.icon, - color: Theme.of(context) - .textTheme - .button - .color), + style: TextStyle(fontSize: 20)), + icon: Icon(e.icon), onPressed: () => _switch(e.item), )) .toList()), @@ -92,19 +102,17 @@ class _MenuState extends State } _getView() { - switch (store.item) { + switch (current) { case MenuItem.HOME: return Home(this._onMenuPressed); + case MenuItem.AUDIO: + return AudioIdeasPage(onMenuPressed: this._onMenuPressed); + case MenuItem.SETS: + return CollectionsPage(onMenuPressed: this._onMenuPressed); case MenuItem.SETTINGS: return Settings(this._onMenuPressed); case MenuItem.TRASH: return Trash(this._onMenuPressed); - case MenuItem.SETS: - return Collections(this._onMenuPressed); - case MenuItem.AUDIO: - return AudioList(onMenuPressed: this._onMenuPressed); - default: - return Container(); } } @@ -116,35 +124,36 @@ class _MenuState extends State duration: animateMenuDuration, top: 0, bottom: 0, - left: store.collapsed ? 0 : 0.6 * screenWidth, - right: store.collapsed ? 0 : -0.4 * screenWidth, + left: isCollapsed ? 0 : 0.6 * screenWidth, + right: isCollapsed ? 0 : -0.4 * screenWidth, child: ScaleTransition( scale: _scaleAnimation, child: MediaQuery.removePadding( context: context, - removeTop: store.collapsed ? false : true, + removeTop: isCollapsed ? false : true, child: Material( animationDuration: animateMenuDuration, - child: !store.collapsed - ? GestureDetector( - onTap: _onMenuPressed, - child: AbsorbPointer(child: _getView())) + child: !isCollapsed + ? AbsorbPointer(child: _getView()) : _getView(), - borderRadius: BorderRadius.all( - Radius.circular(store.collapsed ? 0 : 10)), - color: Theme.of(context).appBarTheme.color, + borderRadius: + BorderRadius.all(Radius.circular(isCollapsed ? 0 : 10)), + color: Theme.of(context).appBarTheme.backgroundColor ?? + Theme.of(context).colorScheme.surface, clipBehavior: Clip.antiAlias, elevation: 5, )))); } _onMenuPressed() { - if (store.collapsed) { - _controller.forward(); - } else { - _controller.reverse(); - } - toggleMenu(); + setState(() { + if (isCollapsed) { + _controller.forward(); + } else { + _controller.reverse(); + } + isCollapsed = !isCollapsed; + }); } _menuWithScaffold(BuildContext context) { diff --git a/lib/model.dart b/lib/model.dart index 1fe6fd7..eb28567 100644 --- a/lib/model.dart +++ b/lib/model.dart @@ -1,577 +1,434 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_audio_recorder/flutter_audio_recorder.dart'; -import 'package:sound/utils.dart'; -import 'package:uuid/uuid.dart'; import 'dart:io'; -const EMPTY_TEXT = "Empty"; +import 'package:flutter/material.dart'; +import 'package:uuid/uuid.dart'; -RangeValues deserializeRangeValues(String c) { - if (c == null) return null; +const EMPTY_TEXT = 'Empty'; +RangeValues? deserializeRangeValues(String? c) { + if (c == null || c.isEmpty) return null; try { - var range = c.split(",").map((b) => double.parse(b)).toList(); + final range = c.split(',').map((b) => double.parse(b)).toList(); return RangeValues(range[0], range[1]); - } catch (e) { + } catch (_) { return null; } } -String serializeRangeValues(RangeValues v) { +String? serializeRangeValues(RangeValues? v) { if (v == null) return null; - return "${v.start},${v.end}"; + return '${v.start},${v.end}'; } class AudioFile { - String path, id, name, text; - DateTime createdAt, lastModified; + String path; + String id; + String name; + DateTime createdAt; + DateTime lastModified; + RangeValues? loopRange; + Duration duration; + String text; bool starred; - RangeValues loopRange; - File get file => File(path); - String get loopString => loopRange == null + String? get loopString => loopRange == null ? null - : "${(loopRange.end - loopRange.start).toStringAsFixed(1)}"; - - Duration duration; // duration is milliseconds - AudioFile( - {@required this.path, - @required this.duration, - this.id, - this.createdAt, - this.lastModified, - this.name, - this.loopRange, - this.text, - this.starred}) { - //print("creating audio file with ${this.name} ${this.id}"); - if (id == null) id = Uuid().v4().toString(); - if (createdAt == null) createdAt = DateTime.now(); - if (lastModified == null) lastModified = DateTime.now(); - if (starred == null) starred = false; - if (name == null) { - name = path - .split('/') - .last - .replaceAll(".mp4", "") - .replaceAll(".m4a", "") - .replaceAll(".mp3", "") - .replaceAll('.wav', ''); - } - } - - factory AudioFile.create( - {String path, - Duration duration, - String id, - String name, - String text, - bool starred}) { + : (loopRange!.end - loopRange!.start).toStringAsFixed(1); + + AudioFile({ + required this.path, + required this.duration, + String? id, + DateTime? createdAt, + DateTime? lastModified, + String? name, + String? text, + bool? starred, + this.loopRange, + }) : id = id ?? const Uuid().v4(), + createdAt = createdAt ?? DateTime.now(), + lastModified = lastModified ?? DateTime.now(), + text = text ?? '', + starred = starred ?? false, + name = name ?? + path + .split('/') + .last + .replaceAll('.mp4', '') + .replaceAll('.m4a', '') + .replaceAll('.mp3', '') + .replaceAll('.wav', ''); + + factory AudioFile.create({ + required String path, + required Duration duration, + String? id, + String? name, + String? text, + bool? starred, + }) { return AudioFile( - createdAt: DateTime.now(), - lastModified: DateTime.now(), - path: path, - duration: duration, - id: id, - name: name, - starred: starred, - text: text); + path: path, + duration: duration, + id: id, + name: name, + text: text, + starred: starred, + createdAt: DateTime.now(), + lastModified: DateTime.now(), + ); } factory AudioFile.fromJson(Map map) { return AudioFile( - createdAt: deserializeDateTime(map["createdAt"]), - lastModified: deserializeDateTime(map["lastModified"]), - duration: deserializeDuration(map["duration"]), - loopRange: deserializeRangeValues(map['loopRange']), - text: (map.containsKey("text") ? map['text'] : ""), - starred: (map.containsKey('starred') ? map['starred'] == 1 : false), - id: map["id"], - name: map['name'], - path: map["path"]); + createdAt: deserializeDateTime(map['createdAt']), + lastModified: deserializeDateTime(map['lastModified'] ?? map['createdAt']), + duration: deserializeDuration(map['duration']), + loopRange: deserializeRangeValues(map['loopRange']), + id: map['id'], + name: map['name'], + path: map['path'], + text: map['text'] ?? '', + starred: (map['starred'] ?? 0) == 1 || map['starred'] == true, + ); } Map toJson() { return { - "createdAt": serializeDateTime(createdAt), - "lastModified": serializeDateTime(lastModified), - "loopRange": serializeRangeValues(loopRange), - "id": id, - "path": path, - "name": name, - "text": text, - "starred": (starred) ? 1 : 0, - "duration": serializeDuration(duration) + 'createdAt': serializeDateTime(createdAt), + 'lastModified': serializeDateTime(lastModified), + 'loopRange': serializeRangeValues(loopRange), + 'id': id, + 'path': path, + 'name': name, + 'text': text, + 'starred': starred ? 1 : 0, + 'duration': serializeDuration(duration), }; } @override int get hashCode => id.hashCode; - - bool operator ==(o) => o is AudioFile && id == o.id; + @override + bool operator ==(Object o) => o is AudioFile && id == o.id; String get durationString => - (duration.inMilliseconds / 1000).toStringAsFixed(1) + " s"; + '${(duration.inMilliseconds / 1000).toStringAsFixed(1)} s'; } class Section { - String title, content; + String title; + String content; String id; - DateTime lastModified, createdAt; - - Section( - {this.title, this.content, this.id, this.createdAt, this.lastModified}) { - if (id == null) id = Uuid().v4().toString(); - if (lastModified == null) lastModified = DateTime.now(); - if (createdAt == null) createdAt = DateTime.now(); - } + DateTime lastModified; + DateTime createdAt; + + Section({ + String? title, + String? content, + String? id, + }) : title = title ?? '', + content = content ?? '', + id = id ?? const Uuid().v4(), + lastModified = DateTime.now(), + createdAt = DateTime.now(); factory Section.fromJson(Map map) { return Section( content: map['content'], title: map['title'], id: map['id'], - createdAt: map.containsKey("createdAt") - ? deserializeDateTime(map['createdAt']) - : DateTime.now(), - lastModified: map.containsKey("lastModified") - ? deserializeDateTime(map['lastModified']) - : DateTime.now(), ); } - Map toJson() { - return { - "title": title, - "content": content, - "id": id, - "lastModified": serializeDateTime(lastModified), - "createdAt": serializeDateTime(createdAt) - }; - } + Map toJson() => {'title': title, 'content': content, 'id': id}; - bool get hasEmptyTitle => title == null || title.trim() == ""; + bool get hasEmptyTitle => title.trim().isEmpty; @override int get hashCode => id.hashCode; - - bool operator ==(o) => o is Section && id == o.id; + @override + bool operator ==(Object o) => o is Section && id == o.id; } -Duration deserializeDuration(String s) { - return Duration(microseconds: int.parse(s)); -} +Duration deserializeDuration(String s) => Duration(microseconds: int.parse(s)); +String serializeDuration(Duration d) => d.inMicroseconds.toString(); -String serializeDuration(Duration d) { - return d.inMicroseconds.toString(); -} - -DateTime deserializeDateTime(String s) { - if (s == null) return null; - List params = s.split("-"); - List t = params.map((i) => int.parse(i)).toList(); +DateTime deserializeDateTime(String? s) { + if (s == null || s.isEmpty) return DateTime.now(); + final params = s.split('-'); + final t = params.map((i) => int.parse(i)).toList(); return DateTime(t[0], t[1], t[2], t[3], t[4], t[5], t[6], t[7]); } -String serializeDateTime(DateTime t) { - return "${t.year}-${t.month}-${t.day}-${t.hour}-${t.minute}-${t.second}-${t.microsecond}-${t.millisecond}"; +String serializeDateTime(DateTime t) => + '${t.year}-${t.month}-${t.day}-${t.hour}-${t.minute}-${t.second}-${t.microsecond}-${t.millisecond}'; + +List? serializeColor(Color? color) { + if (color == null) return null; + return [ + (color.a * 255.0).round() & 0xff, + (color.r * 255.0).round() & 0xff, + (color.g * 255.0).round() & 0xff, + (color.b * 255.0).round() & 0xff, + ]; } -String serializeColor(Color color) { - return "${color.alpha};${color.red};${color.green};${color.blue}"; -} - -Color deserializeColor(dynamic data) { - if (data == null || data is List) return null; - try { - List args = - (data as String).split(";").map((e) => int.parse(e)).toList(); - return Color.fromARGB(args[0], args[1], args[2], args[3]); - } catch (e) { - print("error: could not parse color $data"); - } - return null; +Color? deserializeColor(List? data) { + if (data == null) return null; + return Color.fromARGB(data[0], data[1], data[2], data[3]); } class Note { - static int defaultBPM = 80; - static int defaultLength = 3 * 60; - List
sections; String id; List audioFiles; String title; - String key; - String tuning; - String label; - String instrument; + String? key; + String? tuning; + String? label; + String? instrument; bool starred; - String capo; - String artist; - DateTime createdAt, lastModified; + String? capo; + String? artist; + DateTime createdAt; + DateTime lastModified; bool discarded; - Color color; - - int bpm; // beats per minute - int length; // length in seconds - + Color? color; + int? bpm; + int? length; double scrollOffset; - double zoom; // text scaling factor - - String get lengthStr { - if (this.length == null) - return ""; - else - return toTime(length); - } - - bool get hasEmptyTitle { - return this.title == null || this.title.trim() == ""; - } + double zoom; factory Note.empty() { return Note( - title: "", - createdAt: DateTime.now(), - lastModified: DateTime.now(), - key: null, - tuning: null, - id: Uuid().v4(), - capo: null, - instrument: "Guitar", - label: "", - artist: null, - starred: false, - sections: [Section(content: "", title: "")], - color: null, - length: null, // seconds - bpm: null, - zoom: 1.0, - scrollOffset: 1.0, - audioFiles: []); + title: '', + createdAt: DateTime.now(), + lastModified: DateTime.now(), + id: const Uuid().v4(), + instrument: 'Guitar', + label: '', + starred: false, + sections: [Section(content: '', title: '')], + zoom: 1.0, + scrollOffset: 1.0, + audioFiles: [], + ); } + Note({ + String? id, + String? title, + DateTime? createdAt, + DateTime? lastModified, + this.key, + this.tuning, + this.capo, + this.instrument, + this.label, + List
? sections, + List? audioFiles, + this.artist, + this.color, + this.bpm, + this.length, + this.zoom = 1.0, + this.scrollOffset = 1.0, + this.starred = false, + this.discarded = false, + }) : id = id ?? const Uuid().v4(), + title = title ?? '', + createdAt = createdAt ?? DateTime.now(), + lastModified = lastModified ?? DateTime.now(), + sections = sections ?? [], + audioFiles = audioFiles ?? []; + Map toJson() { return { - "id": id, - "title": title, - "createdAt": serializeDateTime(createdAt), - "lastModified": serializeDateTime(lastModified), - "key": key, - "tuning": tuning, - "capo": capo, - "instrument": instrument, - "label": label, - "artist": artist, - "starred": (starred) ? 1 : 0, - "scrollOffset": scrollOffset, - "zoom": zoom, - "bpm": bpm, - "length": length, - "color": color == null ? null : serializeColor(color), - "sections": - sections.map>((s) => s.toJson()).toList(), - "audioFiles": - audioFiles.map>((a) => a.toJson()).toList(), - "discarded": discarded ? 1 : 0, + 'id': id, + 'title': title, + 'createdAt': serializeDateTime(createdAt), + 'lastModified': serializeDateTime(lastModified), + 'key': key, + 'tuning': tuning, + 'capo': capo, + 'instrument': instrument, + 'label': label, + 'artist': artist, + 'starred': starred ? 1 : 0, + 'scrollOffset': scrollOffset, + 'zoom': zoom, + 'bpm': bpm, + 'length': length, + 'color': serializeColor(color), + 'sections': sections.map((s) => s.toJson()).toList(), + 'audioFiles': audioFiles.map((a) => a.toJson()).toList(), + 'discarded': discarded ? 1 : 0, }; } factory Note.fromJson(Map json, String id) { + final sectionsRaw = json['sections'] as List?; + final audioRaw = json['audioFiles'] as List?; return Note( - // general info - id: id, - title: json['title'], - createdAt: json.containsKey('createdAt') - ? deserializeDateTime(json['createdAt']) - : DateTime.now(), - lastModified: json.containsKey("lastModified") - ? deserializeDateTime(json['lastModified']) - : DateTime.now(), - length: (!json.containsKey('length') || json['length'] == null) - ? null - : json['length'].toInt(), - // additional info - key: json.containsKey("key") ? json['key'] : null, - tuning: json.containsKey("tuning") ? json['tuning'] : null, - capo: json.containsKey("capo") ? json['capo'] : null, - instrument: json.containsKey("instrument") ? json['instrument'] : null, - label: json.containsKey("label") ? json['label'] : null, - bpm: (!json.containsKey("bpm") || json['bpm'] == null) - ? null - : json['bpm'].toInt(), - starred: json.containsKey("starred") ? json['starred'] == 1 : false, - color: - json.containsKey("color") ? deserializeColor(json['color']) : null, - discarded: - json.containsKey("discarded") ? json['discarded'] == 1 : false, - artist: json.containsKey("artist") ? json['artist'] : null, - - // viewer info - zoom: json.containsKey("zoom") ? json['zoom'] : 1.0, - scrollOffset: - json.containsKey("scrollOffset") ? json['scrollOffset'] : 1.0, - - // sections/audiofiles - sections: json.containsKey("sections") - ? json['sections'].map
((s) => Section.fromJson(s)).toList() - : [], - audioFiles: json.containsKey("audioFiles") - ? json['audioFiles'] - .map((s) => AudioFile.fromJson(s)) - .toList() - : []); - } - String getInfoText() { - List info = []; - if (capo != null) { - info.add("Capo: $capo"); - } - if (key != null) { - info.add("Key: $key"); - } - if (tuning != null) { - info.add("Tuning: $tuning"); - } - if (info.length == 0) return null; - return info.join(" | "); + id: id, + title: json['title'], + createdAt: deserializeDateTime(json['createdAt']), + lastModified: deserializeDateTime(json['lastModified']), + key: json['key'], + tuning: json['tuning'], + capo: json['capo'], + instrument: json['instrument'], + label: json['label'], + bpm: json['bpm'], + length: json['length'] == null ? null : (json['length'] as num).toInt(), + starred: (json['starred'] ?? 0) == 1 || json['starred'] == true, + color: deserializeColor((json['color'] as List?)?.cast()), + discarded: (json['discarded'] ?? 0) == 1 || json['discarded'] == true, + artist: json['artist'], + zoom: (json['zoom'] ?? 1.0).toDouble(), + scrollOffset: (json['scrollOffset'] ?? 1.0).toDouble(), + sections: sectionsRaw == null + ? [] + : sectionsRaw.map((s) => Section.fromJson(s)).toList(), + audioFiles: + audioRaw == null ? [] : audioRaw.map((s) => AudioFile.fromJson(s)).toList(), + ); } - Note( - {this.id, - this.title, - this.createdAt, - this.lastModified, - this.key, - this.tuning, - this.capo, - this.instrument, - this.label, - this.sections, - this.audioFiles, - this.artist, - this.color, - this.bpm, - this.length, - this.zoom = 1.0, - this.scrollOffset = 1.0, - this.starred = false, - this.discarded = false}) { - if (this.id == null) { - this.id = Uuid().v4(); + bool get hasEmptyTitle => title.trim().isEmpty; + + String get lengthStr { + if (length == null) return ''; + final totalSeconds = length!; + final hours = totalSeconds ~/ 3600; + final minutes = (totalSeconds % 3600) ~/ 60; + final seconds = totalSeconds % 60; + if (hours > 0) { + return '$hours:${minutes.toString().padLeft(2, '0')}:${seconds.toString().padLeft(2, '0')}'; } + return '$minutes:${seconds.toString().padLeft(2, '0')}'; } -} - -enum SettingsTheme { dark, light } -enum EditorView { onePage, tabs } -enum NoteListType { single, double } -enum SortBy { created, lastModified, az } -enum SortDirection { up, down } -String serializeTheme(SettingsTheme theme) { - return theme == SettingsTheme.dark ? "dark" : "light"; -} - -String serializeEditorView(EditorView view) { - return view == EditorView.onePage ? "onePage" : "tabs"; -} - -String serializeNoteListType(NoteListType view) { - return view == NoteListType.single ? "single" : "double"; -} - -String serializeAudioFormat(AudioFormat audioFormat) { - return audioFormat == AudioFormat.AAC ? "aac" : "wav"; -} - -String serializeSortDirection(SortDirection direction) { - return direction == SortDirection.up ? "up" : "down"; -} - -String serializeSortBy(SortBy by) { - switch (by) { - case SortBy.created: - return "created"; - case SortBy.lastModified: - return "lastModified"; - case SortBy.az: - return "az"; - default: - return "lastModified"; + String? getInfoText() { + final info = []; + if (capo != null && capo!.isNotEmpty) info.add('Capo: $capo'); + if (key != null && key!.isNotEmpty) info.add('Key: $key'); + if (tuning != null && tuning!.isNotEmpty) info.add('Tuning: $tuning'); + if (info.isEmpty) return null; + return info.join(' | '); } } -SortBy deserializeSortBy(String by) { - switch (by) { - case "created": - return SortBy.created; - case "lastModified": - return SortBy.lastModified; - case "az": - return SortBy.az; - default: - return SortBy.lastModified; - } -} +class NoteCollection { + String id; + List notes; + String title; + String description; + bool starred; + DateTime createdAt; + DateTime lastModified; + + NoteCollection({ + String? id, + List? notes, + String? title, + String? description, + bool? starred, + DateTime? createdAt, + DateTime? lastModified, + }) : id = id ?? const Uuid().v4(), + notes = notes ?? [], + title = title ?? '', + description = description ?? '', + starred = starred ?? false, + createdAt = createdAt ?? DateTime.now(), + lastModified = lastModified ?? DateTime.now(); + + factory NoteCollection.empty() => NoteCollection(); -class Settings { - SettingsTheme theme; - NoteListType noteListType; // single, double - AudioFormat audioFormat; // aac, wav - String name; - EditorView editorView; - bool isInitialStart; - SortBy sortBy; - SortDirection sortDirection; - double sectionContentFontSize; - - Settings( - {this.theme, - this.noteListType, - this.audioFormat, - this.name, - this.isInitialStart, - this.sortBy, - this.sortDirection, - this.editorView, - this.sectionContentFontSize}); + factory NoteCollection.fromJson(Map json) { + final rawNotes = json['notes'] as List?; + return NoteCollection( + id: json['id'], + notes: rawNotes == null + ? [] + : rawNotes + .map((n) => Note.fromJson( + Map.from(n), (n['id'] ?? '') as String)) + .toList(), + title: json['title'] ?? '', + description: json['description'] ?? '', + starred: (json['starred'] ?? 0) == 1 || json['starred'] == true, + createdAt: deserializeDateTime(json['createdAt']), + lastModified: deserializeDateTime(json['lastModified']), + ); + } Map toJson() { return { - "theme": serializeTheme(theme), - "editorView": serializeEditorView(editorView), - "audioFormat": serializeAudioFormat(audioFormat), - "sortBy": serializeSortBy(sortBy), - "sortDirection": serializeSortDirection(sortDirection), - "name": name, - "isInitialStart": isInitialStart, - "noteListType": serializeNoteListType(noteListType), - "sectionContentFontSize": sectionContentFontSize + 'id': id, + 'notes': notes.map((e) => e.toJson()).toList(), + 'title': title, + 'description': description, + 'starred': starred ? 1 : 0, + 'createdAt': serializeDateTime(createdAt), + 'lastModified': serializeDateTime(lastModified), }; } - factory Settings.defaults() { - return Settings( - audioFormat: AudioFormat.WAV, - theme: SettingsTheme.dark, - isInitialStart: false, - sortBy: SortBy.created, - sortDirection: SortDirection.down, - name: null, - sectionContentFontSize: 10, - noteListType: NoteListType.double, - editorView: EditorView.tabs); - } + List get activeNotes => notes.where((element) => !element.discarded).toList(); - factory Settings.fromJson(Map json) { - return Settings( - theme: - json['theme'] == 'dark' ? SettingsTheme.dark : SettingsTheme.light, - editorView: json['editorView'] == "onePage" - ? EditorView.onePage - : EditorView.tabs, - noteListType: json['noteListType'] == "double" - ? NoteListType.double - : NoteListType.single, - name: json.containsKey("name") ? json['name'] : null, - isInitialStart: - json.containsKey("isInitialStart") ? json['isInitialStart'] : false, - audioFormat: - json["audioFormat"] == "aac" ? AudioFormat.AAC : AudioFormat.WAV, - sortDirection: json.containsKey("sortDirection") - ? json['sortDirection'] == "up" - ? SortDirection.up - : SortDirection.down - : SortDirection.up, - sectionContentFontSize: json.containsKey("sectionContentFontSize") && - json['sectionContentFontSize'] != null - ? json['sectionContentFontSize'] - : 10, - sortBy: json.containsKey('sortBy') - ? deserializeSortBy(json['sortBy']) - : SortBy.lastModified); - } -} - -class NoteCollection { - String id; - List notes; - String title, description; - bool starred; - - DateTime lastModified, createdAt; + int get length => notes.fold(0, (p, e) => p + (e.length ?? 0)); String get lengthStr { - int length = this.length; - if (length == 0) - return ""; - else - return toTime(length, includeHour: true); + if (length == 0) return ''; + final hours = length ~/ 3600; + final minutes = (length % 3600) ~/ 60; + final seconds = length % 60; + return '$hours:${minutes.toString().padLeft(2, '0')}:${seconds.toString().padLeft(2, '0')}'; } - int get length { - if (this.notes.length == 0) return 0; - return this - .notes - .map((e) => e.length == null ? 0 : e.length) - .reduce((value, element) => value + element); - } + bool get empty => title.trim().isEmpty && description.trim().isEmpty && notes.isEmpty; +} - NoteCollection( - {this.id, - this.notes, - this.title, - this.starred, - this.description, - this.createdAt, - this.lastModified}); +enum SettingsTheme { dark, light } +enum EditorView { single, double } +enum AudioFormat { aac, wav } - List get activeNotes => - notes.where((element) => !element.discarded).toList(); +class Settings { + SettingsTheme theme; + EditorView view; + AudioFormat audioFormat; + String? name; + bool isInitialStart; + + Settings({ + required this.theme, + required this.view, + required this.audioFormat, + this.name, + this.isInitialStart = false, + }); - factory NoteCollection.empty() { - return NoteCollection( - id: Uuid().v4(), - notes: [], - title: "", - description: "", - starred: false, - createdAt: DateTime.now(), - lastModified: DateTime.now()); - } Map toJson() { return { - "id": id, - "notes": notes.map((e) => e.toJson()).toList(), - "title": title, - "description": description, - "starred": starred ? 1 : 0, - "createdAt": createdAt == null ? null : serializeDateTime(createdAt), - "lastModified": - lastModified == null ? null : serializeDateTime(lastModified), + 'theme': theme == SettingsTheme.dark ? 'dark' : 'light', + 'view': view == EditorView.single ? 'single' : 'double', + 'audioFormat': audioFormat == AudioFormat.aac ? 'aac' : 'wav', + 'name': name, + 'isInitialStart': isInitialStart, }; } - bool get empty => - title.trim() == "" && description.trim() == "" && notes.length == 0; - - factory NoteCollection.fromJson(Map json) { - return NoteCollection( - id: json.containsKey("id") ? json['id'] : Uuid().v4(), - notes: json.containsKey("notes") - ? json['notes'].map((n) => Note.fromJson(n, n['id'])).toList() - : [], - title: json.containsKey("title") ? json['title'] : "", - description: json.containsKey("description") ? json['description'] : "", - starred: json.containsKey("starred") ? json['starred'] == 1 : false, - lastModified: json.containsKey("lastModified") - ? deserializeDateTime(json['lastModified']) - : DateTime.now(), - createdAt: json.containsKey("createdAt") - ? deserializeDateTime(json['createdAt']) - : DateTime.now(), + factory Settings.fromJson(Map json) { + return Settings( + theme: json['theme'] == 'dark' ? SettingsTheme.dark : SettingsTheme.light, + view: json['view'] == 'single' ? EditorView.single : EditorView.double, + name: json['name'], + isInitialStart: json['isInitialStart'] ?? false, + audioFormat: json['audioFormat'] == 'aac' ? AudioFormat.aac : AudioFormat.wav, ); } } diff --git a/lib/note_editor.dart b/lib/note_editor.dart index f1ee58a..33ea239 100644 --- a/lib/note_editor.dart +++ b/lib/note_editor.dart @@ -1,655 +1,280 @@ -import 'package:audioplayers/audioplayers.dart'; -import 'package:clipboard_manager/clipboard_manager.dart'; +import 'dart:async'; + +import 'package:another_flushbar/flushbar.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_flux/flutter_flux.dart' show StoreWatcherMixin; -import 'package:flutter_share/flutter_share.dart'; -import 'package:sound/dialogs/add_to_collection_dialog.dart'; -import 'package:sound/dialogs/color_picker_dialog.dart'; -import 'package:sound/dialogs/confirmation_dialogs.dart'; -import 'package:sound/dialogs/import_dialog.dart'; -import 'package:sound/dialogs/permissions_dialog.dart'; -import 'package:sound/editor_views/additional_info.dart'; -import 'package:sound/editor_views/audio.dart'; -import 'package:sound/editor_views/section.dart'; -import 'package:sound/dialogs/export_dialog.dart'; -import 'package:sound/export.dart'; -import 'package:sound/file_manager.dart'; -import 'package:sound/local_storage.dart'; -import 'package:sound/note_viewer.dart'; -import 'package:sound/note_views/appbar.dart'; -import 'package:sound/share.dart'; -import 'editor_store.dart'; -import 'model.dart'; +import 'package:flutter/services.dart'; +import 'package:provider/provider.dart'; import 'package:tuple/tuple.dart'; -//import 'recorder.dart'; -//import 'file_manager.dart'; -// import 'recorder_bottom_sheet_store2.dart'; -//import 'package:progress_indicators/progress_indicators.dart'; -import "recorder_bottom_sheet.dart"; -import "recorder_store.dart"; +import 'dialogs/color_picker_dialog.dart'; +import 'dialogs/export_dialog.dart'; +import 'dialogs/import_dialog.dart'; +import 'editor_store.dart'; +import 'editor_views/additional_info.dart'; +import 'editor_views/audio.dart'; +import 'editor_views/section.dart'; +import 'export.dart'; +import 'file_manager.dart'; +import 'local_storage.dart'; +import 'model.dart'; +import 'note_viewer.dart'; +import 'recorder_bottom_sheet.dart'; +import 'recorder_store.dart'; +import 'share.dart'; import 'utils.dart'; -class NoteEditor extends StatelessWidget { - final Note note; - final EditorView view; - - NoteEditor(this.note, {this.view}); - - Future getCurrentSettings() async { - Settings settings = await LocalStorage().getSettings(); - if (settings == null) - return Settings.defaults(); - else - return settings; - } - - @override - Widget build(BuildContext context) { - return FutureBuilder( - builder: (BuildContext context, AsyncSnapshot snap) { - print("snap data: ${snap}, ${snap.hasData}"); - if (snap.hasData) { - EditorView v = (view != null) ? view : snap.data.editorView; - return NoteEditorContent(note, v, snap.data.sectionContentFontSize); - } else { - return CircularProgressIndicator(); - } - }, - future: getCurrentSettings()); - } -} - -class NoteEditorContent extends StatefulWidget { +class NoteEditor extends StatefulWidget { final Note note; - final EditorView view; - final double sectionContentFontSize; - - NoteEditorContent(this.note, this.view, this.sectionContentFontSize); + const NoteEditor(this.note, {super.key}); @override - State createState() { - return NoteEditorState(); - } + State createState() => NoteEditorState(); } -enum TabType { structure, info, audio } - -class NoteEditorState extends State - with - StoreWatcherMixin, - WidgetsBindingObserver, - TickerProviderStateMixin { - RecorderBottomSheetStore recorderStore; - NoteEditorStore store; - GlobalKey _globalKey = GlobalKey(); - List popupMenuActions = ["export", "copy", "add", 'delete']; - List popupMenuActionsLong = [ - "Export", - "Copy", - "Add to Set", - "Delete" - ]; - bool get useTabs => widget.view == EditorView.tabs; - final Key bottomSheetKey = Key('bottomSheet'); - Map dismissables = {}; - AdditionalInfoItem focusedAdditionalInfoItem; - List additionalItemSuggestions = []; - FocusNode noteEditorTitleFocusNode; - TabController tabController; +class NoteEditorState extends State { + final GlobalKey _globalKey = GlobalKey(); + final List popupMenuActions = ['share', 'copy']; + final Map dismissables = {}; + StreamSubscription? _recordingSub; @override void initState() { super.initState(); - WidgetsBinding.instance.addObserver(this); - noteEditorTitleFocusNode = FocusNode(); - tabController = TabController(length: 3, initialIndex: 0, vsync: this); - tabController.addListener(() { - FocusScope.of(context).unfocus(); - setState(() {}); - }); - - recorderStore = listenToStore(recorderBottomSheetStoreToken); - store = listenToStore(noteEditorStoreToken); - store.setNote(widget.note); - - print("INIT EDITOR"); - - recordingFinished.clearListeners(); - recordingFinished.listen((f) async { - print("recording finished ${f.path} with duration ${f.duration}"); - - final player = AudioPlayer(); - await player.setUrl(f.path); - - return Future.delayed( - const Duration(milliseconds: 200), - () async { - f.duration = Duration(milliseconds: await player.getDuration()); - addAudioFile(f); - }, - ); - }); - - audioRecordingPermissionDenied.listen((_) { - showHasNoPermissionsDialog(context); + noteEditorStore.setNote(widget.note); + _recordingSub = recorderBottomSheetStore.onRecordingFinished.listen((f) async { + await addAudioFile(f); }); } @override void dispose() { - WidgetsBinding.instance.removeObserver(this); - recordingFinished.clearListeners(); - audioRecordingPermissionDenied.clearListeners(); - //store.dispose(); - //recorderStore.dispose(); + _recordingSub?.cancel(); super.dispose(); } - _onFloatingActionButtonPress() { - if (recorderStore.state == RecorderState.RECORDING) { - stopAction(true); + Future _onFloatingActionButtonPress() async { + if (recorderBottomSheetStore.state == RecorderState.recording) { + await stopAction(); } else { - startRecordingAction(); + await startRecordingAction(); } } - _onAudioFileDelete(AudioFile file, int index) { - softDeleteAudioFile(file); - - showUndoSnackbar( - context: context, - message: - 'Deleted ${file.name == null || file.name.trim() == "" ? "Audio File" : file.name}', - data: file, - onClose: () { - if (!store.note.audioFiles.contains(file)) { - print("hardly deleting audio file now"); - hardDeleteAudioFile(file); - } - }, - onUndo: (_) { - if (!store.note.audioFiles.contains(file)) { + void _onAudioFileDelete(NoteEditorStore store, AudioFile file, int index) { + late Flushbar bar; + bar = Flushbar( + message: '${file.name} was deleted', + onStatusChanged: (status) { + if (status == FlushbarStatus.DISMISSED && + !store.note!.audioFiles.contains(file)) { + hardDeleteAudioFile(file); + } + }, + mainButton: TextButton( + child: const Text('Undo'), + onPressed: () { + if (!store.note!.audioFiles.contains(file)) { restoreAudioFile(Tuple2(file, index)); } - hideSnack(context); - }); - } - - _copyToClipboard(BuildContext context) async { - String text = Exporter.getText(store.note); - - var result = await ClipboardManager.copyToClipBoard(text); - FocusScope.of(context).requestFocus(new FocusNode()); - showSnack(_globalKey.currentState, "Songtext copied"); + bar.dismiss(); + }, + ), + duration: const Duration(seconds: 3), + ); + bar.show(context); + softDeleteAudioFile(file); } - _sharePdf() async { - // TODO: open dialog with "Save" and "Share" Options - - String path = await Exporter.pdf([store.note]); - print("generated pdf at $path"); - - await FlutterShare.shareFile( - title: '${store.note.title}.pdf', - text: 'Sharing PDF of ${store.note.title}', - filePath: path); - - /* - String path = await Backup().exportNote(note); - - await FlutterShare.shareFile( - title: '${note.title}.json', - text: 'Sharing Json of ${note.title}', - filePath: path); - */ + Future _copyToClipboard(NoteEditorStore store) async { + final text = Exporter.getText(store.note!); + await Clipboard.setData(ClipboardData(text: text)); + final messenger = ScaffoldMessenger.of(context); + messenger.showSnackBar( + const SnackBar(content: Text('Copied to Clipboard')), + ); } - _runPopupAction(String action) { + void _runPopupAction(NoteEditorStore store, String action) { switch (action) { - case "share": - _sharePdf(); - // share text.... + case 'share': + showExportDialog(context, store.note!); break; - case "export": - // export as pdf - showExportDialog(context, [store.note]); - break; - case "star": + case 'star': toggleStarred(); break; - case "copy": - _copyToClipboard(context); - break; - case "add": - showAddToCollectionDialog(context, store.note); - break; - case 'delete': - showDeleteDialog(context, store.note, () async { - await LocalStorage().deleteNote(store.note); - Navigator.of(context).pop(); - }); + case 'copy': + _copyToClipboard(store); break; default: break; } } - _buildTabView(List items) { - return Container( - padding: EdgeInsets.all(8), - child: ListView.builder( - itemBuilder: (context, index) => items[index], - itemCount: items.length, - )); - } - - _onAdditionalInfoValueChange(AdditionalInfoItem item, String value) { - // when the value inside of the text edits change - _onSuggestionTap(value, item); - } - - _onAdditionalInfoFocusChange(AdditionalInfoItem item) async { - print("=> note editor | on focus change: $item"); - var suggestions = await _getInfoSuggestions(item); - setState(() { - additionalItemSuggestions = suggestions.sublist( - 0, suggestions.length > 5 ? 5 : suggestions.length); - focusedAdditionalInfoItem = item; - }); - } - - Future> _getInfoSuggestions(AdditionalInfoItem item) async { - if (item == null) return []; - - Iterable notes = (await LocalStorage().getActiveNotes()) - .where((element) => element.id != store.note.id); - - String search = getAddtionalInfoItemFromNote(store.note, item); - - if (search != null) search = search.toLowerCase(); - - _filter(element) { - return element != null && - element.trim().length != 0 && - (search == null || - (element.toLowerCase().contains(search) && - element.toLowerCase() != search)); - } - - switch (item) { - case AdditionalInfoItem.key: - return itemsByFrequency( - notes.map((note) => note.key).where(_filter).toList()); - case AdditionalInfoItem.tuning: - return itemsByFrequency( - notes.map((note) => note.tuning).where(_filter).toList()); - case AdditionalInfoItem.capo: - return itemsByFrequency( - notes.map((note) => note.capo).where(_filter).toList()); - case AdditionalInfoItem.label: - return itemsByFrequency( - notes.map((note) => note.label).where(_filter).toList()); - case AdditionalInfoItem.artist: - return itemsByFrequency( - notes.map((note) => note.artist).where(_filter).toList()); - case AdditionalInfoItem.title: - if (search == null || search.trim() == "") { - return [getFormattedDate(DateTime.now())]; - } else { - return []; - } - break; - - default: - return []; - } - } - - _onSuggestionTap(String text, AdditionalInfoItem item) async { - switch (item) { - case AdditionalInfoItem.key: - changeKey(text); - break; - case AdditionalInfoItem.tuning: - changeTuning(text); - break; - case AdditionalInfoItem.capo: - changeCapo(text); - break; - case AdditionalInfoItem.label: - changeLabel(text); - break; - case AdditionalInfoItem.artist: - changeArtist(text); - break; - case AdditionalInfoItem.title: - changeTitle(text); - break; - - default: - break; - } - // update suggestions - var suggestions = await _getInfoSuggestions(focusedAdditionalInfoItem); - setState(() { - additionalItemSuggestions = suggestions.sublist( - 0, suggestions.length > 5 ? 5 : suggestions.length); - }); - } - @override Widget build(BuildContext context) { - // map widgets to tabs - Map> items = {}; - - items[TabType.audio] = []; - items[TabType.structure] = []; - items[TabType.info] = []; - - items[TabType.structure].add(NoteEditorTitle( - focus: noteEditorTitleFocusNode, - showInsertDate: true, - title: store.note.title, - onChange: (s) { - _onAdditionalInfoValueChange(AdditionalInfoItem.title, s); - }, - allowEdit: true, - )); - - // sections - for (var i = 0; i < store.note.sections.length; i++) { - if (!dismissables.containsKey(store.note.sections[i])) - dismissables[store.note.sections[i]] = GlobalKey(); + final store = context.watch(); + final recorderStore = context.watch(); + final note = store.note; + if (note == null) { + return const SizedBox.shrink(); + } - bool showMoveUp = (i != 0); - bool showMoveDown = (i != (store.note.sections.length - 1)); + final items = [ + NoteEditorTitle( + title: note.title, + onChange: changeTitle, + allowEdit: true, + ), + ]; - items[TabType.structure].add(SectionListItem( - globalKey: dismissables[store.note.sections[i]], - section: store.note.sections[i], - contentFontSize: widget.sectionContentFontSize, - moveDown: showMoveDown, - moveUp: showMoveUp)); + for (var i = 0; i < note.sections.length; i++) { + final section = note.sections[i]; + dismissables.putIfAbsent(section, () => GlobalKey()); + items.add(SectionListItem( + globalKey: dismissables[section]!, + section: section, + moveDown: i != (note.sections.length - 1), + moveUp: i != 0, + )); } - // add section item - items[TabType.structure].add(AddSectionItem()); - // all additional info - items[TabType.info].add(Container( - padding: EdgeInsets.only(left: 8, right: 8), - child: NoteEditorAdditionalInfo(store.note, - onChange: (data) => - _onAdditionalInfoValueChange(data.item1, data.item2), - onFocusChange: _onAdditionalInfoFocusChange))); + items.add(const AddSectionItem()); + items.add(NoteEditorAdditionalInfo(note)); - // audio files as stack - if (store.note.audioFiles.length > 0 && !useTabs) - items[TabType.audio].add(Padding( - padding: EdgeInsets.symmetric(vertical: 20), - child: Text( - 'Audio Files', - style: Theme.of(context).textTheme.subtitle1, - ))); - - store.note.audioFiles.asMap().forEach((int index, AudioFile f) { - items[TabType.audio].add(AudioFileView( - file: f, - index: index, - onDuplicate: () async { - AudioFile copy = await FileManager().copyToNew(f); - addAudioFile(copy); - }, - onDelete: () => _onAudioFileDelete(f, index), - onRename: (name) { - f.name = name; - changeAudioFile(f); - }, - onMove: () { - showImportDialog(context, "Move audio to", () async { - // new audio file + if (note.audioFiles.isNotEmpty) { + items.add(Padding( + padding: const EdgeInsets.symmetric(vertical: 20), + child: Text('Audio Files', style: Theme.of(context).textTheme.titleMedium), + )); + } - Future.delayed(Duration(milliseconds: 200), () { - showSnack(_globalKey.currentState, - "The audio file as moved to a new note"); + note.audioFiles.asMap().forEach((index, f) { + items.add(AudioFileView( + file: f, + index: index, + onDelete: () => _onAudioFileDelete(store, f, index), + onMove: () { + showImportDialog( + context, + 'Copy audio to', + () async { + final copy = await FileManager().copyToNew(f); + Future.delayed(const Duration(milliseconds: 200), () { + showSnack(_globalKey.currentState, 'The audio file was copied to a new note'); }); - - store.note.audioFiles.removeWhere((a) => a.id == f.id); - LocalStorage().syncNote(store.note); - - Note note = Note.empty(); - note.audioFiles.add(f); - LocalStorage().syncNote(note); - - setState(() {}); - // manual sync - return note; - }, (Note note) async { - print("Testing"); - print("Moving to note ${note.title}"); - Future.delayed(Duration(milliseconds: 200), () { - showSnack(_globalKey.currentState, - "The audio file was moved to a ${note.title}"); + final newNote = Note.empty(); + newNote.audioFiles.add(copy); + await LocalStorage().syncNote(newNote); + return newNote; + }, + (Note targetNote) async { + final copy = await FileManager().copyToNew(f); + Future.delayed(const Duration(milliseconds: 200), () { + showSnack(_globalKey.currentState, 'The audio file was copied to ${targetNote.title}'); }); - - if (note.id == widget.note.id) { - AudioFile copy = await FileManager().copyToNew(f); - copy.name += " - copy"; - addAudioFile(copy); + if (targetNote.id == widget.note.id) { + copy.name += ' - copy'; + await addAudioFile(copy); } else { - // manual sync - - store.note.audioFiles.removeWhere((a) => a.id == f.id); - LocalStorage().syncNote(store.note); - - note.audioFiles.add(f); - LocalStorage().syncNote(note); - setState(() {}); + targetNote.audioFiles.add(copy); + await LocalStorage().syncNote(targetNote); } - - return note; + return targetNote; }, - openNote: false, - syncNote: - false, // do not sync note, because otherwise this component gets updated twice - importButtonText: "Move", - ignoreNoteId: store.note.id, - newButtonText: "Copy as NEW"); - }, - onShare: () => shareFile(f.path), - globalKey: _globalKey)); + openNote: false, + syncNote: false, + importButtonText: 'Copy', + newButtonText: 'Copy as NEW', + ); + }, + onShare: () => shareFile(f.path), + globalKey: _globalKey, + )); }); - if (store.note.audioFiles.length == 0 && useTabs) { - String text = - "No audio recorded yet. \nPress the microphone button to get started."; - - items[TabType.audio].add(SafeArea( - child: Center( - child: Container( - padding: const EdgeInsets.all(0.0), - child: Text( - text, - textAlign: TextAlign.center, - ), - width: 200.0, - height: 120.0, - )))); - } - - // bottom sheets - bool showSheet = recorderStore.state == RecorderState.PAUSING || - recorderStore.state == RecorderState.PLAYING || - recorderStore.state == RecorderState.RECORDING; - - Icon icon = Icon( - ((recorderStore.state == RecorderState.RECORDING)) - ? Icons.mic_none - : Icons.mic, - color: recorderStore.state == RecorderState.RECORDING - ? Theme.of(context).accentColor - : null); - PopupMenuButton popup = PopupMenuButton( - onSelected: _runPopupAction, - itemBuilder: (context) { - return popupMenuActions.map>((String action) { - int index = popupMenuActions.indexOf(action); + final showSheet = recorderStore.state == RecorderState.pausing || + recorderStore.state == RecorderState.playing || + recorderStore.state == RecorderState.recording; - return PopupMenuItem( - value: action, child: Text(popupMenuActionsLong[index])); - }).toList(); - }, + final icon = Icon( + recorderStore.state == RecorderState.recording ? Icons.mic_none : Icons.mic, + color: recorderStore.state == RecorderState.recording + ? Theme.of(context).colorScheme.secondary + : null, ); - var colorPicker = Stack(alignment: Alignment.center, children: [ + final actions = [ IconButton( - icon: Icon(Icons.color_lens), - onPressed: () => - showColorPickerDialog(context, store.note.color, changeColor)), - Positioned( - bottom: 17, - right: 14, - child: Container( + icon: Icon(note.starred ? Icons.star : Icons.star_border), + onPressed: () => toggleStarred(), + ), + IconButton(icon: icon, onPressed: _onFloatingActionButtonPress), + Stack( + alignment: Alignment.center, + children: [ + IconButton( + icon: const Icon(Icons.color_lens), + onPressed: () => showColorPickerDialog(context, note.color, changeColor), + ), + Positioned( + bottom: 17, + right: 14, + child: Container( decoration: BoxDecoration( - color: store.note.color, - borderRadius: BorderRadius.circular(10)), + color: note.color, + borderRadius: BorderRadius.circular(10), + ), height: 10, - width: 10)), - ]); - // actions - List actions = [ - // IconButton( - // icon: Icon(Icons.share), - // onPressed: () => showExportDialog(context, store.note)), - IconButton( - icon: Icon((store.note.starred) ? Icons.star : Icons.star_border), - onPressed: toggleStarred), - IconButton(icon: icon, onPressed: _onFloatingActionButtonPress), - IconButton(icon: Icon(Icons.share), onPressed: _sharePdf), + width: 10, + ), + ), + ], + ), IconButton( - icon: Icon(Icons.play_circle_filled), - onPressed: () { - Navigator.push( - context, - new MaterialPageRoute( - builder: (context) => NoteViewer(store.note, - showAdditionalInformation: false, - showAudioFiles: false, - showSheet: true, - showTitle: false))); - }), - // IconButton( - // icon: Icon(Icons.content_copy), - // onPressed: () => _copyToClipboard(context)) - popup, + icon: const Icon(Icons.play_circle_filled), + onPressed: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => NoteViewer( + note, + showAdditionalInformation: false, + showAudioFiles: false, + showSheet: true, + showTitle: false, + ), + ), + ); + }, + ), + PopupMenuButton( + onSelected: (action) => _runPopupAction(store, action), + itemBuilder: (context) { + return popupMenuActions + .map((action) => PopupMenuItem(value: action, child: Text(action))) + .toList(); + }, + ), ]; - List categories = ["Structure", "Info", "Audio"]; - - List stackChildren = []; - - // add container to prevent from seeing all content - if (showSheet && useTabs) { - TabType.values.forEach((tt) { - items[tt].add(Container(height: recorderStore.minimized ? 70 : 300)); - }); - } - - if (!useTabs) { - if (showSheet) { - items[TabType.audio] - .add(Container(height: recorderStore.minimized ? 70 : 300)); - } - - stackChildren.add(_buildTabView(items[TabType.structure] - ..addAll(items[TabType.info]) - ..addAll(items[TabType.audio]))); - } - - final keyboardOpen = WidgetsBinding.instance.window.viewInsets.bottom > 0; - print("====> keyboard open: $keyboardOpen"); - - Widget suggestionSheet = PreferredSize( - preferredSize: Size.fromHeight(20), - child: Container( - width: double.infinity, - padding: EdgeInsets.only(left: 8), - child: Wrap( - alignment: WrapAlignment.start, - spacing: 8, - children: additionalItemSuggestions - .map((o) => CustomChip( - label: Text(o), - onPressed: () => - _onSuggestionTap(o, focusedAdditionalInfoItem))) - .toList()), - )); - - var width = MediaQuery.of(context).size.width; - - Scaffold scaffold = Scaffold( + return PopScope( + onPopInvokedWithResult: (didPop, result) { + if (didPop) { + stopAction(); + } + }, + child: Scaffold( key: _globalKey, - appBar: AppBar( - //backgroundColor: store.note.color, - actions: actions, - bottom: useTabs - ? new TabBar( - controller: tabController, - isScrollable: true, - tabs: List.generate(categories.length, (int index) { - return Container( - child: Align( - alignment: Alignment.center, - child: Text( - categories[index], - )), - padding: EdgeInsets.all(16), - ); - //return new Tab(text: categories[index]); - })) - : null, + appBar: AppBar(actions: actions), + bottomSheet: showSheet ? const RecorderBottomSheet(key: Key('bottomSheet')) : null, + body: Padding( + padding: const EdgeInsets.all(16), + child: ListView.builder( + itemBuilder: (context, index) => items[index], + itemCount: items.length, + ), ), - bottomSheet: showSheet - ? RecorderBottomSheet(key: bottomSheetKey) - : (focusedAdditionalInfoItem != null && - !(useTabs && tabController.index != 1)) - ? suggestionSheet - : Container(height: 0, width: 0), - body: useTabs - ? TabBarView( - controller: tabController, - children: List.generate(categories.length, (int index) { - if (index == 0) { - return _buildTabView(items[TabType.structure]); - } else if (index == 1) { - return _buildTabView(items[TabType.info]); - } else { - return _buildTabView(items[TabType.audio]); - } - })) - : Container(child: Stack(children: stackChildren))); - - // will pop score - return WillPopScope( - onWillPop: () async { - print("will pop..."); - hideSnack(context); - stopAction(true); - return true; - }, - child: ScaffoldMessenger(child: scaffold)); + ), + ); } } - -/* - if (store.loading) { - stackChildren.add(BackdropFilter( - filter: new ImageFilter.blur(sigmaX: 10.0, sigmaY: 10.0), - child: new Container( - child: Center(child: CircularProgressIndicator()), - decoration: new BoxDecoration( - color: - Theme.of(context).scaffoldBackgroundColor.withOpacity(0.5)), - ))); - } -*/ diff --git a/lib/note_item.dart b/lib/note_item.dart index 4db62b9..3cef7ac 100644 --- a/lib/note_item.dart +++ b/lib/note_item.dart @@ -1,113 +1,103 @@ -import 'dart:ui'; - import 'package:flutter/material.dart'; -import 'package:sound/model.dart'; -import 'package:sound/utils.dart'; + +import 'model.dart'; +import 'utils.dart'; class AbstractNoteItem extends StatelessWidget { final Note note; final bool isSelected; - final Function onTap, onLongPress; - final String highlight; + final VoidCallback onTap; + final VoidCallback onLongPress; + final String? highlight; + + const AbstractNoteItem({ + required this.note, + required this.isSelected, + required this.onTap, + required this.onLongPress, + this.highlight, + super.key, + }); - AbstractNoteItem( - {this.note, - this.isSelected, - this.onTap, - this.onLongPress, - this.highlight}); + bool get empty => (note.title.trim().isEmpty && sectionText().trim().isEmpty); - bool get empty => ((note.title == null || note.title.trim() == "") && - this.sectionText().trim() == ""); + String sectionText() => note.sections.map((s) => s.content).join('\n'); Widget singleText(BuildContext context, String text) { - return Container( - width: MediaQuery.of(context).size.width, - child: Padding( - padding: EdgeInsets.all(8.0), - child: Text(text, - textScaleFactor: 0.8, - style: Theme.of(context).textTheme.headline6.copyWith()))); + return Padding( + padding: const EdgeInsets.all(8.0), + child: Text( + text, + style: Theme.of(context) + .textTheme + .headlineSmall + ?.copyWith(fontWeight: FontWeight.w200), + ), + ); } - Widget highlightTitle(BuildContext context, String title, String highlight) { - List spans = []; - if (highlight == null) { - spans.add(TextSpan(text: title)); - } else { - int start = title.toLowerCase().indexOf(highlight); - if (start == -1) { - spans.add(TextSpan(text: title)); - } else { - spans.add(TextSpan(text: title.substring(0, start))); - spans.add(TextSpan( - text: title.substring(start, start + highlight.length), - style: - TextStyle(backgroundColor: Theme.of(context).highlightColor))); - spans.add(TextSpan(text: title.substring(start + highlight.length))); - } + Widget highlightTitle(BuildContext context, String title, String? highlight) { + if (highlight == null || highlight.isEmpty) { + return Text(title, style: Theme.of(context).textTheme.titleLarge); + } + final lowerTitle = title.toLowerCase(); + final lowerHighlight = highlight.toLowerCase(); + final start = lowerTitle.indexOf(lowerHighlight); + if (start == -1) { + return Text(title, style: Theme.of(context).textTheme.titleLarge); } - return Text.rich( TextSpan( - children: spans, + children: [ + TextSpan(text: title.substring(0, start)), + TextSpan( + text: title.substring(start, start + highlight.length), + style: TextStyle(backgroundColor: Theme.of(context).highlightColor), + ), + TextSpan(text: title.substring(start + highlight.length)), + ], ), - //softWrap: true, - //overflow: TextOverflow.clip, - //maxLines: 1, - style: Theme.of(context).textTheme.headline6, - textScaleFactor: 0.75, + style: Theme.of(context).textTheme.titleLarge, textAlign: TextAlign.left, ); } Widget highlightSectionText( - BuildContext context, String text, String highlight, - {int maxLines = 9}) { - if (highlight != null) { - highlight = highlight.toLowerCase(); + BuildContext context, + String text, + String? highlight, { + int maxLines = 9, + }) { + if (highlight == null || highlight.isEmpty) { + return Text( + text, + softWrap: true, + overflow: TextOverflow.clip, + maxLines: maxLines, + textAlign: TextAlign.left, + ); } - - List spans = []; - - if (highlight == null) { - spans.add(TextSpan(text: text)); - } else { - List sections = text.split("\n"); - - int start = text.toLowerCase().indexOf(highlight); - - if (start == -1) - spans.add(TextSpan(text: text)); - else { - int k = 0; - int inSection = 0; - for (var i = 0; i < sections.length; i++) { - if (start >= k && start <= (k + sections[i].length)) { - inSection = i; - break; - } - k += sections[i].length + 1; - } - - print("section: ${sections[inSection]}, text: $highlight"); - // start at the start of the found section - int sectionStart = text.indexOf(sections[inSection]); - print("$sectionStart, $start, ${text.length}"); - int end = start + highlight.length; - - spans.add(TextSpan(text: text.substring(sectionStart, start))); - spans.add(TextSpan( - text: text.substring(start, end), - style: - TextStyle(backgroundColor: Theme.of(context).highlightColor))); - spans.add(TextSpan(text: text.substring(end))); - } + final start = text.toLowerCase().indexOf(highlight.toLowerCase()); + if (start == -1) { + return Text( + text, + softWrap: true, + overflow: TextOverflow.clip, + maxLines: maxLines, + textAlign: TextAlign.left, + ); } - + final end = start + highlight.length; return Text.rich( TextSpan( - children: spans, + children: [ + TextSpan(text: text.substring(0, start)), + TextSpan( + text: text.substring(start, end), + style: TextStyle(backgroundColor: Theme.of(context).highlightColor), + ), + TextSpan(text: text.substring(end)), + ], ), softWrap: true, overflow: TextOverflow.clip, @@ -116,201 +106,145 @@ class AbstractNoteItem extends StatelessWidget { ); } - Widget emptyText(BuildContext context) { - return singleText(context, "Empty"); - } - - Widget onlyTitle(BuildContext context) { - return singleText(context, note.title); - } - - bool get hasOnlyTitle => - (note.title != null && note.title != "") && - this.sectionText().trim() == ""; - - String sectionText() { - String text = ""; - for (Section section in note.sections) { - text += resolveRichContent(section.content) + '\n'; - } - return text; - } + Widget emptyText(BuildContext context) => singleText(context, 'Empty'); + Widget onlyTitle(BuildContext context) => singleText(context, note.title); + bool get hasOnlyTitle => note.title.isNotEmpty && sectionText().trim().isEmpty; @override - Widget build(BuildContext context) { - return null; - } + Widget build(BuildContext context) => const SizedBox.shrink(); } class SmallNoteItem extends AbstractNoteItem { final double width; final EdgeInsets padding; - SmallNoteItem(Note note, bool isSelected, Function onTap, - Function onLongPress, String highlight, this.width, this.padding) - : super( - note: note, - isSelected: isSelected, - onTap: onTap, - onLongPress: onLongPress, - highlight: highlight); + SmallNoteItem( + Note note, + bool isSelected, + VoidCallback onTap, + VoidCallback onLongPress, + String? highlight, + this.width, + this.padding, { + super.key, + }) : super( + note: note, + isSelected: isSelected, + onTap: onTap, + onLongPress: onLongPress, + highlight: highlight, + ); @override Widget build(BuildContext context) { - Widget child = Card( - color: note.color, - shape: (isSelected ? getSelectedChardShape(context) : null), - child: Container( - width: MediaQuery.of(context).size.width, - decoration: (isSelected) - ? getSelectedDecoration(context) - : getNormalDecoration(context), - child: empty - ? emptyText(context) - : hasOnlyTitle - ? onlyTitle(context) - : Padding( - padding: EdgeInsets.all(8.0), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisAlignment: MainAxisAlignment.start, - children: [ - Padding( - padding: EdgeInsets.only(bottom: 10), - child: highlightTitle( - context, note.title, highlight)), - highlightSectionText( - context, this.sectionText(), highlight), - ])))); - List stackChildren = []; - stackChildren.add(child); - + final child = Card( + color: note.color, + child: Container( + decoration: isSelected ? getSelectedDecoration(context) : null, + child: empty + ? emptyText(context) + : hasOnlyTitle + ? onlyTitle(context) + : Padding( + padding: const EdgeInsets.all(8.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding( + padding: const EdgeInsets.only(bottom: 10), + child: highlightTitle(context, note.title, highlight), + ), + highlightSectionText(context, sectionText(), highlight), + ], + ), + ), + ), + ); return GestureDetector( - onTap: onTap, - onLongPress: onLongPress, - child: Container( - width: this.width, - height: (empty) ? 50 : null, - padding: this.padding, - child: Stack(children: stackChildren))); + onTap: onTap, + onLongPress: onLongPress, + child: Container( + width: width, + height: empty ? 50 : null, + padding: padding, + child: child, + ), + ); } } class NoteItem extends AbstractNoteItem { final double padding; - NoteItem(Note note, bool isSelected, Function onTap, Function onLongPress, - String highlight, {this.padding = 8}) - : super( - note: note, - isSelected: isSelected, - onTap: onTap, - onLongPress: onLongPress, - highlight: highlight); - - showTop() { - return !((note.key == null || note.key.trim() == "") && - (note.capo == null || note.capo.trim() == "")); - } - - _top() { - return Padding( - padding: EdgeInsets.only(left: padding, right: padding, top: padding), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text(note.lengthStr), - Text((note.capo == null || note.capo.trim() == "") - ? "" - : "Capo ${note.capo}") - ], - )); - } - - _title(context) { - return Padding( - child: Row(children: [ - highlightTitle(context, note.title, highlight) - // Text( - // note.title, - // textScaleFactor: .8, - // style: Theme.of(context).textTheme.headline6, - // ) - ]), - padding: EdgeInsets.all(padding)); - } - - _text(context) { - return Padding( - padding: EdgeInsets.all(padding), - child: highlightSectionText(context, this.sectionText(), highlight, - maxLines: 6) - // Text( - // this.sectionText(), - // textAlign: TextAlign.left, - // softWrap: true, - // maxLines: 5, - // overflow: TextOverflow.clip, - // ) + NoteItem( + Note note, + bool isSelected, + VoidCallback onTap, + VoidCallback onLongPress, + String? highlight, { + this.padding = 8, + super.key, + }) : super( + note: note, + isSelected: isSelected, + onTap: onTap, + onLongPress: onLongPress, + highlight: highlight, ); - } - - _richText(String text) { - return Text.rich( - TextSpan( - text: text, - ), - //softWrap: true, - //overflow: TextOverflow.clip, - //maxLines: 1, - //style: Theme.of(context).textTheme.headline6, - textScaleFactor: 1.0, - textAlign: TextAlign.right, - ); - } - - showBottom() { - return note.sections.length > 0 || - (note.tuning != null && note.tuning.trim() != ""); - } - - _bottom() { - return Padding( - padding: EdgeInsets.all(padding), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text("${note.sections.length} Sections"), - _richText((note.tuning == null) ? "" : "${note.tuning}") - ], - )); - } @override Widget build(BuildContext context) { return GestureDetector( - onTap: onTap, - onLongPress: onLongPress, + onTap: onTap, + onLongPress: onLongPress, + child: Card( + color: note.color, child: Container( - child: Card( - shape: (isSelected ? getSelectedChardShape(context) : null), - color: note.color, - child: Container( - decoration: (isSelected - ? getSelectedDecoration(context) - : getNormalDecoration(context)), - child: (empty) - ? emptyText(context) - : hasOnlyTitle - ? onlyTitle(context) - : Column( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - if (showTop()) _top(), - _title(context), - _text(context), - if (showBottom()) _bottom(), - ]))))); + decoration: isSelected ? getSelectedDecoration(context) : null, + child: empty + ? emptyText(context) + : hasOnlyTitle + ? onlyTitle(context) + : Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding( + padding: EdgeInsets.all(padding), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text(note.key ?? 'No Key'), + Text(note.capo == null ? 'No Capo' : 'Capo ${note.capo}'), + ], + ), + ), + Padding( + padding: EdgeInsets.all(padding), + child: highlightTitle(context, note.title, highlight), + ), + Padding( + padding: EdgeInsets.all(padding), + child: highlightSectionText( + context, + sectionText(), + highlight, + maxLines: 6, + ), + ), + Padding( + padding: EdgeInsets.all(padding), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text('${note.sections.length} Sections'), + Text(note.tuning ?? 'Standard'), + ], + ), + ), + ], + ), + ), + ), + ); } } diff --git a/lib/note_list.dart b/lib/note_list.dart index 53d33d5..854170f 100644 --- a/lib/note_list.dart +++ b/lib/note_list.dart @@ -1,14 +1,13 @@ import 'package:sound/note_item.dart'; import 'model.dart'; import 'package:flutter/material.dart'; -import 'storage.dart'; class NoteListItemModel { final Note note; final bool isSelected; - final String highlight; // a test to highlight + final String? highlight; // a test to highlight - NoteListItemModel({this.note, this.isSelected, this.highlight}); + NoteListItemModel({required this.note, required this.isSelected, this.highlight}); } class NoteList extends StatefulWidget { @@ -16,7 +15,7 @@ class NoteList extends StatefulWidget { final bool singleView; final ValueChanged onTap; final ValueChanged onLongPress; - final String highlight; + final String? highlight; final List items; NoteList( diff --git a/lib/note_viewer.dart b/lib/note_viewer.dart index 0589d1a..ebe19f0 100644 --- a/lib/note_viewer.dart +++ b/lib/note_viewer.dart @@ -1,113 +1,13 @@ import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; -import 'package:flutter_flux/flutter_flux.dart'; import 'package:sound/editor_views/additional_info.dart'; import 'package:sound/editor_views/audio.dart'; import 'package:sound/editor_views/section.dart'; import 'package:sound/local_storage.dart'; import 'package:sound/model.dart'; import 'package:sound/recorder_bottom_sheet.dart'; -import 'package:sound/recorder_store.dart'; -class NoteCollectionViewer extends StatelessWidget { - final NoteCollection collection; - - NoteCollectionViewer(this.collection, {Key key}); - - @override - Widget build(BuildContext context) { - return NotesViewer( - collection.notes.where((note) => !note.discarded).toList(), - showAdditionalInformation: false, - showTitle: true, - showZoomPlayback: true, - showAudioFiles: false); - } -} - -class NoteViewerContent extends StatelessWidget { - final Note note; - final bool showTitle, - showAdditionalInformation, - showAudioFiles, - showSheet, - sheetMinimized; - final double textScaleFactor; - final ScrollController controller; - - const NoteViewerContent(this.note, this.sheetMinimized, - {this.controller, - this.textScaleFactor = 1.0, - this.showAdditionalInformation = true, - this.showTitle = true, - this.showAudioFiles = false, - this.showSheet = false, - Key key}) - : super(key: key); - - @override - Widget build(BuildContext context) { - List items = []; - - if (showTitle) { - items.add(NoteEditorTitle( - title: note.title, - allowEdit: false, - onChange: (_) {}, - )); - } - - for (Section section in note.sections) { - items.add(SectionView( - section: section, - textScaleFactor: textScaleFactor, - richChords: true)); - } - - if (showAdditionalInformation) { - items.add(Container( - padding: EdgeInsets.symmetric(horizontal: 8), - child: NoteEditorAdditionalInfo( - note, - allowEdit: false, - ), - )); - } - - if (showAudioFiles) { - items.add(Padding( - padding: EdgeInsets.symmetric(vertical: 20, horizontal: 8), - child: Text( - 'Audio Files', - style: Theme.of(context).textTheme.subtitle1, - ))); - - items.addAll(note.audioFiles.map((e) { - return AudioFileListItem(e, onPressed: () { - playInDialog(context, e); - }); - }).toList()); - } - - if (showSheet) { - items.add(Container(height: sheetMinimized ? 70 : 300)); - } - - return Container( - child: Stack(children: [ - Container( - padding: EdgeInsets.all(8), - child: ListView.builder( - controller: controller, - itemBuilder: (context, index) => items[index], - itemCount: items.length, - )), - ]), - ); - } -} - -class NoteViewer extends StatelessWidget { +class NoteViewer extends StatefulWidget { final Note note; final List actions; final bool showAudioFiles, @@ -117,91 +17,40 @@ class NoteViewer extends StatelessWidget { showSheet; NoteViewer(this.note, - {this.actions, + {List? actions, this.showZoomPlayback = true, this.showAudioFiles = true, this.showTitle = true, this.showSheet = false, this.showAdditionalInformation = true, - Key key}) - : super(key: key); - - @override - Widget build(BuildContext context) { - return NotesViewer( - [this.note], - actions: actions, - showZoomPlayback: showZoomPlayback, - showTitle: showTitle, - showSheet: showSheet, - showAudioFiles: showAudioFiles, - showAdditionalInformation: showAdditionalInformation, - ); - } -} - -class NotesViewer extends StatefulWidget { - final List notes; - final List actions; - - final bool showAudioFiles, - showAdditionalInformation, - showTitle, - showZoomPlayback, - showSheet; - - NotesViewer(this.notes, - {this.actions, - this.showZoomPlayback = true, - this.showAudioFiles = false, - this.showTitle = true, - this.showSheet = false, - this.showAdditionalInformation = true, - Key key}) - : super(key: key); + super.key}) + : actions = actions ?? const []; @override _NoteViewerState createState() => _NoteViewerState(); } -class _NoteViewerState extends State - with StoreWatcherMixin, TickerProviderStateMixin { - ScrollController _scollController; - AnimationController _animationController; - - Animation _sizeController; - +class _NoteViewerState extends State { + late ScrollController _controller; + bool showButtons = true; double textScaleFactor = 1.0; bool isPlaying = false; double offset = 1.0; - RecorderBottomSheetStore recorderStore; - int page = 0; - PageController pageController; - - Note get note => widget.notes[page]; @override void initState() { super.initState(); - pageController = PageController(initialPage: page); - _scollController = ScrollController(debugLabel: "contentController"); - - _animationController = AnimationController( - value: 1.0, vsync: this, duration: Duration(milliseconds: 500)); - - _sizeController = - Tween(begin: 0.8, end: 1.0).animate(_animationController); + _controller = ScrollController() + ..addListener(() { + _controller.position.userScrollDirection == ScrollDirection.forward; + }); - recorderStore = listenToStore(recorderBottomSheetStoreToken); - print("note viewer minimize state: ${recorderStore.minimized}"); - - textScaleFactor = note.zoom; - offset = note.scrollOffset == null ? 1.0 : note.scrollOffset; + textScaleFactor = widget.note.zoom; + offset = widget.note.scrollOffset; } @override void dispose() { - _animationController.dispose(); // setState(() { // isPlaying = false; // }); @@ -209,53 +58,47 @@ class _NoteViewerState extends State } _updateZoom() async { + Note note = widget.note; note.zoom = textScaleFactor; await LocalStorage().syncNoteAttr(note, "zoom"); } _updateScrollOffset() async { + Note note = widget.note; note.scrollOffset = offset; - print("scroll offset: $offset"); await LocalStorage().syncNoteAttr(note, "scrollOffset"); } - _getNoteViewerContent(Note note) { - return NoteViewerContent( - note, - recorderStore.minimized, - controller: _scollController, - textScaleFactor: textScaleFactor, - showAdditionalInformation: widget.showAdditionalInformation, - showAudioFiles: widget.showAudioFiles, - showSheet: widget.showSheet, - showTitle: widget.showTitle, - ); - } + @override + Widget build(BuildContext context) { + List items = []; - _onPageChange(_page) { - print("onPageChange $_page"); - _animationController.reverse(); + if (widget.showTitle) { + items.add(NoteEditorTitle( + title: widget.note.title, + allowEdit: false, + onChange: (_) {}, + )); + } - setState(() { - offset = widget.notes[_page].scrollOffset; - textScaleFactor = widget.notes[_page].zoom; - page = _page; - }); - _animationController.forward(); - } + for (Section section in widget.note.sections) { + items.add(SectionView( + section: section, + textScaleFactor: textScaleFactor, + richChords: true)); + } - @override - Widget build(BuildContext context) { List playingActions = [ IconButton( + color: Theme.of(context).colorScheme.secondary, icon: Icon(Icons.stop), onPressed: () { setState(() { isPlaying = false; }); }), - Container(width: 48, height: 48), IconButton( + color: Theme.of(context).colorScheme.secondary, icon: Icon(Icons.fast_rewind), onPressed: () { setState(() { @@ -264,6 +107,7 @@ class _NoteViewerState extends State _updateScrollOffset(); }), IconButton( + color: Theme.of(context).colorScheme.secondary, icon: Icon(Icons.fast_forward), onPressed: () { setState(() { @@ -273,177 +117,115 @@ class _NoteViewerState extends State }), ]; - List actions = []; - - if (widget.showZoomPlayback && !isPlaying) { - // check scroll range - //double maxScroll = _scollController.position.maxScrollExtent; - actions.addAll([ - IconButton( - icon: Icon(Icons.play_arrow), - color: Theme.of(context).appBarTheme.textTheme.button.color, - onPressed: () { - if (!isPlaying) { - setState(() { - isPlaying = true; - }); - Future.microtask(() async { - int microseconds = 0; - - do { - microseconds = (10000 ~/ offset).toInt(); - //print("waiting $microseconds"); - try { - await _scollController.animateTo( - _scollController.offset + 0.5, - duration: Duration(microseconds: microseconds), - curve: Curves.ease); - } catch (e) { - print("execption: $e"); - break; - } - } while (!_scollController.position.atEdge && isPlaying); - setState(() { - isPlaying = false; - }); - }); - } - }), - IconButton( - color: Theme.of(context).appBarTheme.textTheme.button.color, - icon: Icon(Icons.zoom_in), - onPressed: () { + List actions = [ + IconButton( + icon: Icon(Icons.play_arrow), + color: Theme.of(context).colorScheme.secondary, + onPressed: () { + if (!isPlaying) { setState(() { - textScaleFactor *= 1.05; + isPlaying = true; }); - _updateZoom(); - }), - IconButton( - color: Theme.of(context).appBarTheme.textTheme.button.color, - icon: Icon(Icons.zoom_out), - onPressed: () { - setState(() { - textScaleFactor *= 0.95; + Future.microtask(() async { + bool atEdge = false; + while (!atEdge && isPlaying) { + await _controller.animateTo(_controller.offset + offset, + duration: Duration(milliseconds: 50), curve: Curves.ease); + atEdge = _controller.position.atEdge; + } + setState(() { + isPlaying = false; + }); }); - _updateZoom(); - }), - IconButton( - color: Theme.of(context).appBarTheme.textTheme.button.color, - icon: Icon(Icons.settings_backup_restore_outlined), + } + }), + IconButton( + color: Theme.of(context).colorScheme.secondary, + icon: Icon(Icons.zoom_in), onPressed: () { setState(() { - textScaleFactor = 1.0; - offset = 1.0; + textScaleFactor *= 1.05; }); _updateZoom(); - _updateScrollOffset(); - }, - ) - ]); - } else if (isPlaying) { - actions.addAll(playingActions); - } - // Widget overlay = Container( - // decoration: BoxDecoration( - // shape: BoxShape.rectangle, + }), + IconButton( + color: Theme.of(context).colorScheme.secondary, + icon: Icon(Icons.zoom_out), + onPressed: () { + setState(() { + textScaleFactor *= 0.95; + }); + _updateZoom(); + }), + IconButton( + color: Theme.of(context).colorScheme.secondary, + icon: Icon(Icons.settings_backup_restore_outlined), + onPressed: () { + setState(() { + textScaleFactor = 1.0; + offset = 1.0; + }); + _updateZoom(); + _updateScrollOffset(); + }, + ) + ]; - // //border: Border.all(width: 1, color: Theme.of(context).accentColor)), - // ), - // child: Row( - // children: (isPlaying) ? playingActions : actions, - // )); + Widget overlay = Container( + decoration: BoxDecoration( + shape: BoxShape.rectangle, - // add audio files + //border: Border.all(width: 1, color: Theme.of(context).accentColor)), + ), + child: Row( + children: (isPlaying) ? playingActions : actions, + )); - if (widget.actions != null) { - actions.addAll(widget.actions); + if (widget.showAdditionalInformation) { + items.add(NoteEditorAdditionalInfo( + widget.note, + allowEdit: false, + )); } - Widget body, indicator; - - if (widget.notes.length > 1) { - body = Container( - child: PageView( - controller: pageController, - onPageChanged: _onPageChange, - physics: (isPlaying) ? NeverScrollableScrollPhysics() : null, - children: widget.notes - .map((Note n) => _getNoteViewerContent(n)) - .toList())); - - double prefferedHeight = 24; - double noteIndicatorHeight = prefferedHeight - 8; - double noteIndicatorPadding = 4; - double noteIndicatorOffsetRight = 80; - - double noteIndicatorWidth = (MediaQuery.of(context).size.width - - noteIndicatorPadding * widget.notes.length - - noteIndicatorOffsetRight) / - widget.notes.length; - Color indicatorColor = Theme.of(context).scaffoldBackgroundColor; - Color highlightColor = Theme.of(context).accentColor; - - _buildIndicator(int index) { - return GestureDetector( - onTap: () { - if (!isPlaying) { - pageController.jumpToPage(index); - } - }, - child: Container( - decoration: BoxDecoration( - color: (index == page) ? highlightColor : indicatorColor, - borderRadius: BorderRadius.circular(5)), - padding: null, - width: noteIndicatorWidth, - height: noteIndicatorHeight, - ), - ); - } + // add audio files + if (widget.showAudioFiles) { + items.add(Padding( + padding: EdgeInsets.symmetric(vertical: 20), + child: Text( + 'Audio Files', + style: Theme.of(context).textTheme.titleMedium, + ))); - indicator = PreferredSize( - preferredSize: Size.fromHeight(prefferedHeight), - child: Container( - child: Row( - children: widget.notes - .asMap() - .map( - (int index, Note _note) => MapEntry( - index, - Padding( - padding: EdgeInsets.only( - left: noteIndicatorPadding, - bottom: noteIndicatorPadding, - ), - child: Transform.scale( - scale: (index == page) ? _sizeController.value : 0.8, - child: _buildIndicator(index), - ), - )), - ) - .values - .toList() - ..add(Expanded( - child: Container( - alignment: Alignment.centerRight, - padding: EdgeInsets.only(right: 8, bottom: 8), - child: Text("${page + 1}/${widget.notes.length}", - style: Theme.of(context) - .appBarTheme - .textTheme - .button)))), - ), - ), - ); - } else { - body = _getNoteViewerContent(note); + items.addAll(widget.note.audioFiles.map((e) { + return AudioFileListItem(e, onPressed: () { + playInDialog(context, e); + }); + })); } return Scaffold( - appBar: AppBar(actions: actions, bottom: indicator), + appBar: AppBar( + actions: widget.actions, + ), bottomSheet: widget.showSheet ? RecorderBottomSheet(key: Key("bottomSheetViewer")) : null, - body: body); + body: Container( + child: Stack(children: [ + Container( + padding: EdgeInsets.all(16), + child: ListView.builder( + controller: _controller, + itemBuilder: (context, index) => items[index], + itemCount: items.length, + )), + Positioned( + child: widget.showZoomPlayback ? overlay : Container(), + top: 32, + right: 8, + ), + ]), + )); } } diff --git a/lib/note_views/appbar.dart b/lib/note_views/appbar.dart index 2f25170..8f40f1b 100644 --- a/lib/note_views/appbar.dart +++ b/lib/note_views/appbar.dart @@ -1,51 +1,31 @@ import 'package:flutter/material.dart'; -import 'package:sound/db.dart'; -import 'package:sound/model.dart'; import 'package:sound/storage.dart'; typedef FilterByCallback = bool Function(FilterBy); typedef FilterCallback = bool Function(Filter); -class CustomChip extends StatelessWidget { - final bool active; - final Widget label; - final Function onPressed; - - CustomChip({this.active = false, this.label, this.onPressed, Key key}) - : super(key: key); - - @override - Widget build(BuildContext context) { - Color backgroundColor = (active) - ? Theme.of(context).chipTheme.selectedColor - : Theme.of(context).chipTheme.backgroundColor; - - TextStyle style = (active) - ? Theme.of(context).chipTheme.secondaryLabelStyle - : Theme.of(context).chipTheme.labelStyle; - - return ActionChip( - backgroundColor: backgroundColor, - labelStyle: style, - label: label, - clipBehavior: Clip.hardEdge, - onPressed: onPressed); - } -} - class FilterView extends StatelessWidget { final bool active; final Filter filter; final ValueChanged remove, add; - FilterView({this.filter, this.active, this.remove, this.add}); + const FilterView( + {required this.filter, + required this.active, + required this.remove, + required this.add, + super.key}); @override Widget build(BuildContext context) { + Color? backgroundColor = (active) + ? Theme.of(context).chipTheme.selectedColor + : Theme.of(context).chipTheme.backgroundColor; + return Padding( padding: EdgeInsets.symmetric(horizontal: 5), - child: CustomChip( - active: active, + child: ActionChip( + backgroundColor: backgroundColor, label: Text(filter.content), onPressed: () => (active) ? remove(filter) : add(filter))); } @@ -60,15 +40,14 @@ class FilterOptionsView extends StatelessWidget { final bool mustShowMore; final FilterCallback isFilterApplied; - FilterOptionsView( - {this.title, - this.data, - this.by, - this.showMore, - this.mustShowMore, - this.isFilterApplied, - Key key}) - : super(key: key); + const FilterOptionsView( + {required this.title, + required this.data, + required this.by, + required this.showMore, + required this.mustShowMore, + required this.isFilterApplied, + super.key}); @override Widget build(BuildContext context) { @@ -86,7 +65,7 @@ class FilterOptionsView extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text(title.toUpperCase(), - style: Theme.of(context).appBarTheme.textTheme.caption), + style: Theme.of(context).textTheme.bodySmall), (mustShowMore) ? GestureDetector( onTap: () => toggleShowMore(by), @@ -96,10 +75,10 @@ class FilterOptionsView extends StatelessWidget { (showMore) ? 'Show Less' : 'Show More', style: Theme.of(context) .textTheme - .caption - .copyWith( + .bodySmall + ?.copyWith( color: - Theme.of(context).accentColor)))) + Theme.of(context).colorScheme.secondary)))) : Container(height: 0, width: 0), ], ), @@ -125,136 +104,39 @@ class ActiveFiltersView extends StatelessWidget { final List filters; final ValueChanged removeFilter; - ActiveFiltersView({this.filters, this.removeFilter, Key key}) - : super(key: key); - - _getItem() { - return Container( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisSize: MainAxisSize.min, - children: [ - Container( - height: 50, - child: ListView.builder( - itemCount: this.filters.length, - scrollDirection: Axis.horizontal, - itemBuilder: (context, index) { - Filter filter = filters[index]; - - return Padding( - padding: EdgeInsets.symmetric(horizontal: 5), - child: CustomChip( - active: true, - label: Text( - filter.content, - ), - onPressed: () => removeFilter(filter))); - }, - )), - ])); - } - + const ActiveFiltersView( + {required this.filters, required this.removeFilter, super.key}); @override Widget build(BuildContext context) { return Padding( - padding: EdgeInsets.only(left: 10, top: 50), - child: ListView.builder( - itemBuilder: (context, i) => _getItem(), - itemCount: 1, - )); - } -} - -class SortingView extends StatelessWidget { - final ValueChanged onDirectionChange; - final ValueChanged onSortByChange; - final SortDirection direction; - final SortBy by; - - const SortingView({ - @required this.by, - @required this.direction, - @required this.onDirectionChange, - @required this.onSortByChange, - Key key, - }) : super(key: key); - - _onDirectionChange() { - if (direction == SortDirection.down) - onDirectionChange(SortDirection.up); - else - onDirectionChange(SortDirection.down); - } - - byText() { - switch (by) { - case SortBy.created: - return "Created"; - case SortBy.lastModified: - return "Last Modified"; - case SortBy.az: - return "AZ"; - default: - return "null"; - } - } - - _onSortByChange() { - switch (by) { - case SortBy.created: - onSortByChange(SortBy.lastModified); - break; - - case SortBy.lastModified: - onSortByChange(SortBy.az); - break; - - case SortBy.az: - onSortByChange(SortBy.created); - break; - default: - onSortByChange(SortBy.lastModified); - break; - } - } - - arrowOption(BuildContext context) { - // arrow icon not vanishing under the app bar - Icon icon = Icon( - direction == SortDirection.up ? Icons.arrow_upward : Icons.arrow_downward, - size: 18, - color: Theme.of(context).appBarTheme.textTheme.button.color, - ); - return TextButton( - onPressed: _onDirectionChange, - child: Container(child: icon), - clipBehavior: Clip.hardEdge); - } - - @override - Widget build(BuildContext context) { - return Padding( - padding: EdgeInsets.only(top: 75), + padding: EdgeInsets.only(left: 25, top: 70), child: Container( - color: Theme.of(context).appBarTheme.backgroundColor, - child: Row( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisSize: MainAxisSize.min, - children: [ - Expanded( - child: TextButton( - onPressed: _onSortByChange, - child: Text(byText(), - textScaleFactor: 0.9, - style: - Theme.of(context).appBarTheme.textTheme.button)), - ), - Expanded( - child: arrowOption(context), - ), - ]), - )); + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + Container( + height: 50, + child: ListView.builder( + itemCount: this.filters.length, + scrollDirection: Axis.horizontal, + itemBuilder: (context, index) { + Filter filter = filters[index]; + Color color = + Theme.of(context).chipTheme.selectedColor ?? + Theme.of(context).colorScheme.secondary; + + return Padding( + padding: EdgeInsets.symmetric(horizontal: 5), + child: ActionChip( + backgroundColor: color, + label: Text( + filter.content, + ), + onPressed: () => removeFilter(filter))); + }, + )) + ]))); } } diff --git a/lib/note_views/seach.dart b/lib/note_views/seach.dart index 12efd09..4a58b60 100644 --- a/lib/note_views/seach.dart +++ b/lib/note_views/seach.dart @@ -1,41 +1,30 @@ import 'package:flutter/material.dart'; class SearchTextView extends StatelessWidget { - final Function toggleIsSearching; + final Function({bool searching}) toggleIsSearching; final ValueChanged onChanged; final TextEditingController controller; - final FocusNode focusNode; - final bool enabled; - final String text; - SearchTextView( - {this.toggleIsSearching, - this.onChanged, - this.controller, - Key key, - this.focusNode, - this.text = "Search...", - this.enabled = true}) - : super(key: key); + const SearchTextView( + {required this.toggleIsSearching, + required this.onChanged, + required this.controller, + super.key}); @override Widget build(BuildContext context) { - return GestureDetector( - onTap: toggleIsSearching, - child: TextField( - controller: controller, - focusNode: focusNode, - autofocus: false, - style: Theme.of(context).appBarTheme.textTheme.subtitle1, - onTap: () => toggleIsSearching(searching: true), - onSubmitted: (s) => toggleIsSearching(searching: false), - enabled: enabled, - decoration: InputDecoration( - border: InputBorder.none, - hintText: text, - hintStyle: Theme.of(context).appBarTheme.textTheme.subtitle1), - maxLines: 1, - minLines: 1, - onChanged: (String s) => onChanged(s))); + return TextField( + controller: controller, + autofocus: false, + style: Theme.of(context).textTheme.titleMedium, + onTap: () => toggleIsSearching(searching: true), + onSubmitted: (s) => toggleIsSearching(searching: false), + decoration: InputDecoration( + border: InputBorder.none, + hintText: "Search...", + hintStyle: Theme.of(context).textTheme.titleMedium), + maxLines: 1, + minLines: 1, + onChanged: (String s) => onChanged(s)); } } diff --git a/lib/range_slider.dart b/lib/range_slider.dart index 63f7ed6..9f21abd 100644 --- a/lib/range_slider.dart +++ b/lib/range_slider.dart @@ -1,1303 +1,54 @@ -// Copyright 2018-2019 Didier Boelens. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. +import 'package:flutter/material.dart' as m; -import 'dart:math' as math; +typedef RangeChanged = void Function(double lowerValue, double upperValue); -import 'package:flutter/foundation.dart'; -import 'package:flutter/gestures.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter/rendering.dart'; - -typedef RangeSliderCallback(double lowerValue, double upperValue); -typedef RangeSliderValueIndicatorFormatter(int index, double value); - -/// A Material Design range slider, extension of the original Flutter Slider. -/// -/// Used to select a range of values using 2 thumbs. -/// -/// A RangeSlider can be used to select from either a continuous or a discrete set of -/// values. The default is to use a continuous range of values from [min] to -/// [max]. To use discrete values, use a non-null value for [divisions], which -/// indicates the number of discrete intervals. For example, if [min] is 0.0 and -/// [max] is 50.0 and [divisions] is 5, then the RangeSlider can take on the -/// discrete values 0.0, 10.0, 20.0, 30.0, 40.0, and 50.0. -/// -/// The terms for the parts of a RangeSlider are: -/// -/// * The "thumb", which is a shape that slides horizontally when the user -/// drags it. -/// * The "track", which is the line that the slider thumb slides along. -/// * The "value indicator", which is a shape that pops up when the user -/// is dragging the active thumb to indicate the value [lowerValue] or -/// [upperValue] being selected. -/// -/// The RangeSlider will be disabled if [onChanged] is null. -/// -/// The RangeSlider widget itself does not maintain any state. Instead, when the state -/// of the RangeSlider changes, the widget calls the [onChanged] callback. Most -/// widgets that use a RangeSlider will listen for the [onChanged] callback and -/// rebuild the RangeSlider with a new set of values [lowerValue] and [upperValue] -/// to update the visual appearance of the RangeSlider. -/// -/// To know when the values start to change, or when it is done -/// changing, set the optional callbacks [onChangeStart] and/or [onChangeEnd]. -/// -/// By default, a RangeSlider will be as wide as possible, centered vertically. When -/// given unbounded constraints, it will attempt to make the track 144 pixels -/// wide (with margins on each side) and will shrink-wrap vertically. -/// -/// Requires one of its ancestors to be a [Material] widget. -/// -/// To determine how it should be displayed (e.g. colors, thumb shape, etc.), -/// a RangeSlider uses the [SliderThemeData] available from either a [SliderTheme] -/// widget or the [ThemeData.sliderTheme] a [Theme] widget above it in the -/// widget tree. -/// -/// See also: -/// -/// * [SliderTheme] and [SliderThemeData] for information about controlling -/// the visual appearance of the RangeSlider. -class RangeSlider extends StatefulWidget { - /// Creates a material design RangeSlider. - /// - /// The RangeSlider itself does not maintain any state. Instead, when the state of - /// the RangeSlider changes, the widget calls the [onChanged] callback. Most - /// widgets that use a RangeSlider will listen for the [onChanged] callback and - /// rebuild the RangeSlider with a new set of values ([lowerValue] and [upperValue]) - /// to update the visual appearance of the RangeSlider. - /// - /// * [lowerValue] determines the currently selected lower value for this RangeSlider. - /// * [upperValue] determines the currently selected upper value for this RangeSlider. - /// * [onChanged] is called while the user is selecting a new value ([lowerValue] or [upperValue]) - /// for the RangeSlider. - /// * [onChangeStart] is called when the user starts to select a new value ([lowerValue] or [upperValue]) - /// for the RangeSlider - /// * [onChangeEnd] is called when the user is done selecting a new value ([lowerValue] or [upperValue]) - /// for the RangeSlider. - /// * [showValueIndicator] determines whether the RangeSlider should show a "value indicator" when - /// the user is dragging one of the 2 thumbs - /// * [touchRadiusExpansionRatio] determines the ratio with which to expand - /// the thumb size, to increase (>1) or decrease (<1) the touch surface of the thumbs. - /// It is advised to set this value such that the touch surface of a thumb - /// becomes at least 40.0 x 40.0. The default thumbs have a radius of 6, - /// so a value of at least 3.33 is advisable in that case. - /// * [valueIndicatorMaxDecimals] determines the maximum number of decimals to use to display - /// the value of the currently dragged thumb, inside the "value indicator" - /// * [valueIndicatorFormatter] if defined, is called to format the text to be displayed - /// inside a "value indicator" - /// A fine-grained control of the appearance is achieved using a [SliderThemeData]. - const RangeSlider({ - Key key, - this.min = 0.0, - this.max = 1.0, - this.divisions, - @required this.lowerValue, - @required this.upperValue, - this.onChanged, - this.onChangeStart, - this.onChangeEnd, - this.showValueIndicator: false, - this.touchRadiusExpansionRatio = 3.33, - this.valueIndicatorMaxDecimals = 1, - this.valueIndicatorFormatter, - this.allowThumbOverlap = false, - }) : assert(min != null), - assert(max != null), - assert(min <= max), - assert(divisions == null || divisions > 0), - assert(lowerValue != null), - assert(upperValue != null), - assert(lowerValue >= min && lowerValue <= max), - assert(upperValue >= lowerValue && upperValue <= max), - assert(valueIndicatorMaxDecimals >= 0 && valueIndicatorMaxDecimals < 5), - super(key: key); - - /// The minimum value the user can select. - /// - /// Defaults to 0.0. Must be less than or equal to [max]. +class RangeSlider extends m.StatelessWidget { final double min; - - /// The maximum value the user can select. - /// - /// Defaults to 1.0. Must be greater than or equal to [min]. final double max; - - /// The currently selected lower value. - /// - /// Corresponds to the left thumb - /// Must be greater than or equal to [min], - /// less than or equal to [max]. final double lowerValue; - - /// The currently selected upper value. - /// - /// Corresponds to the right thumb - /// Must be greater than [lowerValue], - /// less than or equal to [max]. final double upperValue; - - /// The number of discrete divisions. - /// - /// If null, the slider is continuous, - /// otherwise discrete - final int divisions; - - /// Do we show a label above the active thumb when - /// the RangeSlider is active ? + final RangeChanged onChanged; + final RangeChanged? onChangeEnd; final bool showValueIndicator; - /// The ratio with which to expand the thumb size, to increase (>1) or - /// decrease (<1) the touch surface of the thumbs. - /// It is advised to set this value such that the touch surface of a thumb - /// becomes at least 40.0 x 40.0. The default thumbs have a radius of 6, - /// so a value of at least 3.33 is advisable. - final double touchRadiusExpansionRatio; - - /// Max number of decimals when displaying - /// the value in the label above the active - /// thumb - final int valueIndicatorMaxDecimals; - - /// External function to format the value to be displayed in the label above the - /// active thumb. Ignored if null. - /// - /// [index] gives the index of the value indicator: 0: lower value, 1: upper value - /// - /// ## Sample Code - /// ```dart - /// frs.RangeSlider( - /// lowerValue: _lowerValue, - /// upperValue: _upperValue, - /// min: 1.0, - /// max: 10.0, - /// divisions: 10, - /// valueIndicatorFormatter: (int index, double value){ - /// String threeDecimals = value.toStringAsFixed(3); - /// return '$threeDecimals m'; - /// }, - /// onChanged: (double newLowerValue, double newUpperValue) { - /// setState(() { - /// _lowerValue = newLowerValue; - /// _upperValue = newUpperValue; - /// }); - /// }, - /// ) - /// ``` - final RangeSliderValueIndicatorFormatter valueIndicatorFormatter; - - /// Callback to invoke when the user is changing the - /// values. - /// - /// The RangeSlider passes both values [lowerValue] and [upperValue] - /// to the callback but does not actually change state until the parent - /// widget rebuilds the RangeSlider with the new values. - /// - /// If null, the RangeSlider will be displayed as disabled. - /// - /// The callback provided to onChanged should update the state of the parent - /// [StatefulWidget] using the [State.setState] method, so that the parent - /// gets rebuilt; for example: - /// - /// ## Sample code - /// - /// ```dart - /// frs.RangeSlider( - /// lowerValue: _lowerValue, - /// upperValue: _upperValue, - /// min: 1.0, - /// max: 10.0, - /// divisions: 10, - /// onChanged: (double newLowerValue, double newUpperValue) { - /// setState(() { - /// _lowerValue = newLowerValue; - /// _upperValue = newUpperValue; - /// }); - /// }, - /// ) - /// ``` - /// - /// See also: - /// - /// * [onChangeStart] for a callback that is called when the user starts - /// changing the value. - /// * [onChangeEnd] for a callback that is called when the user stops - /// changing the value. - final RangeSliderCallback onChanged; - - /// Callback to invoke when the user starts dragging - /// - /// This callback shouldn't be used to update the RangeSlider values ([lowerValue] or [upperValue]) - /// (use [onChanged] for that), but rather to be notified when the user has started - /// selecting a new value by starting a drag. - /// - /// The values passed will be the last [lowerValue] and [upperValue] that the RangeSlider had before the - /// change began. - /// - /// ## Sample code - /// - /// ```dart - /// frs.RangeSlider( - /// lowerValue: _lowerValue, - /// upperValue: _upperValue, - /// min: 1.0, - /// max: 10.0, - /// divisions: 10, - /// onChanged: (double newLowerValue, double newUpperValue) { - /// setState(() { - /// _lowerValue = newLowerValue; - /// _upperValue = newUpperValue; - /// }); - /// }, - /// onChangeStart: (double startLowerValue, double startUpperValue) { - /// print('Started change with $startLowerValue and $startUpperValue'); - /// }, - /// ) - /// ``` - /// - /// See also: - /// - /// * [onChangeEnd] for a callback that is called when the value change is - /// complete. - final RangeSliderCallback onChangeStart; - - /// Callback to invoke when the user ends the dragging - /// - /// This callback shouldn't be used to update the RangeSlider values ([lowerValue] or [upperValue]) - /// (use [onChanged] for that), but rather to know when the user has completed - /// selecting a new range of values [lowerValue] and [upperValue] - /// by ending a drag. - /// - /// ## Sample code - /// - /// ```dart - /// frs.RangeSlider( - /// lowerValue: _lowerValue, - /// upperValue: _upperValue, - /// min: 1.0, - /// max: 10.0, - /// divisions: 10, - /// onChanged: (double newLowerValue, double newUpperValue) { - /// setState(() { - /// _lowerValue = newLowerValue; - /// _upperValue = newUpperValue; - /// }); - /// }, - /// onChangeEnd: (double newLowerValue, double newUpperValue) { - /// print('Ended change with $newLowerValue and $newUpperValue'); - /// }, - /// ) - /// ``` - /// - /// See also: - /// - /// * [onChangeStart] for a callback that is called when a value change - /// begins. - final RangeSliderCallback onChangeEnd; - - /// - /// Allows thumbs to overlap (default: false) - /// - final bool allowThumbOverlap; - - @override - _RangeSliderState createState() => _RangeSliderState(); - - @override - void debugFillProperties(DiagnosticPropertiesBuilder properties) { - super.debugFillProperties(properties); - properties.add(DoubleProperty('lowerValue', lowerValue)); - properties.add(DoubleProperty('upperValue', upperValue)); - properties.add(DoubleProperty('min', min)); - properties.add(DoubleProperty('max', max)); - properties.add(IntProperty('divisions', divisions)); - } -} - -class _RangeSliderState extends State - with TickerProviderStateMixin { - static const Duration kEnableAnimationDuration = - const Duration(milliseconds: 75); - static const Duration kValueIndicatorAnimationDuration = - const Duration(milliseconds: 100); - - // Animation controller that is run when the overlay (a.k.a radial reaction) - // is shown in response to user interaction. - AnimationController overlayController; - - // Animation controller that is run when enabling/disabling the slider. - AnimationController enableController; - - // Animation controller that is run when the value indicator is being shown - // or hidden. - AnimationController valueIndicatorController; - - @override - void initState() { - super.initState(); - - // Initialize the animation controllers - overlayController = AnimationController( - duration: kRadialReactionDuration, - vsync: this, - ); - - enableController = AnimationController( - duration: kEnableAnimationDuration, - vsync: this, - ); - - valueIndicatorController = AnimationController( - duration: kValueIndicatorAnimationDuration, - vsync: this, - ); - - // Set the enableController value to active (1 if we are handling callback) - // or to inactive (0 otherwise) - enableController.value = widget.onChanged != null ? 1.0 : 0.0; - } - - @override - void dispose() { - // release the animation controllers - valueIndicatorController.dispose(); - enableController.dispose(); - overlayController.dispose(); - super.dispose(); - } - - // ------------------------------------------------- - // Returns a value between 0.0 and 1.0 - // given a value between min and max - // ------------------------------------------------- - double _unlerp(double value) { - assert(value <= widget.max); - assert(value >= widget.min); - return widget.max > widget.min - ? (value - widget.min) / (widget.max - widget.min) - : 0.0; - } - - // ------------------------------------------------- - // Returns the number, between min and max - // proportional to value, which must be - // between 0.0 and 1.0 - // ------------------------------------------------- - double lerp(double value) { - assert(value >= 0.0); - assert(value <= 1.0); - return value * (widget.max - widget.min) + widget.min; - } - - // ------------------------------------------------- - // Handling of any change applied to lowerValue - // and/or upperValue - // Invokes the corresponding callback - // ------------------------------------------------- - void _handleChanged(double lowerValue, double upperValue) { - if (widget.onChanged is RangeSliderCallback) { - widget.onChanged(lerp(lowerValue), lerp(upperValue)); - } - } - - void _handleChangeStart(double lowerValue, double upperValue) { - if (widget.onChangeStart is RangeSliderCallback) { - widget.onChangeStart(lerp(lowerValue), lerp(upperValue)); - } - } - - void _handleChangeEnd(double lowerValue, double upperValue) { - if (widget.onChangeEnd is RangeSliderCallback) { - widget.onChangeEnd(lerp(lowerValue), lerp(upperValue)); - } - } - - static const double _defaultTrackHeight = 2.0; - static const SliderTrackShape _defaultTrackShape = - RoundedRectSliderTrackShape(); - static const SliderTickMarkShape _defaultTickMarkShape = - RoundSliderTickMarkShape(); - static const SliderComponentShape _defaultOverlayShape = - RoundSliderOverlayShape(); - static const SliderComponentShape _defaultThumbShape = - RoundSliderThumbShape(); - static const SliderComponentShape _defaultValueIndicatorShape = - PaddleSliderValueIndicatorShape(); - static const ShowValueIndicator _defaultShowValueIndicator = - ShowValueIndicator.onlyForDiscrete; - - @override - Widget build(BuildContext context) { - final ThemeData theme = Theme.of(context); - SliderThemeData sliderTheme = SliderTheme.of(context); - - // - // Make sure the sliderTheme has all necessary pieces of information - // - sliderTheme = sliderTheme.copyWith( - trackHeight: sliderTheme.trackHeight ?? _defaultTrackHeight, - activeTrackColor: - sliderTheme.activeTrackColor ?? theme.colorScheme.primary, - inactiveTrackColor: sliderTheme.inactiveTrackColor ?? - theme.colorScheme.primary.withOpacity(0.24), - disabledActiveTrackColor: sliderTheme.disabledActiveTrackColor ?? - theme.colorScheme.onSurface.withOpacity(0.32), - disabledInactiveTrackColor: sliderTheme.disabledInactiveTrackColor ?? - theme.colorScheme.onSurface.withOpacity(0.12), - activeTickMarkColor: sliderTheme.activeTickMarkColor ?? - theme.colorScheme.onPrimary.withOpacity(0.54), - inactiveTickMarkColor: sliderTheme.inactiveTickMarkColor ?? - theme.colorScheme.primary.withOpacity(0.54), - disabledActiveTickMarkColor: sliderTheme.disabledActiveTickMarkColor ?? - theme.colorScheme.onPrimary.withOpacity(0.12), - disabledInactiveTickMarkColor: - sliderTheme.disabledInactiveTickMarkColor ?? - theme.colorScheme.onSurface.withOpacity(0.12), - thumbColor: sliderTheme.thumbColor ?? theme.colorScheme.primary, - disabledThumbColor: sliderTheme.disabledThumbColor ?? - theme.colorScheme.onSurface.withOpacity(0.38), - overlayColor: sliderTheme.overlayColor ?? - theme.colorScheme.primary.withOpacity(0.12), - valueIndicatorColor: - sliderTheme.valueIndicatorColor ?? theme.colorScheme.primary, - trackShape: sliderTheme.trackShape ?? _defaultTrackShape, - tickMarkShape: sliderTheme.tickMarkShape ?? _defaultTickMarkShape, - thumbShape: sliderTheme.thumbShape ?? _defaultThumbShape, - overlayShape: sliderTheme.overlayShape ?? _defaultOverlayShape, - valueIndicatorShape: - sliderTheme.valueIndicatorShape ?? _defaultValueIndicatorShape, - showValueIndicator: - sliderTheme.showValueIndicator ?? _defaultShowValueIndicator, - valueIndicatorTextStyle: sliderTheme.valueIndicatorTextStyle ?? - theme.textTheme.bodyText2.copyWith( - color: theme.colorScheme.onPrimary, - ), - ); - - return Padding( - padding: EdgeInsets.symmetric(horizontal: 8), - child: _RangeSliderRenderObjectWidget( - lowerValue: _unlerp(widget.lowerValue), - upperValue: _unlerp(widget.upperValue), - divisions: widget.divisions, - onChanged: (widget.onChanged != null) ? _handleChanged : null, - onChangeStart: _handleChangeStart, - onChangeEnd: _handleChangeEnd, - sliderTheme: sliderTheme, - state: this, - showValueIndicator: widget.showValueIndicator, - valueIndicatorMaxDecimals: widget.valueIndicatorMaxDecimals, - touchRadiusExpansionRatio: widget.touchRadiusExpansionRatio, - valueIndicatorFormatter: widget.valueIndicatorFormatter, - allowThumbOverlap: widget.allowThumbOverlap, - )); - } -} - -// ------------------------------------------------------ -// Widget that instantiates a RenderObject -// ------------------------------------------------------ -class _RangeSliderRenderObjectWidget extends LeafRenderObjectWidget { - const _RangeSliderRenderObjectWidget({ - Key key, - this.lowerValue, - this.upperValue, - this.divisions, - this.onChanged, - this.onChangeStart, + const RangeSlider({ + super.key, + required this.min, + required this.max, + required this.lowerValue, + required this.upperValue, + required this.onChanged, this.onChangeEnd, - this.sliderTheme, - this.state, - this.showValueIndicator, - this.valueIndicatorMaxDecimals, - this.touchRadiusExpansionRatio, - this.valueIndicatorFormatter, - this.allowThumbOverlap, - }) : super(key: key); - - final _RangeSliderState state; - final RangeSliderCallback onChanged; - final RangeSliderCallback onChangeStart; - final RangeSliderCallback onChangeEnd; - final SliderThemeData sliderTheme; - final double lowerValue; - final double upperValue; - final int divisions; - final bool showValueIndicator; - final int valueIndicatorMaxDecimals; - final double touchRadiusExpansionRatio; - final RangeSliderValueIndicatorFormatter valueIndicatorFormatter; - final bool allowThumbOverlap; + this.showValueIndicator = false, + }); @override - RenderObject createRenderObject(BuildContext context) { - return _RenderRangeSlider( - lowerValue: lowerValue, - upperValue: upperValue, - divisions: divisions, - onChanged: onChanged, - onChangeStart: onChangeStart, - onChangeEnd: onChangeEnd, - sliderTheme: sliderTheme, - state: state, - showValueIndicator: showValueIndicator, - valueIndicatorMaxDecimals: valueIndicatorMaxDecimals, - touchRadiusExpansionRatio: touchRadiusExpansionRatio, - valueIndicatorFormatter: valueIndicatorFormatter, - allowThumbOverlap: allowThumbOverlap, + m.Widget build(m.BuildContext context) { + final values = m.RangeValues( + lowerValue.clamp(min, max), + upperValue.clamp(min, max), ); - } - - @override - void updateRenderObject( - BuildContext context, _RenderRangeSlider renderObject) { - renderObject - ..lowerValue = lowerValue - ..upperValue = upperValue - ..divisions = divisions - ..onChanged = onChanged - ..onChangeStart = onChangeStart - ..onChangeEnd = onChangeEnd - ..sliderTheme = sliderTheme - ..showValueIndicator = showValueIndicator - ..valueIndicatorMaxDecimals = valueIndicatorMaxDecimals - ..touchRadiusExpansionRatio = touchRadiusExpansionRatio - ..valueIndicatorFormatter = valueIndicatorFormatter - ..allowThumbOverlap = allowThumbOverlap; - } -} - -// ------------------------------------------------------ -// Class that renders the RangeSlider as a pure drawing -// in a Canvas and allows the user to interact. -// ------------------------------------------------------ -class _RenderRangeSlider extends RenderBox { - _RenderRangeSlider({ - double lowerValue, - double upperValue, - int divisions, - RangeSliderCallback onChanged, - RangeSliderCallback onChangeStart, - RangeSliderCallback onChangeEnd, - SliderThemeData sliderTheme, - @required this.state, - bool showValueIndicator, - int valueIndicatorMaxDecimals, - double touchRadiusExpansionRatio, - RangeSliderValueIndicatorFormatter valueIndicatorFormatter, - bool allowThumbOverlap, - }) { - // Initialization - this.divisions = divisions; - this.lowerValue = lowerValue; - this.upperValue = upperValue; - this.onChanged = onChanged; - this.onChangeStart = onChangeStart; - this.onChangeEnd = onChangeEnd; - this.sliderTheme = sliderTheme; - this.showValueIndicator = showValueIndicator; - this.valueIndicatorMaxDecimals = valueIndicatorMaxDecimals; - this._touchRadiusExpansionRatio = touchRadiusExpansionRatio; - this.valueIndicatorFormatter = valueIndicatorFormatter; - this.allowThumbOverlap = allowThumbOverlap; - - // Initialization of the Drag Gesture Recognizer - _drag = HorizontalDragGestureRecognizer() - ..onStart = _handleDragStart - ..onEnd = _handleDragEnd - ..onUpdate = _handleDragUpdate - ..onCancel = _handleDragCancel; - - // Initialization of the overlay animation - _overlayAnimation = CurvedAnimation( - parent: state.overlayController, - curve: Curves.fastOutSlowIn, - ); - - // Initialization of the enable/disable animation - _enableAnimation = CurvedAnimation( - parent: state.enableController, - curve: Curves.easeInOut, - ); - - // Initialization of the animation to show the value indicator - _valueIndicatorAnimation = CurvedAnimation( - parent: state.valueIndicatorController, - curve: Curves.fastOutSlowIn, - ); - } - - // ------------------------------------------------- - // Global Constants. See Material.io - // ------------------------------------------------- - static const double _overlayRadius = 16.0; - static const double _overlayDiameter = _overlayRadius; - static const double _preferredTrackWidth = 144.0; - static const double _preferredTotalWidth = - _preferredTrackWidth + 2 * _overlayDiameter; - static final Tween _overlayRadiusTween = - Tween(begin: 0.0, end: _overlayRadius); - - // ------------------------------------------------- - // Instance specific properties - // ------------------------------------------------- - _RangeSliderState state; - RangeSliderCallback _onChanged; - RangeSliderCallback _onChangeStart; - RangeSliderCallback _onChangeEnd; - double _lowerValue; - double _upperValue; - int _divisions; - Animation _overlayAnimation; - Animation _enableAnimation; - Animation _valueIndicatorAnimation; - HorizontalDragGestureRecognizer _drag; - SliderThemeData _sliderTheme; - bool _showValueIndicator; - double _touchRadiusExpansionRatio; - int _valueIndicatorMaxDecimals; - final TextPainter _valueIndicatorPainter = TextPainter(); - RangeSliderValueIndicatorFormatter _valueIndicatorFormatter; - bool _allowThumbOverlap; - - // -------------------------------------------------- - // Setters - // Setters are necessary since we will need - // to update the values via the - // _RangeSliderRenderObjectWidget.updateRenderObject - // -------------------------------------------------- - set lowerValue(double value) { - assert(value != null && value >= 0.0 && value <= 1.0); - _lowerValue = _discretize(value); - } - - set upperValue(double value) { - assert(value != null && value >= 0.0 && value <= 1.0); - _upperValue = _discretize(value); - } - - set touchRadiusExpansionRatio(double value) { - assert(value != null && value >= 0.1); - _touchRadiusExpansionRatio = value; - } - - set divisions(int value) { - _divisions = value; - - // If we change the value, we need to repaint - markNeedsPaint(); - } - - set onChanged(RangeSliderCallback value) { - // If no changes were applied, skip - if (_onChanged == value) { - return; - } - - // Were we handling callbacks? - final bool wasInteractive = isInteractive; - - // Record the new callback - _onChanged = value; - - // Did we change the callbacks - if (wasInteractive != isInteractive) { - if (isInteractive) { - state.enableController.forward(); - } else { - state.enableController.reverse(); - } - - // As we apply a change, we need to redraw - markNeedsPaint(); - } - } - set onChangeStart(RangeSliderCallback value) { - _onChangeStart = value; - } - - set onChangeEnd(RangeSliderCallback value) { - _onChangeEnd = value; - } - - set sliderTheme(SliderThemeData value) { - assert(value != null); - _sliderTheme = value; - - // If we change the theme, we need to repaint - markNeedsPaint(); - } - - set showValueIndicator(bool value) { - // Skip if no changes - if (value == _showValueIndicator) { - return; - } - _showValueIndicator = value; - - // Force a repaint of the value indicator - _updateValueIndicatorPainter(); - } - - set valueIndicatorMaxDecimals(int value) { - // Skip if no changes - if (value == _valueIndicatorMaxDecimals) { - return; - } - - _valueIndicatorMaxDecimals = value; - - // Force a repaint - markNeedsPaint(); - } - - set valueIndicatorFormatter(RangeSliderValueIndicatorFormatter formatter) { - _valueIndicatorFormatter = formatter; - } - - set allowThumbOverlap(bool value) { - _allowThumbOverlap = value; - } - - // ---------------------------------------------- - // Are we handling callbacks? - // ---------------------------------------------- - bool get isInteractive => (_onChanged != null); - - // ---------------------------------------------- - // Obtain the radius of a thumb from the Theme - // ---------------------------------------------- - double get _thumbRadius { - final Size preferredSize = _sliderTheme.thumbShape - .getPreferredSize(isInteractive, (_divisions != null)); - return math.max(preferredSize.width, preferredSize.height) / 2.0; - } - - // ---------------------------------------------- - // Get from the SliderTheme the right to show - // the value indicator unless said otherwise - // ---------------------------------------------- - bool get showValueIndicator { - bool showValueIndicator; - switch (_sliderTheme.showValueIndicator) { - case ShowValueIndicator.onlyForDiscrete: - showValueIndicator = (_divisions != null); - break; - case ShowValueIndicator.onlyForContinuous: - showValueIndicator = (_divisions == null); - break; - case ShowValueIndicator.always: - showValueIndicator = true; - break; - case ShowValueIndicator.never: - showValueIndicator = false; - break; - } - return (showValueIndicator && _showValueIndicator); - } - - // -------------------------------------------- - // Update the value indicator painter, based - // on the SliderTheme - // -------------------------------------------- - void _updateValueIndicatorPainter() { - if (_showValueIndicator != false) { - _valueIndicatorPainter - ..text = TextSpan(style: _sliderTheme.valueIndicatorTextStyle, text: '') - ..textDirection = TextDirection.ltr - ..layout(); - } else { - _valueIndicatorPainter.text = null; - } - - // Force a re-layout - markNeedsLayout(); - } - - // -------------------------------------------- - // We need to repaint - // we are dragging and changing the activation - // -------------------------------------------- - @override - void attach(PipelineOwner owner) { - super.attach(owner); - _overlayAnimation.addListener(markNeedsPaint); - _enableAnimation.addListener(markNeedsPaint); - _valueIndicatorAnimation.addListener(markNeedsPaint); - } - - @override - void detach() { - _valueIndicatorAnimation.removeListener(markNeedsPaint); - _enableAnimation.removeListener(markNeedsPaint); - _overlayAnimation.removeListener(markNeedsPaint); - super.detach(); - } - - // ------------------------------------------- - // The size of this RenderBox is defined by - // the parent - // ------------------------------------------- - @override - bool get sizedByParent => true; - - // ------------------------------------------- - // Update of the RenderBox size using only - // the constraints. - // Compulsory when sizedByParent returns true - // ------------------------------------------- - @override - void performResize() { - size = Size( - constraints.hasBoundedWidth ? constraints.maxWidth : _preferredTotalWidth, - constraints.hasBoundedHeight - ? constraints.maxHeight - : _overlayDiameter * 2.0, + return m.SliderTheme( + data: m.Theme.of(context).sliderTheme.copyWith( + showValueIndicator: showValueIndicator + ? m.ShowValueIndicator.onDrag + : m.ShowValueIndicator.never, + ), + child: m.RangeSlider( + min: min, + max: max, + values: values, + labels: showValueIndicator + ? m.RangeLabels( + values.start.toStringAsFixed(1), + values.end.toStringAsFixed(1), + ) + : null, + onChanged: (v) => onChanged(v.start, v.end), + onChangeEnd: + onChangeEnd == null ? null : (v) => onChangeEnd!(v.start, v.end), + ), ); } - - // ------------------------------------------- - // Mandatory if we want any interaction - // ------------------------------------------- - @override - bool hitTestSelf(Offset position) => true; - - // ------------------------------------------- - // Computation of the min,max intrinsic - // width and height of the box - // ------------------------------------------- - @override - double computeMinIntrinsicWidth(double height) { - return 2 * - math.max( - _overlayDiameter, - _sliderTheme.thumbShape - .getPreferredSize(true, (_divisions != null)) - .width); - } - - @override - double computeMaxIntrinsicWidth(double height) { - return _preferredTotalWidth; - } - - @override - double computeMinIntrinsicHeight(double width) { - return math.max( - _overlayDiameter, - _sliderTheme.thumbShape - .getPreferredSize(true, (_divisions != null)) - .height); - } - - @override - double computeMaxIntrinsicHeight(double width) { - return math.max( - _overlayDiameter, - _sliderTheme.thumbShape - .getPreferredSize(true, (_divisions != null)) - .height); - } - - // --------------------------------------------- - // Paint the Range Slider - // --------------------------------------------- - @override - void paint(PaintingContext context, Offset offset) { - final Canvas canvas = context.canvas; - - _paintTrack(canvas, offset); - _paintOverlay(canvas); - if (_divisions != null) { - _paintTickMarks(canvas, offset); - } - _paintValueIndicator(context); - _paintThumbs(context, offset); - } - - // --------------------------------------------- - // Paint the track - // --------------------------------------------- - double _trackLength; - double _trackVerticalCenter; - double _trackLeft; - double _trackTop; - double _trackBottom; - double _trackRight; - double _thumbLeftPosition; - double _thumbRightPosition; - - void _paintTrack(Canvas canvas, Offset offset) { - final double trackRadius = _sliderTheme.trackHeight / 2.0; - - _trackLength = size.width - 2 * _overlayDiameter; - _trackVerticalCenter = offset.dy + (size.height) / 2.0; - _trackLeft = offset.dx + _overlayDiameter; - _trackTop = _trackVerticalCenter - trackRadius; - _trackBottom = _trackVerticalCenter + trackRadius; - _trackRight = _trackLeft + _trackLength; - - // Compute the position of the thumbs - _thumbLeftPosition = _trackLeft + _lowerValue * _trackLength; - _thumbRightPosition = _trackLeft + _upperValue * _trackLength; - - // Define the paint colors for both unselected and selected track segments - Paint unselectedTrackPaint = Paint() - ..color = isInteractive - ? _sliderTheme.inactiveTrackColor - : _sliderTheme.disabledInactiveTrackColor; - Paint selectedTrackPaint = Paint() - ..color = isInteractive - ? _sliderTheme.activeTrackColor - : _sliderTheme.disabledActiveTrackColor; - - // Draw the track - if (_lowerValue > 0.0) { - // Draw the unselected left range - canvas.drawRect( - Rect.fromLTRB( - _trackLeft, _trackTop, _thumbLeftPosition, _trackBottom), - unselectedTrackPaint); - } - // Draw the selected range - canvas.drawRect( - Rect.fromLTRB( - _thumbLeftPosition, _trackTop, _thumbRightPosition, _trackBottom), - selectedTrackPaint); - - if (_upperValue < 1.0) { - // Draw the unselected right range - canvas.drawRect( - Rect.fromLTRB( - _thumbRightPosition, _trackTop, _trackRight, _trackBottom), - unselectedTrackPaint); - } - } - - // --------------------------------------------- - // Paint the overlay - // --------------------------------------------- - void _paintOverlay(Canvas canvas) { - if (!_overlayAnimation.isDismissed && - _previousActiveThumb != _ActiveThumb.none) { - final Paint overlayPaint = Paint()..color = _sliderTheme.overlayColor; - final double radius = _overlayRadiusTween.evaluate(_overlayAnimation); - - // We need to find the position of the overlay % active thumb - Offset center; - if (_previousActiveThumb == _ActiveThumb.lowerThumb) { - center = Offset(_thumbLeftPosition, _trackVerticalCenter); - } else { - center = Offset(_thumbRightPosition, _trackVerticalCenter); - } - - canvas.drawCircle(center, radius, overlayPaint); - } - } - - // --------------------------------------------- - // Paint the tick marks - // --------------------------------------------- - void _paintTickMarks(Canvas canvas, Offset offset) { - final double trackWidth = _trackRight - _trackLeft; - final double dx = (trackWidth - _sliderTheme.trackHeight) / _divisions; - final double _tickRadius = (_sliderTheme.trackHeight / 2.0).clamp(1.0, 2.0); - final double _tickOffset = (_sliderTheme.trackHeight - _tickRadius) / 2.0; - - for (int i = 0; i <= _divisions; i++) { - final double left = _trackLeft + i * dx; - final Offset center = Offset( - left + _tickOffset, - _trackTop + - _tickOffset + - (_sliderTheme.trackHeight > 2.0 ? 1.0 : 0.0)); - - canvas.drawCircle( - center, - _tickRadius, - Paint() - ..color = isInteractive - ? _sliderTheme.activeTickMarkColor - : _sliderTheme.disabledActiveTickMarkColor); - } - } - - // --------------------------------------------- - // Paint the thumbs - // --------------------------------------------- - Rect _thumbLowerRect; - Rect _thumbUpperRect; - - void _paintThumbs(PaintingContext context, Offset offset) { - final Offset thumbLowerCenter = - Offset(_thumbLeftPosition, _trackVerticalCenter); - final Offset thumbUpperCenter = - Offset(_thumbRightPosition, _trackVerticalCenter); - final double thumbRadius = _thumbRadius; - - _thumbLowerRect = - Rect.fromCircle(center: thumbLowerCenter - offset, radius: thumbRadius); - _thumbUpperRect = - Rect.fromCircle(center: thumbUpperCenter - offset, radius: thumbRadius); - - // Paint the thumbs, via the Theme - _sliderTheme.thumbShape.paint(context, thumbLowerCenter, - isDiscrete: (_divisions != null), - parentBox: this, - sliderTheme: _sliderTheme, - value: _lowerValue, - enableAnimation: _enableAnimation, - activationAnimation: _valueIndicatorAnimation, - labelPainter: _valueIndicatorPainter, - textDirection: TextDirection.ltr, - textScaleFactor: 1.0, - sizeWithOverflow: Size(thumbRadius, thumbRadius)); - - _sliderTheme.thumbShape.paint(context, thumbUpperCenter, - isDiscrete: (_divisions != null), - parentBox: this, - sliderTheme: _sliderTheme, - value: _upperValue, - enableAnimation: _enableAnimation, - activationAnimation: _valueIndicatorAnimation, - labelPainter: _valueIndicatorPainter, - textDirection: TextDirection.ltr, - textScaleFactor: 1.0, - sizeWithOverflow: Size(thumbRadius, thumbRadius)); - } - - // --------------------------------------------- - // Paint the value indicator - // --------------------------------------------- - void _paintValueIndicator(PaintingContext context) { - if (isInteractive && - _showValueIndicator && - _previousActiveThumb != _ActiveThumb.none) { - if (_valueIndicatorAnimation.status != AnimationStatus.dismissed && - showValueIndicator) { - // We need to find the position of the value indicator % active thumb - // as well as the value to be displayed - Offset thumbCenter; - double value; - String textValue; - int index = 0; - - if (_previousActiveThumb == _ActiveThumb.lowerThumb) { - thumbCenter = Offset(_thumbLeftPosition, _trackVerticalCenter); - value = _lowerValue; - } else { - thumbCenter = Offset(_thumbRightPosition, _trackVerticalCenter); - value = _upperValue; - index = 1; - } - - // Adapt the value to be displayed to the max number of decimals - // as well as convert it to the initial range (min, max) - value = state.lerp(value); - - // Invoke the external value indicator formatter, if any and valid - if (_valueIndicatorFormatter is RangeSliderValueIndicatorFormatter) { - try { - textValue = _valueIndicatorFormatter(index, value); - } catch (_) {} - } - textValue = - textValue ?? value.toStringAsFixed(_valueIndicatorMaxDecimals); - - // Adapt the value indicator with the active thumb value - _valueIndicatorPainter - ..text = TextSpan( - style: _sliderTheme.valueIndicatorTextStyle, - text: textValue, - ) - ..layout(); - - // Ask the SliderTheme to paint the valueIndicator - _sliderTheme.valueIndicatorShape.paint(context, thumbCenter, - activationAnimation: _valueIndicatorAnimation, - enableAnimation: _enableAnimation, - isDiscrete: (_divisions != null), - labelPainter: _valueIndicatorPainter, - parentBox: this, - sliderTheme: _sliderTheme, - value: value, - textDirection: TextDirection.ltr, - textScaleFactor: 1.0, - sizeWithOverflow: Size(_thumbRadius, _thumbRadius)); - } - } - } - - // --------------------------------------------- - // Drag related routines - // --------------------------------------------- - double _currentDragValue = 0.0; - double _minDragValue; - double _maxDragValue; - - // ------------------------------------------- - // When we start dragging, we need to - // memorize the initial position of the - // pointer, relative to the track. - // ------------------------------------------- - void _handleDragStart(DragStartDetails details) { - _currentDragValue = _getValueFromGlobalPosition(details.globalPosition); - - // As we are starting to drag, let's invoke the corresponding callback - _onChangeStart(_lowerValue, _upperValue); - - // Show the overlay - state.overlayController.forward(); - - // Show the value indicator - if (showValueIndicator) { - state.valueIndicatorController.forward(); - } - } - - // ------------------------------------------- - // When we are dragging, we need to - // consider the delta between the initial - // pointer position and the current and - // compute the new position of the thumb. - // Then, we call the handler of a value change - // ------------------------------------------- - void _handleDragUpdate(DragUpdateDetails details) { - final double valueDelta = details.primaryDelta / _trackLength; - _currentDragValue += valueDelta; - - // we need to limit the movement to the track - _onRangeChanged(_currentDragValue.clamp(_minDragValue, _maxDragValue)); - } - - // ------------------------------------------- - // End or Cancellation of the drag - // ------------------------------------------- - void _handleDragEnd(DragEndDetails details) { - _handleDragCancel(); - } - - void _handleDragCancel() { - _previousActiveThumb = _activeThumb; - _activeThumb = _ActiveThumb.none; - _currentDragValue = 0.0; - - // As we have finished with the drag, let's invoke - // the appropriate callback - _onChangeEnd(_lowerValue, _upperValue); - - // Hide the overlay - state.overlayController.reverse(); - - // Hide the value indicator - if (showValueIndicator) { - state.valueIndicatorController.reverse(); - } - } - - // ---------------------------------------------- - // Handling of a change in the Range selection - // ---------------------------------------------- - void _onRangeChanged(double value) { - // If there are divisions, we need to stick to one - value = _discretize(value); - - if (_activeThumb == _ActiveThumb.lowerThumb) { - _lowerValue = value; - } else { - _upperValue = value; - } - - // Invoke the appropriate callback during the drag - _onChanged(_lowerValue, _upperValue); - - // Force a repaint - markNeedsPaint(); - } - - // ---------------------------------------------- - // If there are divisions, values should be - // aligned to divisions - // ---------------------------------------------- - double _discretize(double value) { - if (_divisions != null) { - value = (value * _divisions).round() / _divisions; - } - return value; - } - - // ---------------------------------------------- - // Position helper. - // Translates the Pointer global position to - // a percentage of the track length - // ---------------------------------------------- - double _getValueFromGlobalPosition(Offset globalPosition) { - final double visualPosition = - (globalToLocal(globalPosition).dx - _overlayDiameter) / _trackLength; - - return visualPosition; - } - - // ---------------------------------------------- - // Event Handling - // We need to validate that the pointer hits - // a thumb before accepting to initiate a Drag. - // ---------------------------------------------- - @override - void handleEvent(PointerEvent event, BoxHitTestEntry entry) { - if (event is PointerDownEvent && isInteractive) { - _validateActiveThumb(entry.localPosition); - - // If a thumb is active, initiates the GestureDrag - if (_activeThumb != _ActiveThumb.none) { - _drag.addPointer(event); - - // Force the event related to a drag start - _handleDragStart(DragStartDetails(globalPosition: event.position)); - } - } - } - - // ---------------------------------------------- - // Determine whether the user presses a thumb - // If yes, activate the thumb - // ---------------------------------------------- - _ActiveThumb _activeThumb = _ActiveThumb.none; - _ActiveThumb _previousActiveThumb = _ActiveThumb.none; - - _validateActiveThumb(Offset position) { - var _thumbLowerExpandedRect = Rect.fromCircle( - center: _thumbLowerRect.centerLeft, - radius: _thumbRadius * _touchRadiusExpansionRatio); - var _thumbUpperExpandedRect = Rect.fromCircle( - center: _thumbUpperRect.centerRight, - radius: _thumbRadius * _touchRadiusExpansionRatio); - double calculatedDivisionOffset = (_divisions != null) - ? _discretize(1.0 / _divisions) - : (_thumbRadius * 2.0) / _trackLength; - double divisionOffset = _allowThumbOverlap ? 0.0 : calculatedDivisionOffset; - - if (_thumbLowerExpandedRect.contains(position)) { - _activeThumb = _ActiveThumb.lowerThumb; - _minDragValue = 0.0; - _maxDragValue = _discretize(_upperValue - divisionOffset); - } else if (_thumbUpperExpandedRect.contains(position)) { - _activeThumb = _ActiveThumb.upperThumb; - _minDragValue = _discretize(_lowerValue + divisionOffset); - _maxDragValue = 1.0; - } else { - _activeThumb = _ActiveThumb.none; - } - _previousActiveThumb = _activeThumb; - } -} - -enum _ActiveThumb { - // no thumb is currently active - none, - // the lowerThumb is active - lowerThumb, - // the upperThumb is active - upperThumb, } diff --git a/lib/recorder_bottom_sheet.dart b/lib/recorder_bottom_sheet.dart index 8d841c1..5d43ca5 100644 --- a/lib/recorder_bottom_sheet.dart +++ b/lib/recorder_bottom_sheet.dart @@ -1,587 +1,165 @@ import 'package:flutter/material.dart'; -import 'package:flutter_flux/flutter_flux.dart'; -import 'package:sound/looper.dart'; -import 'package:sound/utils.dart'; -import 'recorder_store.dart'; - -class SkipIcon extends StatelessWidget { - final int number; - final bool direction; - final Function onPressed; - - SkipIcon({this.number, this.direction, this.onPressed}); - - @override - Widget build(BuildContext context) { - var text = new RichText( - text: new TextSpan( - // Note: Styles for TextSpans must be explicitly defined. - // Child text spans will inherit styles from parent - style: new TextStyle( - fontSize: 15.0, - color: Colors.black, - ), - children: [ - new TextSpan( - text: (direction) ? '+' : "-", - style: new TextStyle(fontWeight: FontWeight.bold)), - new TextSpan(text: number.toString()), - ], - ), - ); - - return TextButton( - child: Row( - mainAxisSize: MainAxisSize.min, - children: [ - Icon((direction) ? Icons.add : Icons.remove, - size: 15, - color: Theme.of(context).primaryTextTheme.subtitle2.color), - SizedBox(width: 5), // give the width that you desire - Text( - number.toString(), - style: Theme.of(context).primaryTextTheme.subtitle2, - ) - ], - ), - onPressed: onPressed, - ); - - return TextButton.icon( - icon: Icon((direction) ? Icons.add : Icons.remove, - size: 15, color: Colors.black), - label: Text( - number.toString(), - style: - Theme.of(context).textTheme.button.copyWith(color: Colors.black), - ), - onPressed: onPressed); - // return TextButton(onPressed: onPressed, child: text); - } +import 'package:provider/provider.dart'; - // TextButton( - // onPressed: onPressed, - // child: Stack( - // children: [ - // new IconButton( - // icon: new Icon( - // (direction) ? Icons.add : Icons.remove, - // size: 15, - // ), - // onPressed: () {}, - // ), - // // new Positioned( - // // top 5.5, - // // right: 5.0, - // // child: new Center( - // // child: new Text( - // // this.number.toString(), - // // style: - // // new TextStyle(fontSize: 11.0, fontWeight: FontWeight.w500), - // // ), - // // )), - - // new Positioned( - // top: 15.0, - // right: 0, - // child: new Center( - // child: new Text( - // this.number.toString(), - // style: new TextStyle( - // fontSize: 15.0, fontWeight: FontWeight.w500), - // ), - // )), - // ], - // )), - // ], - // )); - // } -} - -class Skipper extends StatefulWidget { - final Color color; - Skipper(this.color, {Key key}) : super(key: key); - - @override - _SkipperState createState() => _SkipperState(); -} - -class _SkipperState extends State with StoreWatcherMixin { - PlayerPositionStore playerPositionStore; - - @override - void initState() { - super.initState(); - playerPositionStore = listenToStore(playerPositionStoreToken); - } - - skip(int seconds) { - Duration current = playerPositionStore.position; - Duration skipToPos = current + Duration(seconds: seconds); - if (skipToPos.isNegative) { - skipToPos = Duration(seconds: 0); - } - skipTo(skipToPos); - } - - @override - Widget build(BuildContext context) { - // TODO: implement build - - var children = [ - SkipIcon( - number: 30, - direction: true, - onPressed: () { - skip(30); - }), - SkipIcon( - number: 10, - direction: true, - onPressed: () { - skip(10); - }), - SkipIcon( - number: 10, - direction: false, - onPressed: () { - skip(-10); - }), - SkipIcon( - number: 30, - direction: false, - onPressed: () { - skip(-30); - }) - ]; - - return Container( - // decoration: BoxDecoration( - // color: widget.color, - // borderRadius: BorderRadius.vertical(top: Radius.circular(15)), - // boxShadow: [ - // BoxShadow( - // color: Theme.of(context).appBarTheme.color, - // spreadRadius: 2, - // blurRadius: 10, - // ), - // ]), - color: widget.color, - child: Row( - children: children, - mainAxisAlignment: MainAxisAlignment.spaceAround)); - } -} +import 'looper.dart'; +import 'recorder_store.dart'; -class BottomInfo extends StatefulWidget { +class BottomInfo extends StatelessWidget { final Color color; final double pad; final double height; - BottomInfo(this.color, {this.pad = 4, this.height = 50, Key key}) - : super(key: key); - - @override - _BottomInfoState createState() => _BottomInfoState(); -} - -class _BottomInfoState extends State - with StoreWatcherMixin { - RecorderBottomSheetStore recorderStore; - PlayerPositionStore playerPositionStore; - RecorderPositionStore recorderPositionStore; - - @override - void initState() { - super.initState(); - recorderStore = listenToStore(recorderBottomSheetStoreToken); - playerPositionStore = listenToStore(playerPositionStoreToken); - recorderPositionStore = listenToStore(recorderPositionStoreToken); - } - - _onButtonPress() { - stopAction(true); - } + const BottomInfo(this.color, {this.pad = 4, this.height = 50, super.key}); @override Widget build(BuildContext context) { - Duration elapsed; - Duration length; + final recorderStore = context.watch(); + final playerPositionStore = context.watch(); + final recorderPositionStore = context.watch(); - String _elapsed = ""; + Duration elapsed = Duration.zero; + Duration? length; - if (recorderStore.state == RecorderState.PAUSING || - recorderStore.state == RecorderState.PLAYING) { + if (recorderStore.state == RecorderState.pausing || + recorderStore.state == RecorderState.playing) { elapsed = playerPositionStore.position; - _elapsed = (elapsed.inMilliseconds / 1000).toStringAsFixed(1); - if (recorderStore.currentLength != null) { - length = recorderStore.currentLength; - } - } else if (recorderStore.state == RecorderState.RECORDING) { + length = recorderStore.currentLength; + } else if (recorderStore.state == RecorderState.recording) { elapsed = recorderPositionStore.position; - _elapsed = elapsed.inSeconds.toString(); } - String timeString = _elapsed; - - if (recorderStore.loopRange != null) { - timeString += " / ${recorderStore.loopRange.end.toStringAsFixed(1)}"; - } else if (length != null) { - timeString += " / " + (length.inMilliseconds / 1000).toStringAsFixed(1); + String timeString = (elapsed.inMilliseconds / 1000).toStringAsFixed(1); + if (length != null) { + timeString += ' / ${(length.inMilliseconds / 1000).toStringAsFixed(1)}'; } + timeString += ' s'; - timeString += " s"; - - IconData icon = Icons.stop; - - String state = (RecorderState.RECORDING == recorderStore.state) - ? "Recording" - : (recorderStore.state == RecorderState.PAUSING) - ? "Pausing" - : "Playing"; - - double pad = widget.pad; - List children = [ + final children = [ Padding( - child: IconButton(icon: Icon(icon), onPressed: _onButtonPress), - padding: EdgeInsets.only(left: pad)), + padding: EdgeInsets.only(left: pad), + child: IconButton(icon: const Icon(Icons.stop), onPressed: () => stopAction()), + ), ]; - var timeWidget = Padding( - child: Text(timeString), - padding: EdgeInsets.only(left: pad, right: pad)); + final timeWidget = Padding( + padding: EdgeInsets.only(left: pad, right: pad), + child: Text(timeString), + ); - if ((RecorderState.RECORDING == recorderStore.state)) { - children.add(Expanded(child: Text(state))); - children.add( - Padding(child: timeWidget, padding: EdgeInsets.only(right: pad))); + if (recorderStore.state == RecorderState.recording) { + children.add(const Expanded(child: Text('Recording'))); + children.add(Padding( + padding: EdgeInsets.only(right: pad), + child: timeWidget, + )); } else { - children.add( - Padding(child: timeWidget, padding: EdgeInsets.only(right: pad))); + children.add(Padding( + padding: EdgeInsets.only(right: pad), + child: timeWidget, + )); - /* - if (length != null) { - children.add(Expanded(flex: 1, child: _getSlider())); - } else { - */ - - if (recorderStore.state == RecorderState.PAUSING) { + if (recorderStore.state == RecorderState.pausing) { children.add(Padding( - padding: EdgeInsets.only(right: pad), - child: IconButton( - icon: Icon(Icons.play_arrow), - onPressed: () => resumeAction()))); + padding: EdgeInsets.only(right: pad), + child: IconButton( + icon: const Icon(Icons.play_arrow), + onPressed: () => resumeAction(), + ), + )); } else { children.add(Padding( - padding: EdgeInsets.only(right: pad), - child: IconButton( - icon: Icon(Icons.pause), onPressed: () => pauseAction()))); + padding: EdgeInsets.only(right: pad), + child: IconButton( + icon: const Icon(Icons.pause), + onPressed: () => pauseAction(), + ), + )); } } return Container( - // decoration: BoxDecoration( - // color: widget.color, - // borderRadius: BorderRadius.vertical(top: Radius.circular(15)), - // boxShadow: [ - // BoxShadow( - // color: Theme.of(context).appBarTheme.color, - // spreadRadius: 2, - // blurRadius: 10, - // ), - // ]), - color: widget.color, - height: widget.height, - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceAround, - children: children)); + color: color, + height: height, + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: children, + ), + ); } } -class PlayerSlider extends StatefulWidget { - PlayerSlider({Key key}) : super(key: key); - - @override - _PlayerSliderState createState() => _PlayerSliderState(); -} - -class _PlayerSliderState extends State - with StoreWatcherMixin { - RecorderBottomSheetStore store; - PlayerPositionStore playerPositionStore; - - @override - void initState() { - super.initState(); - store = listenToStore(recorderBottomSheetStoreToken); - playerPositionStore = listenToStore(playerPositionStoreToken); - } +class PlayerSlider extends StatelessWidget { + const PlayerSlider({super.key}); @override Widget build(BuildContext context) { - var value = (playerPositionStore.position.inMilliseconds / 1000).toDouble(); - if (value > (store.currentLength.inMilliseconds / 1000).toDouble()) { - value = (store.currentLength.inMilliseconds / 1000).toDouble(); - } - return Container( - height: 50, - child: Column(children: [ - Text("Player:"), - Expanded( - child: Slider( - min: 0.0, - max: store.currentLength == null - ? 0.0 - : (store.currentLength.inMilliseconds / 1000).toDouble(), - value: value, - onChanged: (value) { - print("on changed to $value"); - skipTo(Duration(milliseconds: (value * 1000).floor())); - }, - //activeColor: Colors.yellow, - )) - ])); + final store = context.watch(); + final playerPositionStore = context.watch(); + + final max = store.currentLength == null + ? 0.0 + : (store.currentLength!.inMilliseconds / 1000).toDouble(); + final value = (playerPositionStore.position.inMilliseconds / 1000).toDouble(); + + return SizedBox( + height: 50, + child: Slider( + min: 0.0, + max: max, + value: value.clamp(0.0, max == 0.0 ? 0.0 : max), + onChanged: (raw) { + skipTo(Duration(milliseconds: (raw * 1000).floor())); + }, + ), + ); } } -class RecorderBottomSheet extends StatefulWidget { - final bool showTitle; - final bool showSkipper; - final bool showRepeat; - - RecorderBottomSheet( - {this.showTitle = false, - this.showSkipper = true, - this.showRepeat = false, - Key key}) - : super(key: key); +class RecorderBottomSheet extends StatelessWidget { + const RecorderBottomSheet({super.key}); @override - _RecorderBottomSheetState createState() => _RecorderBottomSheetState(); -} - -class _RecorderBottomSheetState extends State - with - StoreWatcherMixin, - TickerProviderStateMixin, - WidgetsBindingObserver { - RecorderBottomSheetStore store; - double height; - - final double maxMinimizeHeight = 200; - final double bottomHeight = 60; - AnimationController _controller; - - Animation _slideAnimation; - Animation _scaleAnimation, _sheetScaleAnimation; - - bool minimized = true; - ActionSubscription sub, sub2; - - @override - void initState() { - super.initState(); - store = listenToStore(recorderBottomSheetStoreToken); - - WidgetsBinding.instance.addObserver(this); - final keyboardOpen = WidgetsBinding.instance.window.viewInsets.bottom > 0; - - height = maxMinimizeHeight; - - _controller = AnimationController( - value: 0.0, // TODO check this - vsync: this, - duration: Duration(milliseconds: 500)); - - _slideAnimation = Tween(begin: Offset(0, 0), end: Offset(0, 1.5)) - .animate(_controller); - - _sheetScaleAnimation = - Tween(begin: 1.0, end: -1.0).animate(_controller); - - sub = stopAction.listen((force) { - if (!minimized && (!store.isLooping || force)) { - animateForward(); - } - setState(() {}); - }); - } - - @override - void dispose() { - if (sub != null) { - sub.cancel(); - } - - if (sub2 != null) { - sub2.cancel(); - } - - if (_controller != null) { - _controller.dispose(); - } - WidgetsBinding.instance.removeObserver(this); - super.dispose(); - } - - void animateForward() { - setState(() { - minimized = true; - }); - - Navigator.of(context).pop(); - } - - void animateReverse() { - print("reverse"); - - setState(() { - minimized = false; - }); - - showDialog( - context: context, - useSafeArea: true, - barrierDismissible: false, - builder: (BuildContext context) { - return WillPopScope( - onWillPop: () async { - animateForward(); - return true; - }, - child: AlertDialog( - contentPadding: const EdgeInsets.all(0), - insetPadding: const EdgeInsets.all(8), - content: getControls( - minimized: false, - onMinimize: () { - animateForward(); - }))); - }); - - // Navigator.of(context) - // .push(MaterialPageRoute(builder: (BuildContext context) { - // return Scaffold( - // appBar: AppBar( - // leading: IconButton( - // icon: Icon(Icons.fullscreen_exit_sharp), - // onPressed: () { - // animateForward(); - // Navigator.of(context).pop(); - // }), - // title: const Text("Controls")), - // body: Container( - // alignment: Alignment.bottomCenter, - // child: getControls(minimized: false, onExpand: () {}), - // ), - // ); - // })); - } - - Widget getControls({bool minimized, Function onExpand, Function onMinimize}) { - if (store.state == RecorderState.STOP) - return Container(height: 0, width: 0); - - var showLooper = ((store.state == RecorderState.PLAYING || - store.state == RecorderState.PAUSING)); - Color color; - - if (store.state == RecorderState.PLAYING || - store.state == RecorderState.PAUSING) { - color = Theme.of(context).bottomAppBarColor; - } else if (store.state == RecorderState.RECORDING) { - color = Theme.of(context).accentColor; - } - - double width = MediaQuery.of(context).size.width; - - Looper looper = Looper(color, () { - // on - if (onMinimize != null) { - onMinimize(); - } - }, - enableMinimize: true, - enableRepeat: widget.showRepeat, - showTitle: widget.showTitle); - - BottomInfo info = BottomInfo(color); - - Widget controls; - - Skipper skipper; + Widget build(BuildContext context) { + final store = context.watch(); - if (widget.showSkipper) { - skipper = Skipper(color); + if (store.state == RecorderState.stop) { + return const SizedBox.shrink(); } - print("showLooper: $showLooper"); + final showLooper = store.state == RecorderState.playing || + store.state == RecorderState.pausing; + final color = showLooper + ? Theme.of(context).colorScheme.surfaceContainerHighest + : Theme.of(context).primaryColor; + final width = MediaQuery.of(context).size.width; if (showLooper) { - controls = GestureDetector( - onPanUpdate: (details) { - if (details.delta.dy < -5 && minimized) { - onExpand(); - } else if (details.delta.dy > 5 && !minimized) { - onMinimize(); - } - }, - child: Column( - mainAxisSize: MainAxisSize.min, - mainAxisAlignment: MainAxisAlignment.end, - children: [ - (!minimized) - ? Container( - color: Theme.of(context).bottomAppBarColor, - height: bottomHeight + - maxMinimizeHeight + - (widget.showTitle ? 30 : 0), - width: width, - child: Column(children: [ - Container( - child: Column(children: [ - SizedBox(height: 10), - looper, - SizedBox(height: 40), - PlayerSlider(), - (widget.showTitle - ? SizedBox(height: 30) - : Container()) - ])), - //Expanded(child: Container()), - ]), - ) - : Container(), - minimized - ? GestureDetector( - onTap: () {}, - child: Container( - height: 20, - width: width, - alignment: Alignment.topCenter, - color: Theme.of(context).bottomAppBarColor, - child: IconButton( - onPressed: onExpand, - icon: Icon(Icons.arrow_upward, size: 16)), - )) - : Container(), - info, - (skipper != null) - ? SizedBox(height: 10, child: Container(color: color)) - : Container(), - (skipper != null) ? skipper : Container() - ]), + return Container( + decoration: BoxDecoration( + color: Theme.of(context).colorScheme.surfaceContainerHighest, + borderRadius: const BorderRadius.all(Radius.circular(5)), + boxShadow: [ + BoxShadow( + color: Theme.of(context).appBarTheme.backgroundColor ?? Colors.black, + spreadRadius: 1, + blurRadius: 15, + ), + ], + ), + height: 300, + width: width, + child: Column(children: [ + const SizedBox(height: 10), + Looper(color), + const SizedBox(height: 50), + const Text('Player:'), + const PlayerSlider(), + const Expanded(child: SizedBox()), + BottomInfo(color), + ]), ); - } else { - controls = info; } - return controls; - } - - @override - Widget build(BuildContext context) { - if (!minimized) return Container(); - return getControls(minimized: true, onExpand: animateReverse); + return BottomInfo(color); } } diff --git a/lib/recorder_store.dart b/lib/recorder_store.dart index f17c8b9..423a538 100644 --- a/lib/recorder_store.dart +++ b/lib/recorder_store.dart @@ -1,445 +1,293 @@ +import 'dart:async'; +import 'dart:io'; + import 'package:audioplayers/audioplayers.dart'; +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart' show RangeValues; -import 'package:flutter_audio_recorder/flutter_audio_recorder.dart'; -import 'package:flutter_flux/flutter_flux.dart' show Store, Action, StoreToken; -// import 'package:video_player/video_player.dart'; -// import 'package:flutter_sound/flutter_sound.dart'; +import 'package:path/path.dart' as p; import 'package:path_provider/path_provider.dart'; -import 'package:permission_handler/permission_handler.dart'; -import 'package:sound/editor_store.dart'; -import 'package:sound/local_storage.dart'; -import 'package:sound/settings_store.dart'; -import 'package:sound/utils.dart'; +import 'package:record/record.dart'; import 'package:tuple/tuple.dart'; -import 'dart:async'; -import 'model.dart'; -import 'dart:io'; -import 'package:path/path.dart' as p; -//import 'package:audio_recorder/audio_recorder.dart'; - -// https://github.com/ZaraclaJ/audio_recorder -enum RecorderState { STOP, RECORDING, PLAYING, PAUSING } +import 'editor_store.dart'; +import 'model.dart'; -class PlayerPositionStore extends Store { - Duration _position = Duration(seconds: 0); +enum RecorderState { stop, recording, playing, pausing } +class PlayerPositionStore extends ChangeNotifier { + Duration _position = Duration.zero; Duration get position => _position; - PlayerPositionStore() { - changePlayerPosition.listen((event) { - _position = event; - trigger(); - }); + void changePlayerPosition(Duration value) { + _position = value; + notifyListeners(); } } -Action changePlayerPosition = Action(); -StoreToken playerPositionStoreToken = StoreToken(PlayerPositionStore()); - -class RecorderPositionStore extends Store { - Duration _position = Duration(seconds: 0); - +class RecorderPositionStore extends ChangeNotifier { + Duration _position = Duration.zero; Duration get position => _position; - RecorderPositionStore() { - changeRecorderPosition.listen((event) { - _position = event; - trigger(); - }); + void changeRecorderPosition(Duration value) { + _position = value; + notifyListeners(); } } -enum Repeat { all, off, one } - -Action changeRecorderPosition = Action(); -StoreToken recorderPositionStoreToken = StoreToken(RecorderPositionStore()); - -class RecorderBottomSheetStore extends Store { - //VideoPlayerController _controller; - RecordingStatus _currentStatus = RecordingStatus.Unset; - AudioPlayer _player; - AudioFormat _audioFormat = AudioFormat.WAV; - Repeat _repeat = Repeat.off; - - Recording _current; - FlutterAudioRecorder _recorder; - Duration _currentLength; // length of the current audio file +class RecorderBottomSheetStore extends ChangeNotifier { + final AudioPlayer _player = AudioPlayer(); + final AudioRecorder _recorder = AudioRecorder(); + final StreamController _recordingFinishedController = + StreamController.broadcast(); - // recorder - RecorderState _state = RecorderState.STOP; - String _currentPath; - - bool _minimized; - bool get minimized => _minimized; - - Duration _recordTime; - Duration get recordTime => _recordTime; - - RangeValues get loopRange => _audioFile == null ? null : _audioFile.loopRange; - - // getters - Repeat get repeat => _repeat; - RecorderState get state => _state; - RecordingStatus get status => _currentStatus; - Duration get currentLength => _currentLength; - String get stateString => _state.toString(); - String get currentPath => _currentPath; + Timer? _recordTicker; + DateTime? _recordStartedAt; + StreamSubscription? _positionSub; + StreamSubscription? _durationSub; + StreamSubscription? _completeSub; - AudioFile _audioFile; - AudioFile get currentAudioFile => _audioFile; + AudioFormat _audioFormat = AudioFormat.wav; AudioFormat get audioFormat => _audioFormat; - AudioPlayer get player => _player; - bool get isLooping => (loopRange != null); + RecorderState _state = RecorderState.stop; + RecorderState get state => _state; + String? _currentPath; + String? get currentPath => _currentPath; + Duration? _currentLength; + Duration? get currentLength => _currentLength; + Duration? _recordTime; + Duration? get recordTime => _recordTime; - // queue helper - List _queue = []; - List get queue => _queue; + RangeValues? _loopRange; + RangeValues? get loopRange => _loopRange; - // whehter the repeat was stopped - bool _forcedStopped = false; + AudioFile? _audioFile; + AudioFile? get currentAudioFile => _audioFile; - getCurrentQueueIndex() { - if (currentAudioFile == null) return -1; - return _queue.indexWhere((element) => element.id == currentAudioFile.id); - } + Stream get onRecordingFinished => _recordingFinishedController.stream; - getDurationLoopEnd() { - if (loopRange == null) return null; - return Duration(milliseconds: (loopRange.end * 1000).floor()); + Duration? getDurationLoopEnd() { + if (_loopRange == null) return null; + return Duration(milliseconds: (_loopRange!.end * 1000).floor()); } - getDurationLoopStart() { - if (loopRange == null) return null; - return Duration(milliseconds: (loopRange.start * 1000).floor()); + Duration? getDurationLoopStart() { + if (_loopRange == null) return null; + return Duration(milliseconds: (_loopRange!.start * 1000).floor()); } - Future stopPlayer(bool force) async { - if (this.loopRange != null && !force) { - print("stop player with loop range: $loopRange"); - _state = RecorderState.PLAYING; - await _player.play(_currentPath, - isLocal: true, position: getDurationLoopStart()); - print("seek to start"); - return -10; - } else { - int res = await _player.stop(); - changePlayerPosition(Duration(seconds: 0)); - return res; - } + Future _stopPlayerInternal() async { + await _player.stop(); + playerPositionStore.changePlayerPosition(Duration.zero); } - Future startPlayer(String path) async { - print("playing $path"); - // set length not yet available - _player = AudioPlayer(); - _forcedStopped = false; - - _player.onAudioPositionChanged.listen((pos) async { - if (loopRange != null && pos >= getDurationLoopEnd()) { - pos = getDurationLoopStart(); - await _player.seek(pos); - print("seek to start..."); + Future _bindPlayerStreams() async { + await _positionSub?.cancel(); + await _durationSub?.cancel(); + await _completeSub?.cancel(); + + _positionSub = _player.onPositionChanged.listen((pos) async { + final loopEnd = getDurationLoopEnd(); + final loopStart = getDurationLoopStart(); + if (loopEnd != null && loopStart != null && pos >= loopEnd) { + await _player.seek(loopStart); + pos = loopStart; } - changePlayerPosition(pos); + playerPositionStore.changePlayerPosition(pos); }); - _player.onDurationChanged.listen((event) { - if (_currentLength != event) { - setDuration(Tuple2(_audioFile, event)); - _currentLength = event; - trigger(); + _durationSub = _player.onDurationChanged.listen((event) { + if (_currentLength == event) return; + _currentLength = event; + if (_audioFile != null) { + setDuration(Tuple2(_audioFile!, event)); } + notifyListeners(); }); - _state = RecorderState.PLAYING; - _player.onPlayerStateChanged.listen((AudioPlayerState event) async { - print("player state change $event"); - }); - - _player.onPlayerCompletion.listen((event) async { - print("player completed"); - print("repeat: $_repeat; length: ${_queue.length}"); - - if ((_repeat == Repeat.all) || - (_repeat == Repeat.one) && _queue.length > 0 && !_forcedStopped) { - int index = getCurrentQueueIndex(); - if (index == -1) { - print("cannot find next file, stopping..."); - stopAction(false); - return; - } - int nextIndex = - (_repeat == Repeat.all) ? (index + 1) % _queue.length : index; - AudioFile nextAudioFile = _queue[nextIndex]; - print( - "playing next in queue: ${nextAudioFile.id} ${nextAudioFile.name}"); - Future.delayed(Duration(milliseconds: 100), () async { - await startPlaybackAction(nextAudioFile); - }); - } else { - stopAction(false); - } + _completeSub = _player.onPlayerComplete.listen((_) { + stopAction(); }); + } - print("play me"); - Duration startPosition = - (loopRange == null) ? Duration(seconds: 0) : getDurationLoopStart(); - int result = - await _player.play(path, isLocal: true, position: startPosition); - trigger(); - return result; + Future startPlayer(String path) async { + await _bindPlayerStreams(); + _state = RecorderState.playing; + await _player.play(DeviceFileSource(path)); + notifyListeners(); } - Future init(String path) async { + Future _initRecorder() async { try { - if (await Permission.microphone.request().isGranted) { - _recorder = FlutterAudioRecorder(path, audioFormat: _audioFormat); - await _recorder.initialized; - - // after initialization - _current = await _recorder.current(channel: 0); - return true; - } else { - return false; - } - } catch (e) { - print("ERRROR!"); - print(e); + return await _recorder.hasPermission(); + } catch (_) { return false; } } - Future startRecorder(String path) async { - // Check permissions before starting - print("init..."); - print("starting recorder $path"); - - // Check permissions before starting - bool hasPermissions = await init(path); - - print("has permissions: $hasPermissions"); - - if (!hasPermissions) { - return false; + RecordConfig _recordConfig() { + // Prefer AAC for iOS compatibility. Use WAV elsewhere if selected. + if (_audioFormat == AudioFormat.wav && !Platform.isIOS) { + return const RecordConfig(encoder: AudioEncoder.wav); } + return const RecordConfig(encoder: AudioEncoder.aacLc); + } - await _recorder.start(); - _current = await _recorder.current(channel: 0); - _currentStatus = _current.status; - - const tick = const Duration(milliseconds: 50); - - new Timer.periodic(tick, (Timer t) async { - if (_currentStatus == RecordingStatus.Stopped) { - t.cancel(); - } - - var current = await _recorder.current(channel: 0); - // print(current.status); - if (_currentStatus != current.status) { - _currentStatus = current.status; - _current = current; - - trigger(); + Future startRecorder(String path) async { + if (!await _initRecorder()) return false; + await _recorder.start(_recordConfig(), path: path); + _recordStartedAt = DateTime.now(); + _recordTicker?.cancel(); + _recordTicker = Timer.periodic(const Duration(milliseconds: 100), (_) async { + final current = await _recorder.getAmplitude(); + final elapsed = _recordStartedAt == null + ? Duration.zero + : DateTime.now().difference(_recordStartedAt!); + recorderPositionStore.changeRecorderPosition(elapsed); + if (current.current.isNaN) { + // keep ticker alive while recording; no-op } - - changeRecorderPosition(current.duration); }); - return true; } - Future stopRecorder() async { - print("stopping..."); - if (_currentStatus != RecordingStatus.Unset) { - var result = await _recorder.stop(); - // reuslt.path, result.duration - print("Stop recording: ${result.path}"); - print("Stop recording: ${result.duration}"); - _recordTime = result.duration; - _current = result; - changeRecorderPosition(Duration(seconds: 0)); + Future stopRecorder() async { + final path = await _recorder.stop(); + _recordTicker?.cancel(); + _recordStartedAt = null; + final elapsed = recorderPositionStore.position; + _recordTime = elapsed; + recorderPositionStore.changeRecorderPosition(Duration.zero); + if (path != null) { + _currentPath = path; + _recordingFinishedController + .add(AudioFile(duration: elapsed, path: path)); } - - return ""; } Future getFilename() async { - var d = (await getApplicationDocumentsDirectory()).parent; + var d = await getApplicationDocumentsDirectory(); d = Directory(p.join(d.path, 'files')); - - String ext = _audioFormat == AudioFormat.WAV ? "wav" : "aac"; - return d.path + '/' + getFormattedDate(DateTime.now()) + ".$ext"; + if (!d.existsSync()) { + d.createSync(recursive: true); + } + final date = DateTime.now().toIso8601String().replaceAll(':', '-'); + final ext = (_audioFormat == AudioFormat.wav && !Platform.isIOS) + ? 'wav' + : 'm4a'; + return p.join(d.path, '$date.$ext'); } - RecorderBottomSheetStore() { - _minimized = false; - - LocalStorage().getSettings().then((value) { - if (value != null) { - _audioFormat = value.audioFormat; - } - }); - // sound = FlutterSound(); - startPlaybackAction.listen((AudioFile f) async { - if (_state == RecorderState.PLAYING) { - await stopPlayer(true); - _state = RecorderState.STOP; - } - if (_state == RecorderState.STOP || _state == RecorderState.PAUSING) { - _audioFile = f; - _currentPath = f.path; - changePlayerPosition(Duration(seconds: 0)); - print("Init Audio file with Loop Range: ${f.loopRange}"); - - startPlayer(f.path).then((t) { - playbackStarted(); - // _state = RecorderState.PLAYING; - // trigger(); - }); - } - }); - - stopAction.listen((force) { - _forcedStopped = force; - if (_state == RecorderState.RECORDING || - _state == RecorderState.PLAYING || - _state == RecorderState.PAUSING) { - if (_state == RecorderState.PLAYING || - _state == RecorderState.PAUSING) { - stopPlayer(force).then((r) { - if (r != -10) { - _state = RecorderState.STOP; - } - }); - } else { - stopRecorder().then((_) { - _state = RecorderState.STOP; - recordingFinished( - AudioFile(duration: _recordTime, path: currentPath)); - }); - } - } - }); + Future startPlaybackAction(AudioFile f) async { + if (_state == RecorderState.stop || _state == RecorderState.pausing) { + playerPositionStore.changePlayerPosition(Duration.zero); + _audioFile = f; + _currentPath = f.path; + _loopRange = f.loopRange; + await startPlayer(f.path); + } + } - startRecordingAction.listen((_) { - getFilename().then((path) { - _currentPath = path; - - void start() { - startRecorder(path).then((hasPermissions) { - if (hasPermissions) { - _state = RecorderState.RECORDING; - trigger(); - } else { - audioRecordingPermissionDenied(); - } - }); - } - - start(); - }); - }); + Future stopAction([dynamic _]) async { + _loopRange = null; + if (_state == RecorderState.playing || _state == RecorderState.pausing) { + await _stopPlayerInternal(); + _state = RecorderState.stop; + notifyListeners(); + return; + } + if (_state == RecorderState.recording) { + await stopRecorder(); + _state = RecorderState.stop; + notifyListeners(); + } + } - skipTo.listen((d) async { - print("seeking to $d"); - await _player.seek(d); - trigger(); - }); + Future startRecordingAction([dynamic _]) async { + final path = await getFilename(); + _currentPath = path; + final hasPermissions = await startRecorder(path); + if (hasPermissions) { + _state = RecorderState.recording; + notifyListeners(); + } + } - pauseAction.listen((_) async { - await _player.pause(); - _state = RecorderState.PAUSING; - trigger(); - }); - resumeAction.listen((_) async { - await _player.resume(); - _state = RecorderState.PLAYING; - trigger(); - }); + Future skipTo(Duration d) async { + await _player.seek(d); + notifyListeners(); + } - resetRecorderState.listen((_) { - //_currentPath = null; - _state = RecorderState.STOP; - trigger(); - }); + Future pauseAction([dynamic _]) async { + await _player.pause(); + _state = RecorderState.pausing; + notifyListeners(); + } - setRecorderState.listen((s) { - _state = s; - trigger(); - }); + Future resumeAction([dynamic _]) async { + await _player.resume(); + _state = RecorderState.playing; + notifyListeners(); + } - setAudioFormat.listen((format) { - _audioFormat = format; - print("setting audio format to $_audioFormat"); - trigger(); - }); + void resetRecorderState([dynamic _]) { + _state = RecorderState.stop; + notifyListeners(); + } - setLoopRange.listen((range) async { - print("SetLoopRange $range $loopRange $_state"); - if (range != null && - (loopRange == null || - (loopRange != null && range.start != loopRange.start))) { - if (_state == RecorderState.PLAYING) { - print("seeking to start of range"); - var start = Duration(milliseconds: (range.start * 1000).floor()); - await _player.seek(start); - } - } - print("New Loop Range: $range"); - if (this._audioFile != null) { - _audioFile.loopRange = range; - trigger(); - } - }); + void setRecorderState(RecorderState s) { + _state = s; + notifyListeners(); + } - setMinimized.listen((m) { - print("set minimized internal: $m"); - if (m != minimized) { - _minimized = m; - trigger(); - } - }); + void setAudioFormat(AudioFormat format) { + _audioFormat = format; + notifyListeners(); + } - setDefaultAudioFormat.listen((format) { - _audioFormat = format; - print("ping"); - trigger(); - }); - setRepeat.listen((r) { - _repeat = r; - trigger(); - }); + Future setLoopRange(RangeValues range) async { + if (_loopRange == null || range.start != _loopRange!.start) { + final start = Duration(milliseconds: (range.start * 1000).floor()); + await _player.seek(start); + } + _loopRange = range; + notifyListeners(); + } - setQueue.listen((q) { - _queue = q; - // trigger(); - }); - print("editor store created"); + @override + void dispose() { + _recordTicker?.cancel(); + _positionSub?.cancel(); + _durationSub?.cancel(); + _completeSub?.cancel(); + _recordingFinishedController.close(); + _player.dispose(); + super.dispose(); } } -Action startRecordingAction = Action(); -Action startPlaybackAction = Action(); - -Action setRecorderState = Action(); -Action setPath = Action(); -Action stopAction = Action(); -Action pauseAction = Action(); -Action resumeAction = Action(); -Action playbackStarted = Action(); -Action setElapsed = Action(); -Action skipTo = Action(); -Action recordingFinished = Action(); -Action resetRecorderState = Action(); -Action setLoopRange = Action(); -Action setAudioFormat = Action(); -Action setMinimized = Action(); -Action audioRecordingPermissionDenied = Action(); -Action setRepeat = Action(); -Action> setQueue = Action(); - -StoreToken recorderBottomSheetStoreToken = - StoreToken(RecorderBottomSheetStore()); +final PlayerPositionStore playerPositionStore = PlayerPositionStore(); +final RecorderPositionStore recorderPositionStore = RecorderPositionStore(); +final RecorderBottomSheetStore recorderBottomSheetStore = RecorderBottomSheetStore(); + +void changePlayerPosition(Duration event) => + playerPositionStore.changePlayerPosition(event); +void changeRecorderPosition(Duration event) => + recorderPositionStore.changeRecorderPosition(event); +Future startRecordingAction([dynamic _]) => + recorderBottomSheetStore.startRecordingAction(); +Future startPlaybackAction(AudioFile f) => + recorderBottomSheetStore.startPlaybackAction(f); +void setRecorderState(RecorderState s) => recorderBottomSheetStore.setRecorderState(s); +void setPath(String path) {} +Future stopAction([dynamic _]) => recorderBottomSheetStore.stopAction(); +Future pauseAction([dynamic _]) => recorderBottomSheetStore.pauseAction(); +Future resumeAction([dynamic _]) => recorderBottomSheetStore.resumeAction(); +void setElapsed(Duration d) {} +Future skipTo(Duration d) => recorderBottomSheetStore.skipTo(d); +void recordingFinished(AudioFile f) => + recorderBottomSheetStore.onRecordingFinished.listen((_) {}).cancel(); +void resetRecorderState([dynamic _]) => recorderBottomSheetStore.resetRecorderState(); +Future setLoopRange(RangeValues range) => + recorderBottomSheetStore.setLoopRange(range); +void setAudioFormat(AudioFormat format) => recorderBottomSheetStore.setAudioFormat(format); diff --git a/lib/settings.dart b/lib/settings.dart index 8823539..fbd9427 100644 --- a/lib/settings.dart +++ b/lib/settings.dart @@ -1,192 +1,70 @@ -import 'package:flutter/foundation.dart'; -import 'package:flutter_audio_recorder/flutter_audio_recorder.dart'; -import 'package:flutter_flux/flutter_flux.dart'; import 'package:flutter/material.dart'; -import 'package:sound/dialogs/change_number_dialog.dart'; -import 'package:sound/dialogs/initial_import_dialog.dart'; -import 'package:sound/local_storage.dart'; -import 'package:sound/model.dart'; -import 'package:sound/recorder_store.dart'; -import 'package:sound/utils.dart'; +import 'package:path/path.dart' as p; +import 'package:provider/provider.dart'; +import 'package:share_plus/share_plus.dart'; import 'package:uuid/uuid.dart'; + +import 'backup.dart'; +import 'dialogs/initial_import_dialog.dart'; +import 'local_storage.dart'; +import 'model.dart'; +import 'recorder_store.dart'; import 'settings_store.dart'; -import "backup.dart"; -import 'db.dart'; -import 'package:flutter_share/flutter_share.dart'; -import 'package:path/path.dart' as p; -import 'package:flutter_file_dialog/flutter_file_dialog.dart'; +import 'utils.dart'; class Settings extends StatefulWidget { - final Function onMenuPressed; - Settings(this.onMenuPressed); + final VoidCallback onMenuPressed; + const Settings(this.onMenuPressed, {super.key}); @override - State createState() { - return SettingsState(); - } + State createState() => SettingsState(); } -class SettingsState extends State with StoreWatcherMixin { - SettingsStore store; - - GlobalKey _globalKey = GlobalKey(); - - @override - void initState() { - super.initState(); - store = listenToStore(settingsToken); - } +class SettingsState extends State { + final GlobalKey _globalKey = GlobalKey(); - _themeAsString() { - if (store.theme == SettingsTheme.dark) { - return "Dark"; - } else { - return "Light"; - } - } + String _themeAsString(SettingsStore store) => + store.theme == SettingsTheme.dark ? 'Dark' : 'Light'; - _wrapItem(item) { + Widget _wrapItem(Widget item) { return Padding( - padding: EdgeInsets.only(left: 48, bottom: 8, top: 8, right: 48), - child: item); - } - - _themeItem() { - return _wrapItem(Row( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.spaceAround, - children: [ - Expanded(child: Text("Theme: ")), - ElevatedButton( - child: Text(_themeAsString()), - onPressed: toggleTheme, - ), - ], - )); + padding: const EdgeInsets.only(left: 48, bottom: 8, top: 8, right: 48), + child: item, + ); } - _audioFormatAsString() { - return store.audioFormat == AudioFormat.AAC ? "AAC" : "WAV"; - } + String _audioFormatAsString(SettingsStore store) => + store.audioFormat == AudioFormat.aac ? 'AAC' : 'WAV'; - _toggleAudioFormat() { - AudioFormat newAudioFormat; - if (store.audioFormat == AudioFormat.AAC) { - newAudioFormat = AudioFormat.WAV; - } else { - newAudioFormat = AudioFormat.AAC; - } - setDefaultAudioFormat(newAudioFormat); + Future _toggleAudioFormat(SettingsStore store) async { + final newAudioFormat = + store.audioFormat == AudioFormat.aac ? AudioFormat.wav : AudioFormat.aac; + await setDefaultAudioFormat(newAudioFormat); setAudioFormat(newAudioFormat); } - _audioFormatItem() { - return _wrapItem(Row( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.spaceAround, - children: [ - Expanded(child: Text("AudioFormat: ")), - ElevatedButton( - child: Text(_audioFormatAsString()), onPressed: _toggleAudioFormat), - ], - )); - } - - _changeContentSectionTextSize() { - return _wrapItem(Row( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.spaceAround, - children: [ - Expanded(child: Text("Section Font Size: ")), - ElevatedButton( - child: Text(store.settings.sectionContentFontSize.toString()), - onPressed: () { - showChangeNumberDialog( - context, "", store.settings.sectionContentFontSize, (value) { - changeSectionContentFontSize(value); - }, min: 5, max: 15); - }), - ], - )); - } - - _editorViewAsString() { - if (store.editorView == EditorView.onePage) { - return "One Page"; - } else if (store.editorView == EditorView.tabs) { - return "Tabs"; - } else - return ""; - } - - _toggleEditorView() { - if (store.editorView == EditorView.onePage) { - setDefaultEditorView(EditorView.tabs); - } else { - setDefaultEditorView(EditorView.onePage); - } - } - - _editorViewItem() { - return _wrapItem(Row( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.spaceAround, - children: [ - Expanded(child: Text("EditorView: ")), - ElevatedButton( - child: Text(_editorViewAsString()), onPressed: _toggleEditorView), - ], - )); - } - - _setName() { - return _wrapItem(Row( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.spaceAround, - children: [ - Expanded( - child: - Column(crossAxisAlignment: CrossAxisAlignment.start, children: [ - Tooltip( - message: "Used for copyright in exported files", - child: Text("Name:")), - ])), - ElevatedButton( - child: Text(store.name == null ? "Edit" : store.name), - onPressed: _showEditNameDialog), - ], - )); - } - - _showEditNameDialog() { - print(store.name); - TextEditingController _controller = TextEditingController.fromValue( - TextEditingValue(text: (store.name == null ? "Edit" : store.name))); - showDialog( + Future _showEditNameDialog(SettingsStore store) async { + final controller = TextEditingController(text: store.name ?? ''); + await showDialog( context: context, builder: (BuildContext context) { - // return object of type Dialog return AlertDialog( - title: new Text("Set Name"), - content: new TextField( + title: const Text('Set Name'), + content: TextField( autofocus: true, maxLines: 1, minLines: 1, - onSubmitted: (s) => print("submit $s"), - controller: _controller, + controller: controller, ), actions: [ - new TextButton( - child: Text("Cancel"), - onPressed: () { - Navigator.of(context).pop(); - }, + TextButton( + child: const Text('Cancel'), + onPressed: () => Navigator.of(context).pop(), ), - // usually buttons at the bottom of the dialog - new ElevatedButton( - child: new Text("Apply"), + TextButton( + child: const Text('Apply'), onPressed: () { - setName(_controller.value.text); + setName(controller.value.text); Navigator.of(context).pop(); }, ), @@ -196,99 +74,99 @@ class SettingsState extends State with StoreWatcherMixin { ); } - _onBackup() async { - String path = await Backup().exportZip(await LocalStorage().getNotes(), - collections: await LocalStorage().getCollections()); - showSnack(_globalKey.currentState, "Exported zip to $path"); - String filename = p.basename(path); - - final params = SaveFileDialogParams(sourceFilePath: path); - final filePath = await FlutterFileDialog.saveFile(params: params); - print(filePath); - - // await FlutterShare.shareFile( - // title: filename, text: 'Share backup zip', filePath: path); + Future _onExport() async { + final path = await Backup().exportZip(await LocalStorage().getNotes()); + showSnack(_globalKey.currentState, 'Exported zip to $path'); + final filename = p.basename(path); + await SharePlus.instance.share(ShareParams( + text: 'Share backup zip', + title: filename, + files: [XFile(path)], + )); } - _onImport() async { + Future _onImport() async { try { - BackupData backup = await Backup().import(); - var noteMapping = {}; - for (Note note in backup.notes) { - var newId = Uuid().v4(); - noteMapping[note.id] = newId; - // update id - note.id = newId; - //await LocalStorage().syncNote(note); - } - - for (NoteCollection c in backup.collections) { - c.notes = c.notes.map((Note n) { - n.id = noteMapping[n.id]; - return n; - }).toList(); + final notes = await Backup().import(); + for (final note in notes) { + note.id = const Uuid().v4(); } - - showSelectNotesImportDialog(context, (BackupData data) { - showSnack(_globalKey.currentState, - "Successfully restored ${data.notes.length} notes"); - }, backup, title: "Which songs would you like to restore?"); + showSelectNotesImportDialog( + context, + (List restoredNotes) { + showSnack( + _globalKey.currentState, + 'Successfully restored ${restoredNotes.length} notes', + ); + }, + notes, + title: 'Which songs would you like to restore?', + ); } on ImportException { - showSnack(_globalKey.currentState, "Error while importing zip"); + showSnack(_globalKey.currentState, 'Error while importing zip'); } } - _initialImportItem() { - if (!isDebug()) { - return Container(); - } else { - return ElevatedButton( - onPressed: () { - showInitialImportDialog(context, (_) { - print("done importing..."); - }); - }, - child: Text("Show Initial Import Dialog")); - } - } - - _list() { - var items = [ - _setName(), - _themeItem(), - _audioFormatItem(), - _editorViewItem(), - _changeContentSectionTextSize(), - _initialImportItem(), - SizedBox(height: 10), - ElevatedButton(child: Text("Backup"), onPressed: _onBackup), - SizedBox(height: 10), - ElevatedButton(child: Text("Restore"), onPressed: _onImport), - SizedBox(height: 10), + Widget _list(SettingsStore store) { + final items = [ + _wrapItem(Row( + children: [ + const Expanded(child: Text('Name:')), + ElevatedButton( + child: Text((store.name == null || store.name!.isEmpty) + ? 'Edit' + : store.name!), + onPressed: () => _showEditNameDialog(store), + ), + ], + )), + _wrapItem(Row( + children: [ + const Expanded(child: Text('Theme:')), + ElevatedButton( + child: Text(_themeAsString(store)), + onPressed: () => toggleTheme(), + ), + ], + )), + _wrapItem(Row( + children: [ + const Expanded(child: Text('Audio Format:')), + ElevatedButton( + child: Text(_audioFormatAsString(store)), + onPressed: () => _toggleAudioFormat(store), + ), + ], + )), + const SizedBox(height: 10), + ElevatedButton(onPressed: _onExport, child: const Text('Backup')), + const SizedBox(height: 10), + ElevatedButton(onPressed: _onImport, child: const Text('Restore')), ]; return ListView.builder( - padding: EdgeInsets.all(10), - itemBuilder: (context, index) { - return items[index]; - }, - itemCount: items.length); + padding: const EdgeInsets.all(10), + itemBuilder: (context, index) => items[index], + itemCount: items.length, + ); } @override Widget build(BuildContext context) { - // items.add(_title()); - List stackChildren = []; - - stackChildren.add(Container(padding: EdgeInsets.all(16), child: _list())); - + final store = context.watch(); return Scaffold( - key: _globalKey, - appBar: AppBar( - title: Text("Settings"), - leading: IconButton( - icon: Icon(Icons.menu), onPressed: widget.onMenuPressed)), - floatingActionButtonLocation: FloatingActionButtonLocation.endTop, - body: Stack(children: stackChildren)); + key: _globalKey, + appBar: AppBar( + title: const Text('Settings'), + leading: IconButton( + icon: const Icon(Icons.menu), + onPressed: widget.onMenuPressed, + ), + ), + body: Padding( + padding: const EdgeInsets.all(16), + child: _list(store), + ), + ); } } diff --git a/lib/settings_store.dart b/lib/settings_store.dart index 19f1fec..f26f508 100644 --- a/lib/settings_store.dart +++ b/lib/settings_store.dart @@ -1,99 +1,59 @@ -import 'package:flutter_audio_recorder/flutter_audio_recorder.dart'; -import 'package:flutter_flux/flutter_flux.dart' show Action, Store, StoreToken; +import 'package:flutter/foundation.dart'; import 'package:sound/local_storage.dart'; import 'package:sound/model.dart'; -import 'package:sound/note_list.dart'; -import 'package:sound/recorder_store.dart'; -class SettingsStore extends Store { - // default values +class SettingsStore extends ChangeNotifier { + Settings _settings = Settings( + audioFormat: AudioFormat.wav, + theme: SettingsTheme.dark, + name: '', + view: EditorView.single, + ); - Settings _settings = Settings.defaults(); - - // getter SettingsTheme get theme => _settings.theme; - - EditorView get editorView => _settings.editorView; - + EditorView get view => _settings.view; AudioFormat get audioFormat => _settings.audioFormat; - String get name => _settings.name; - + String? get name => _settings.name; Settings get settings => _settings; - SettingsStore() { - // init listener - toggleTheme.listen((_) async { - if (theme == SettingsTheme.dark) { - _settings.theme = SettingsTheme.light; - } else { - _settings.theme = SettingsTheme.dark; - } - await LocalStorage().syncSettings(settings); - trigger(); - }); - - setDefaultAudioFormat.listen((format) async { - _settings.audioFormat = format; - await LocalStorage().syncSettings(_settings); - trigger(); - }); - - setDefaultNoteListType.listen((listType) async { - _settings.noteListType = listType; - await LocalStorage().syncSettings(_settings); - trigger(); - }); - - setDefaultEditorView.listen((view) async { - _settings.editorView = view; - await LocalStorage().syncSettings(_settings); - trigger(); - }); - - setDefaultSortBy.listen((SortBy by) async { - _settings.sortBy = by; - await LocalStorage().syncSettings(_settings); - trigger(); - }); + Future toggleTheme() async { + _settings.theme = _settings.theme == SettingsTheme.dark + ? SettingsTheme.light + : SettingsTheme.dark; + await LocalStorage().syncSettings(_settings); + notifyListeners(); + } - setDefaultSortDirection.listen((SortDirection d) async { - _settings.sortDirection = d; - await LocalStorage().syncSettings(_settings); - trigger(); - }); + Future setDefaultAudioFormat(AudioFormat format) async { + _settings.audioFormat = format; + await LocalStorage().syncSettings(_settings); + notifyListeners(); + } - setName.listen((name) async { - _settings.name = name; - await LocalStorage().syncSettings(_settings); - trigger(); - }); + Future setDefaultView(EditorView view) async { + _settings.view = view; + await LocalStorage().syncSettings(_settings); + notifyListeners(); + } - // this will be called when the app initializes - updateSettings.listen((s) { - if (s != null) { - _settings = s; - print("Update Settings in store"); - trigger(); - } - }); + Future setName(String name) async { + _settings.name = name; + await LocalStorage().syncSettings(_settings); + notifyListeners(); + } - changeSectionContentFontSize.listen((value) async { - _settings.sectionContentFontSize = value; - await LocalStorage().syncSettings(_settings); - trigger(); - }); + void updateSettings(Settings? settings) { + if (settings == null) return; + _settings = settings; + notifyListeners(); } } -Action toggleTheme = Action(); -Action setName = Action(); - -Action setDefaultNoteListType = Action(); -Action setDefaultEditorView = Action(); -Action setDefaultAudioFormat = Action(); -Action changeSectionContentFontSize = Action(); -Action updateSettings = Action(); -Action setDefaultSortDirection = Action(); -Action setDefaultSortBy = Action(); +final SettingsStore settingsStore = SettingsStore(); -StoreToken settingsToken = StoreToken(SettingsStore()); +Future toggleTheme([dynamic _]) => settingsStore.toggleTheme(); +Future setName(String name) => settingsStore.setName(name); +Future setDefaultView(EditorView view) => settingsStore.setDefaultView(view); +Future setDefaultAudioFormat(AudioFormat format) => + settingsStore.setDefaultAudioFormat(format); +void updateSettings(Settings? settings) => settingsStore.updateSettings(settings); diff --git a/lib/share.dart b/lib/share.dart index f67ed44..4b78844 100644 --- a/lib/share.dart +++ b/lib/share.dart @@ -1,10 +1,13 @@ -import 'package:flutter_share/flutter_share.dart'; import 'package:path/path.dart' as p; +import 'package:share_plus/share_plus.dart'; -Future shareFile(String path, {String filename, String text}) async { +Future shareFile(String path, {String? filename, String? text}) async { if (filename == null) filename = p.basename(path); if (text == null) text = 'Sharing file $filename'; - return await FlutterShare.shareFile( - title: filename, text: text, filePath: path); + await SharePlus.instance.share(ShareParams( + title: filename, + text: text, + files: [XFile(path)], + )); } diff --git a/lib/storage.dart b/lib/storage.dart index 919b6c2..746a867 100644 --- a/lib/storage.dart +++ b/lib/storage.dart @@ -1,19 +1,118 @@ -import 'package:flutter_flux/flutter_flux.dart'; -import 'package:sound/settings_store.dart'; -import 'package:sound/utils.dart'; +import 'package:flutter/foundation.dart'; import 'local_storage.dart'; import 'file_manager.dart'; import 'model.dart'; import 'db.dart'; import 'package:flutter/material.dart' show Color; +List notes = [ + Note( + title: "Why am I, why am I the way I am", + createdAt: DateTime.now(), + lastModified: DateTime.now(), + key: "C Major", + tuning: "Dadgad", + label: "Song", + starred: true, + audioFiles: [ + AudioFile.create( + duration: Duration(seconds: 5), + path: "/data/sdcard/files/test_file.mp4") + ], + sections: [ + Section( + title: 'Verse 1', + content: + "The world comes crashing down\nand you are the only one\nWho helps me though the dark/past\nSo Drunk and fallen apart"), + Section( + title: "Chorus", + content: "Why am I, why am I the way I am I don't understand"), + Section( + title: "Bridge", + content: + "Lately, I dont like myself\nI cant even look myself in the eye\nSo shockingly evil and vile") + ]), + Note( + title: "Time", + createdAt: DateTime.now(), + lastModified: DateTime.now(), + key: "B Dur", + tuning: "Standard", + label: "Song", + starred: false, + audioFiles: [], + sections: [ + Section( + title: 'Verse 1', + content: + """ EM Em. D C C C +Time has gone and young love passed + G. D. C C C c +A blurry dot in the dark +Its difficult to go back to what once was +A flame sparks again +To take me back to when +"""), + Section( + title: "Chorus", content: "When we were young and full of love"), + Section(title: "Verse 2", content: """ + Em Em D C C C +Its been some time, since we talked + G G D C +when was our last walk? +Em G D D +oh what makes us happy and what not? +Em D G +please ask me again + em G D D +or take me back to when + """), + Section(title: "Bridge", content: """Em Em D/F# D/F# C D D D D +Em Em D/F# D/F# C D D D D +Em C Em G +G G""") + ]), + Note( + title: "Sleep", + createdAt: DateTime.now(), + lastModified: DateTime.now(), + key: "C Dur", + capo: "7", + tuning: "Standard", + label: "Song", + starred: false, + audioFiles: [], + sections: [ + Section( + title: 'Verse 1', + content: + """ G G D/B D/B C D G G G +I'm 25 and I don't know what I want in live +My girlfriend and I we're moving along the lines +We're havin jobs that pay nice, they make us feel alright +But if I am honstest, is this leading to a better life?"""), + Section( + title: "Chorus", + content: """I think that I just want to sleep alright +And wake up without a gun to my mind +Mmmmmhh"""), + Section( + title: "Verse 2", + content: """times' changing, its better to live alone +without someone looking under every stone +the next thing you remember is having children on your own +rolling around and looking under every stone"""), + Section(title: "Bridge", content: """""") + ]), +]; + enum FilterBy { LABEL, TUNING, KEY, CAPO } class Filter { FilterBy by; String content; - Filter({this.by, this.content}); + Filter({required this.by, required this.content}); @override int get hashCode => (by.index.toString() + content).hashCode; @@ -21,246 +120,169 @@ class Filter { bool operator ==(o) => (o is Filter && o.by == by && o.content == content); } -class StaticStorage extends Store { - List _filters; - Map _showMore; - bool _twoPerRow; +class StaticStorage extends ChangeNotifier { + List _filters = []; + Map _showMore = {}; + bool _twoPerRow = false; bool get view => _twoPerRow; List get filters => _filters; - List _selectedNotes; + List _selectedNotes = []; List get selectedNotes => _selectedNotes; - List _prevDiscardedNoteIds; - List get prevDiscardedNoteIds => _prevDiscardedNoteIds; - String _search = ""; String get search => _search; - SortBy _sortBy = SortBy.lastModified; - SortBy get sortBy => _sortBy; - - SortDirection _sortDirection = SortDirection.up; - SortDirection get sortDirection => _sortDirection; - bool mustShowMore(FilterBy by) { Map> f = _getFiltersByCategory(); if (f.keys.contains(by)) { - return f[by].length > 3; + return (f[by]?.length ?? 0) > 3; } else return false; } - bool isSelected(Note note) => - _selectedNotes.where((n) => n.id == note.id).toList().length > 0; + bool isSelected(Note note) => _selectedNotes.contains(note); bool isAnyNoteSelected() => _selectedNotes.length > 0; bool isAnyNoteStarred() => filteredNotes.any((n) => n.starred); bool showMore(FilterBy by) => - _showMore.containsKey(by) ? _showMore[by] : false; + _showMore.containsKey(by) ? (_showMore[by] ?? false) : false; bool isFilterApplied(Filter filter) => _filters.contains(filter); StaticStorage() { _twoPerRow = false; + } - toggleChangeView.listen((_) { - _twoPerRow = !_twoPerRow; - if (_twoPerRow) { - setDefaultNoteListType(NoteListType.double); - } else { - setDefaultNoteListType(NoteListType.single); - } - trigger(); - }); - - setTwoPerRow.listen((value) { - _twoPerRow = value; - trigger(); - }); - - _filters = []; - _selectedNotes = []; - _showMore = Map(); - - toggleShowMore.listen((by) { - if (_showMore.containsKey(by)) { - _showMore[by] = !_showMore[by]; - } else { - _showMore[by] = true; - } - trigger(); - }); - - addNote.listen((note) { - DB().addNote(note); - trigger(); - }); - - addFilter.listen((f) { - if (!_filters.contains(f)) { - _filters.add(f); - trigger(); - } - }); - - removeFilter.listen((f) { - _filters.remove(f); - trigger(); - }); - searchNotes.listen((s) { - _search = s; - trigger(); - }); - - triggerSelectNote.listen((Note note) { - if (!isSelected(note)) { - _selectedNotes.add(note); - trigger(); - } else { - _selectedNotes.removeWhere((element) => element.id == note.id); - trigger(); - } - }); - - resetStaticStorage.listen((_) { - _search = ""; - _selectedNotes.clear(); - _filters.clear(); - trigger(); - }); - - removeAllSelectedNotes.listen((_) { - for (Note note in _selectedNotes) { - for (var audio in note.audioFiles) { - FileManager().delete(audio); - } + void toggleChangeView() { + _twoPerRow = !_twoPerRow; + notifyListeners(); + } - LocalStorage().deleteNote(note); - } - _selectedNotes.clear(); - trigger(); - }); + void toggleShowMore(FilterBy by) { + _showMore[by] = !(_showMore[by] ?? false); + notifyListeners(); + } - discardAllSelectedNotes.listen((removeFromCollections) { - for (Note note in _selectedNotes) { - LocalStorage().discardNote(note, removeFromCollections); - } + void addNote(Note note) { + DB().addNote(note); + notifyListeners(); + } - _prevDiscardedNoteIds = _selectedNotes.map((e) => e.id).toList(); - _selectedNotes.clear(); - trigger(); - }); + void addFilter(Filter f) { + if (_filters.contains(f)) return; + _filters.add(f); + notifyListeners(); + } - starAllSelectedNotes.listen((_) { - for (Note note in _selectedNotes) { - note.starred = true; - LocalStorage().syncNoteAttr(note, 'starred'); - } - _selectedNotes.clear(); - trigger(); - }); - unstarAllSelectedNotes.listen((_) { - for (Note note in _selectedNotes) { - note.starred = false; - LocalStorage().syncNoteAttr(note, 'starred'); - } - _selectedNotes.clear(); - trigger(); - }); - - colorAllSelectedNotes.listen((Color color) { - for (Note note in _selectedNotes) { - note.color = color; - LocalStorage().syncNoteAttr(note, 'color'); - } - _selectedNotes.clear(); - trigger(); - }); + void removeFilter(Filter f) { + _filters.remove(f); + notifyListeners(); + } - restoreNotes.listen((_notes) { - for (Note note in _notes) { - LocalStorage().restoreNote(note); - } - trigger(); - }); - - clearSelection.listen((_) { - _selectedNotes.clear(); - trigger(); - }); - - updateView.listen((_) { - // only update the view, data is stored in file_manager - trigger(); - }); - - changeSortDirection.listen((d) { - if (this._sortDirection != d) { - this._sortDirection = d; - trigger(); - } - }); + void searchNotes(String s) { + _search = s; + notifyListeners(); + } - changeSortBy.listen((by) { - if (_sortBy != by) { - print("set sort by to $by"); - this._sortBy = by; - trigger(); - } - }); + void triggerSelectNote(Note note) { + if (_selectedNotes.contains(note)) { + _selectedNotes.remove(note); + } else { + _selectedNotes.add(note); + } + notifyListeners(); + } - changeListType.listen((event) { - var twoPerRow = (event == NoteListType.single) ? false : true; - if (twoPerRow != _twoPerRow) { - _twoPerRow = twoPerRow; - trigger(); + Future removeAllSelectedNotes() async { + for (final note in _selectedNotes) { + for (final audio in note.audioFiles) { + FileManager().delete(audio); } - }); + await LocalStorage().deleteNote(note); + } + _selectedNotes.clear(); + notifyListeners(); + } - undoDiscardAllSelectedNotes.listen((event) { - for (String noteId in this._prevDiscardedNoteIds) { - LocalStorage().restoreNoteById(noteId); - } - }); + Future discardAllSelectedNotes() async { + for (final note in _selectedNotes) { + await LocalStorage().discardNote(note); + } + _selectedNotes.clear(); + notifyListeners(); } - bool _isSearchValid(Note note) { - if (_search != null) { - var search = _search.toLowerCase(); - if (note.label != null && note.label.toLowerCase().contains(search)) - return true; - if (note.capo != null && - note.capo.toString().toLowerCase().contains(search)) return true; - if (note.title != null && note.title.toLowerCase().contains(search)) - return true; - - if (note.artist != null && note.artist.toLowerCase().contains(search)) - return true; - - if (note.tuning != null && note.tuning.toLowerCase().contains(search)) - return true; - - if (note.sections.any((s) => - s.content.toLowerCase().contains(search) || - resolveRichContent(s.content).toLowerCase().contains(search) || - s.title.toLowerCase().contains(search))) return true; + Future starAllSelectedNotes() async { + for (final note in _selectedNotes) { + note.starred = true; + await LocalStorage().syncNoteAttr(note, 'starred'); } - return false; + _selectedNotes.clear(); + notifyListeners(); + } + + Future unstarAllSelectedNotes() async { + for (final note in _selectedNotes) { + note.starred = false; + await LocalStorage().syncNoteAttr(note, 'starred'); + } + _selectedNotes.clear(); + notifyListeners(); + } + + Future colorAllSelectedNotes(Color color) async { + for (final note in _selectedNotes) { + note.color = color; + await LocalStorage().syncNoteAttr(note, 'color'); + } + _selectedNotes.clear(); + notifyListeners(); + } + + Future restoreNotes(List notes) async { + for (final note in notes) { + await LocalStorage().restoreNote(note); + } + notifyListeners(); + } + + void clearSelection() { + _selectedNotes.clear(); + notifyListeners(); + } + + void updateView() { + notifyListeners(); + } + + bool _isSearchValid(Note note) { + var search = _search.toLowerCase(); + if ((note.label ?? '').toLowerCase().contains(search)) + return true; + if (note.capo.toString().toLowerCase().contains(search)) return true; + if ((note.title).toLowerCase().contains(search)) + return true; + + if ((note.artist ?? '').toLowerCase().contains(search)) + return true; + + if ((note.tuning ?? '').toLowerCase().contains(search)) + return true; + if (note.sections.any((s) => + s.content.toLowerCase().contains(search) || + s.title.toLowerCase().contains(search))) return true; + return false; } Map> _getFiltersByCategory() { - Map> m = Map(); + final m = >{}; for (Filter f in _filters) { - if (m.keys.contains(f.by)) { - m[f.by].add(f); - } else { - m[f.by] = [f]; - } + m.putIfAbsent(f.by, () => []).add(f); } return m; } @@ -288,84 +310,43 @@ class StaticStorage extends Store { return true; } - String getLower(String t) { - if (t == null) - return null; - else - return t.toLowerCase(); - } + List get filteredNotes => DB().notes.where((Note note) { + if (_filters.length == 0 && (_search == "")) + return true; - int _sort(Note a, Note b) { - if (_sortBy == SortBy.lastModified) { - if (_sortDirection == SortDirection.up) { - return b.lastModified.compareTo(a.lastModified); - } else { - return a.lastModified.compareTo(b.lastModified); - } - } else if (_sortBy == SortBy.created) { - if (_sortDirection == SortDirection.up) { - return b.createdAt.compareTo(a.createdAt); - } else { - return a.createdAt.compareTo(b.createdAt); - } - } else if (_sortBy == SortBy.az) { - if (_sortDirection == SortDirection.up) { - return getLower(b.title).compareTo(getLower(a.title)); - } else { - return getLower(a.title).compareTo(getLower(b.title)); - } - } else - return 1; - } - - List get filteredNotes { - List notes = DB().notes; - notes.sort(_sort); - - return notes.where((Note note) { - if (_filters.length == 0 && (_search == null || _search == "")) - return true; - - if (_search != null && search != "") { - if (_filters.length == 0) { - return _isSearchValid(note); + if (search != "") { + if (_filters.length == 0) { + return _isSearchValid(note); + } else { + return _isSearchValid(note) && _isAnyFilterValid(note); + } } else { - return _isSearchValid(note) && _isAnyFilterValid(note); + return _isAnyFilterValid(note); } - } else { - return _isAnyFilterValid(note); - } - }).toList(); - } + }).toList(); } -Action> setNotes = Action(); -Action addNote = Action(); -Action addFilter = Action(); -Action removeFilter = Action(); - -Action searchNotes = Action(); -Action toggleShowMore = Action(); -Action toggleChangeView = Action(); -Action setTwoPerRow = Action(); -Action openSettings = Action(); -//Action setUser = Action(); - -Action triggerSelectNote = Action(); -Action removeAllSelectedNotes = Action(); -Action discardAllSelectedNotes = Action(); -Action undoDiscardAllSelectedNotes = Action(); -Action starAllSelectedNotes = Action(); -Action unstarAllSelectedNotes = Action(); -Action colorAllSelectedNotes = Action(); - -Action> restoreNotes = Action(); -Action clearSelection = Action(); -Action updateView = Action(); -Action resetStaticStorage = Action(); -Action changeSortBy = Action(); -Action changeSortDirection = Action(); -Action changeListType = Action(); - -StoreToken storageToken = StoreToken(StaticStorage()); -StoreToken searchNoteStorageToken = StoreToken(StaticStorage()); +final StaticStorage storageStore = StaticStorage(); + +void setNotes(List notes) => DB().setNotes(notes); +void addNote(Note note) => storageStore.addNote(note); +void addFilter(Filter filter) => storageStore.addFilter(filter); +void removeFilter(Filter filter) => storageStore.removeFilter(filter); +void searchNotes(String search) => storageStore.searchNotes(search); +void toggleShowMore(FilterBy by) => storageStore.toggleShowMore(by); +void toggleChangeView([dynamic _]) => storageStore.toggleChangeView(); +void openSettings([dynamic _]) {} +void triggerSelectNote(Note note) => storageStore.triggerSelectNote(note); +Future removeAllSelectedNotes([dynamic _]) => + storageStore.removeAllSelectedNotes(); +Future discardAllSelectedNotes([dynamic _]) => + storageStore.discardAllSelectedNotes(); +Future starAllSelectedNotes([dynamic _]) => + storageStore.starAllSelectedNotes(); +Future unstarAllSelectedNotes([dynamic _]) => + storageStore.unstarAllSelectedNotes(); +Future colorAllSelectedNotes(Color color) => + storageStore.colorAllSelectedNotes(color); +Future restoreNotes(List notes) => storageStore.restoreNotes(notes); +void clearSelection([dynamic _]) => storageStore.clearSelection(); +void updateView([dynamic _]) => storageStore.updateView(); diff --git a/lib/trash.dart b/lib/trash.dart index 622a179..e0e973a 100644 --- a/lib/trash.dart +++ b/lib/trash.dart @@ -7,9 +7,9 @@ import 'package:sound/note_viewer.dart'; import 'package:sound/storage.dart'; class Trash extends StatefulWidget { - final Function onMenuPressed; + final VoidCallback onMenuPressed; - Trash(this.onMenuPressed, {Key key}) : super(key: key); + const Trash(this.onMenuPressed, {super.key}); @override State createState() { @@ -164,7 +164,7 @@ class _TrashState extends State { } else { Navigator.push( context, - new MaterialPageRoute( + MaterialPageRoute( builder: (context) => NoteViewer( note, actions: [ diff --git a/lib/ultimate.dart b/lib/ultimate.dart index d40a051..e6306f5 100644 --- a/lib/ultimate.dart +++ b/lib/ultimate.dart @@ -1,8 +1,4 @@ -import 'dart:async'; -import 'dart:convert'; -import 'dart:io'; -import 'package:sound/model.dart'; /** import 'package:html/parser.dart' show parse; diff --git a/lib/utils.dart b/lib/utils.dart index f982f02..8a4269e 100644 --- a/lib/utils.dart +++ b/lib/utils.dart @@ -1,149 +1,39 @@ import 'package:flutter/material.dart'; -import 'package:flutter/foundation.dart'; -String getFormattedDate(DateTime date) { - String _date = DateTime.now().toString(); - return date.toString().substring(0, _date.length - 7).replaceAll(":", "-"); -} - -String _formatDateInt(int v) { - if (v > 9) { - return v.toString(); - } else { - return "0$v"; - } -} - -String toTime(int length, {bool includeHour = false}) { - if (length == null) return ""; - - int m = length ~/ 60; - int s = length % 60; - - String data = "${_formatDateInt(m)}:${_formatDateInt(s)}"; - if (includeHour) { - int h = s ~/ 3600; - data = "${_formatDateInt(h)}:$data"; - } - - return data; -} - -String dateToString(DateTime date) { - String _date = DateTime.now().toString(); - return date.toString().substring(0, _date.length - 7); -} - -List itemsByFrequency(List input) => [ - ...(input - .fold>( - {}, - (map, letter) => map - ..update(letter, (value) => value + 1, ifAbsent: () => 1)) - .entries - .toList() - ..sort((e1, e2) => e2.value.compareTo(e1.value))) - .map((e) => e.key) - ]; - -class LifecycleEventHandler extends WidgetsBindingObserver { - final AsyncCallback resumeCallBack; - final AsyncCallback suspendingCallBack; - - LifecycleEventHandler({ - this.resumeCallBack, - this.suspendingCallBack, - }); +const defaultDuration = Duration(seconds: 2); - @override - Future didChangeAppLifecycleState(AppLifecycleState state) async { - switch (state) { - case AppLifecycleState.resumed: - if (resumeCallBack != null) { - await resumeCallBack(); - } - break; - case AppLifecycleState.inactive: - case AppLifecycleState.paused: - case AppLifecycleState.detached: - if (suspendingCallBack != null) { - await suspendingCallBack(); - } - break; - } - } +ScaffoldMessengerState? _messengerFor(dynamic state) { + if (state == null) return null; + if (state is ScaffoldMessengerState) return state; + if (state is ScaffoldState) return ScaffoldMessenger.of(state.context); + if (state is BuildContext) return ScaffoldMessenger.of(state); + return null; } -const defaultDuration = Duration(seconds: 2); - -showUndoSnackbar( - {BuildContext context, - String message, - dynamic data, - ValueChanged onUndo, - Function onClose}) { - var snackbar = SnackBar( - content: Text( - message, - style: Theme.of(context).appBarTheme.textTheme.bodyText1, - ), +void showUndoSnackbar(dynamic state, String dataString, dynamic data, + ValueChanged onUndo) { + final snackbar = SnackBar( + content: Text("Deleted $dataString sucessfully"), duration: Duration(seconds: 3), - action: SnackBarAction( - label: "Undo", - textColor: Theme.of(context).accentColor, - onPressed: () => onUndo(data))); + action: SnackBarAction(label: "Undo", onPressed: () => onUndo(data))); - ScaffoldMessenger.of(context) - .showSnackBar(snackbar) - .closed - .then((value) => (onClose != null) ? onClose() : () {}); + _messengerFor(state)?.showSnackBar(snackbar); } -hideSnack(BuildContext context) { - ScaffoldMessenger.of(context).hideCurrentSnackBar(); -} - -showSnack(ScaffoldState state, String message, +void showSnack(dynamic state, String message, {Duration duration = defaultDuration}) { - var snackbar = SnackBar( - content: Text(message, - style: Theme.of(state.context).appBarTheme.textTheme.bodyText1), - duration: duration); + final snackbar = SnackBar(content: Text(message), duration: duration); - state.showSnackBar(snackbar); -} - -showSnackByContext(BuildContext context, String message, - {Duration duration = defaultDuration, Color backgroundColor}) { - var snackbar = SnackBar( - backgroundColor: backgroundColor, - content: Text(message, - style: Theme.of(context).appBarTheme.textTheme.bodyText1), - duration: duration); - - ScaffoldMessenger.of(context).showSnackBar(snackbar); + _messengerFor(state)?.showSnackBar(snackbar); } Color getSelectedCardColor(BuildContext context) { - return Theme.of(context).textTheme.bodyText1.color.withOpacity(0.4); -} - -ShapeBorder getSelectedChardShape(BuildContext context) { - return RoundedRectangleBorder( - side: BorderSide(width: 1, color: getSelectedCardColor(context)), - borderRadius: BorderRadius.circular(5.0), - ); + return (Theme.of(context).textTheme.bodyMedium?.color ?? Colors.black) + .withValues(alpha: 0.4); } BoxDecoration getSelectedDecoration(BuildContext context) { - return BoxDecoration( - color: getSelectedCardColor(context), - borderRadius: BorderRadius.circular(5.0), - ); -} - -BoxDecoration getNormalDecoration(BuildContext context) { - return null; + return BoxDecoration(color: getSelectedCardColor(context)); } String resolveRichContent(String data) { @@ -177,7 +67,7 @@ String resolveRichContent(String data) { text += char; } } - // print("${chords.length} vs ${text.length}"); + print("${chords.length} vs ${text.length}"); resolved.add(chords); resolved.add(text); } else { @@ -186,10 +76,3 @@ String resolveRichContent(String data) { } return resolved.join("\n"); } - -bool isDebug() { - const flavor = String.fromEnvironment('app.flavor'); - print("flavor: $flavor"); - if (flavor == 'dev') return true; - return !kReleaseMode; -} diff --git a/macos/.gitignore b/macos/.gitignore new file mode 100644 index 0000000..746adbb --- /dev/null +++ b/macos/.gitignore @@ -0,0 +1,7 @@ +# Flutter-related +**/Flutter/ephemeral/ +**/Pods/ + +# Xcode-related +**/dgph +**/xcuserdata/ diff --git a/macos/Flutter/Flutter-Debug.xcconfig b/macos/Flutter/Flutter-Debug.xcconfig new file mode 100644 index 0000000..4b81f9b --- /dev/null +++ b/macos/Flutter/Flutter-Debug.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" +#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/macos/Flutter/Flutter-Release.xcconfig b/macos/Flutter/Flutter-Release.xcconfig new file mode 100644 index 0000000..5caa9d1 --- /dev/null +++ b/macos/Flutter/Flutter-Release.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" +#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift new file mode 100644 index 0000000..e18abaf --- /dev/null +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -0,0 +1,24 @@ +// +// Generated file. Do not edit. +// + +import FlutterMacOS +import Foundation + +import audioplayers_darwin +import file_picker +import path_provider_foundation +import record_macos +import share_plus +import shared_preferences_foundation +import sqflite_darwin + +func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + AudioplayersDarwinPlugin.register(with: registry.registrar(forPlugin: "AudioplayersDarwinPlugin")) + FilePickerPlugin.register(with: registry.registrar(forPlugin: "FilePickerPlugin")) + PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) + RecordMacOsPlugin.register(with: registry.registrar(forPlugin: "RecordMacOsPlugin")) + SharePlusMacosPlugin.register(with: registry.registrar(forPlugin: "SharePlusMacosPlugin")) + SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) + SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin")) +} diff --git a/macos/Podfile b/macos/Podfile new file mode 100644 index 0000000..ff5ddb3 --- /dev/null +++ b/macos/Podfile @@ -0,0 +1,42 @@ +platform :osx, '10.15' + +# CocoaPods analytics sends network stats synchronously affecting flutter build latency. +ENV['COCOAPODS_DISABLE_STATS'] = 'true' + +project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, +} + +def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'ephemeral', 'Flutter-Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure \"flutter pub get\" is executed first" + end + + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches + end + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Flutter-Generated.xcconfig, then run \"flutter pub get\"" +end + +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + +flutter_macos_podfile_setup + +target 'Runner' do + use_frameworks! + + flutter_install_all_macos_pods File.dirname(File.realpath(__FILE__)) + target 'RunnerTests' do + inherit! :search_paths + end +end + +post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_macos_build_settings(target) + end +end diff --git a/macos/Podfile.lock b/macos/Podfile.lock new file mode 100644 index 0000000..c26af22 --- /dev/null +++ b/macos/Podfile.lock @@ -0,0 +1,62 @@ +PODS: + - audioplayers_darwin (0.0.1): + - Flutter + - FlutterMacOS + - file_picker (0.0.1): + - FlutterMacOS + - FlutterMacOS (1.0.0) + - path_provider_foundation (0.0.1): + - Flutter + - FlutterMacOS + - record_macos (1.2.0): + - FlutterMacOS + - share_plus (0.0.1): + - FlutterMacOS + - shared_preferences_foundation (0.0.1): + - Flutter + - FlutterMacOS + - sqflite_darwin (0.0.4): + - Flutter + - FlutterMacOS + +DEPENDENCIES: + - audioplayers_darwin (from `Flutter/ephemeral/.symlinks/plugins/audioplayers_darwin/darwin`) + - file_picker (from `Flutter/ephemeral/.symlinks/plugins/file_picker/macos`) + - FlutterMacOS (from `Flutter/ephemeral`) + - path_provider_foundation (from `Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin`) + - record_macos (from `Flutter/ephemeral/.symlinks/plugins/record_macos/macos`) + - share_plus (from `Flutter/ephemeral/.symlinks/plugins/share_plus/macos`) + - shared_preferences_foundation (from `Flutter/ephemeral/.symlinks/plugins/shared_preferences_foundation/darwin`) + - sqflite_darwin (from `Flutter/ephemeral/.symlinks/plugins/sqflite_darwin/darwin`) + +EXTERNAL SOURCES: + audioplayers_darwin: + :path: Flutter/ephemeral/.symlinks/plugins/audioplayers_darwin/darwin + file_picker: + :path: Flutter/ephemeral/.symlinks/plugins/file_picker/macos + FlutterMacOS: + :path: Flutter/ephemeral + path_provider_foundation: + :path: Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin + record_macos: + :path: Flutter/ephemeral/.symlinks/plugins/record_macos/macos + share_plus: + :path: Flutter/ephemeral/.symlinks/plugins/share_plus/macos + shared_preferences_foundation: + :path: Flutter/ephemeral/.symlinks/plugins/shared_preferences_foundation/darwin + sqflite_darwin: + :path: Flutter/ephemeral/.symlinks/plugins/sqflite_darwin/darwin + +SPEC CHECKSUMS: + audioplayers_darwin: 4027b33a8f471d996c13f71cb77f0b1583b5d923 + file_picker: e716a70a9fe5fd9e09ebc922d7541464289443af + FlutterMacOS: d0db08ddef1a9af05a5ec4b724367152bb0500b1 + path_provider_foundation: 0b743cbb62d8e47eab856f09262bb8c1ddcfe6ba + record_macos: 4680f37daeebf52162e715efb7ff682f0a5ce4fd + share_plus: 1fa619de8392a4398bfaf176d441853922614e89 + shared_preferences_foundation: 5086985c1d43c5ba4d5e69a4e8083a389e2909e6 + sqflite_darwin: 5a7236e3b501866c1c9befc6771dfd73ffb8702d + +PODFILE CHECKSUM: 54d867c82ac51cbd61b565781b9fada492027009 + +COCOAPODS: 1.15.2 diff --git a/macos/Runner.xcodeproj/project.pbxproj b/macos/Runner.xcodeproj/project.pbxproj new file mode 100644 index 0000000..f80d168 --- /dev/null +++ b/macos/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,801 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXAggregateTarget section */ + 33CC111A2044C6BA0003C045 /* Flutter Assemble */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */; + buildPhases = ( + 33CC111E2044C6BF0003C045 /* ShellScript */, + ); + dependencies = ( + ); + name = "Flutter Assemble"; + productName = FLX; + }; +/* End PBXAggregateTarget section */ + +/* Begin PBXBuildFile section */ + 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C80D7294CF71000263BE5 /* RunnerTests.swift */; }; + 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; + 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; + 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; }; + 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; }; + 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; }; + 6CD114C3A2CD9B5E067BC84A /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F55C7DAC252543D15EF87F75 /* Pods_Runner.framework */; }; + EA4CC2CD51A09AB27F893F6D /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 174FA5BB45A5DB96CE3D9FA5 /* Pods_RunnerTests.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 331C80D9294CF71000263BE5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 33CC10E52044A3C60003C045 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 33CC10EC2044A3C60003C045; + remoteInfo = Runner; + }; + 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 33CC10E52044A3C60003C045 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 33CC111A2044C6BA0003C045; + remoteInfo = FLX; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 33CC110E2044A8840003C045 /* Bundle Framework */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Bundle Framework"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 085B23CD291D1769AF4908CF /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; + 174FA5BB45A5DB96CE3D9FA5 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 205830810A775A4458305FCC /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; + 331C80D5294CF71000263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 331C80D7294CF71000263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; + 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; + 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = ""; }; + 33CC10ED2044A3C60003C045 /* sound.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = sound.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = ""; }; + 33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; + 33CC10F72044A3C60003C045 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Runner/Info.plist; sourceTree = ""; }; + 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainFlutterWindow.swift; sourceTree = ""; }; + 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Debug.xcconfig"; sourceTree = ""; }; + 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Release.xcconfig"; sourceTree = ""; }; + 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Flutter-Generated.xcconfig"; path = "ephemeral/Flutter-Generated.xcconfig"; sourceTree = ""; }; + 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = ""; }; + 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; }; + 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; }; + 66F7124D9C16077ACF19C1A4 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; + 98BCA275C43EBDCBC2673E90 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; + AFB2576FE0265E66D61ABDBE /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; + E58B0CCEA8BF88E4E13E2D74 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; + F55C7DAC252543D15EF87F75 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 331C80D2294CF70F00263BE5 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + EA4CC2CD51A09AB27F893F6D /* Pods_RunnerTests.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 33CC10EA2044A3C60003C045 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 6CD114C3A2CD9B5E067BC84A /* Pods_Runner.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 331C80D6294CF71000263BE5 /* RunnerTests */ = { + isa = PBXGroup; + children = ( + 331C80D7294CF71000263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 33BA886A226E78AF003329D5 /* Configs */ = { + isa = PBXGroup; + children = ( + 33E5194F232828860026EE4D /* AppInfo.xcconfig */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 333000ED22D3DE5D00554162 /* Warnings.xcconfig */, + ); + path = Configs; + sourceTree = ""; + }; + 33CC10E42044A3C60003C045 = { + isa = PBXGroup; + children = ( + 33FAB671232836740065AC1E /* Runner */, + 33CEB47122A05771004F2AC0 /* Flutter */, + 331C80D6294CF71000263BE5 /* RunnerTests */, + 33CC10EE2044A3C60003C045 /* Products */, + D73912EC22F37F3D000D13A0 /* Frameworks */, + A465C8E8DEB1088168BFB87E /* Pods */, + ); + sourceTree = ""; + }; + 33CC10EE2044A3C60003C045 /* Products */ = { + isa = PBXGroup; + children = ( + 33CC10ED2044A3C60003C045 /* sound.app */, + 331C80D5294CF71000263BE5 /* RunnerTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 33CC11242044D66E0003C045 /* Resources */ = { + isa = PBXGroup; + children = ( + 33CC10F22044A3C60003C045 /* Assets.xcassets */, + 33CC10F42044A3C60003C045 /* MainMenu.xib */, + 33CC10F72044A3C60003C045 /* Info.plist */, + ); + name = Resources; + path = ..; + sourceTree = ""; + }; + 33CEB47122A05771004F2AC0 /* Flutter */ = { + isa = PBXGroup; + children = ( + 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */, + 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */, + 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */, + 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */, + ); + path = Flutter; + sourceTree = ""; + }; + 33FAB671232836740065AC1E /* Runner */ = { + isa = PBXGroup; + children = ( + 33CC10F02044A3C60003C045 /* AppDelegate.swift */, + 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */, + 33E51913231747F40026EE4D /* DebugProfile.entitlements */, + 33E51914231749380026EE4D /* Release.entitlements */, + 33CC11242044D66E0003C045 /* Resources */, + 33BA886A226E78AF003329D5 /* Configs */, + ); + path = Runner; + sourceTree = ""; + }; + A465C8E8DEB1088168BFB87E /* Pods */ = { + isa = PBXGroup; + children = ( + 66F7124D9C16077ACF19C1A4 /* Pods-Runner.debug.xcconfig */, + 085B23CD291D1769AF4908CF /* Pods-Runner.release.xcconfig */, + AFB2576FE0265E66D61ABDBE /* Pods-Runner.profile.xcconfig */, + 98BCA275C43EBDCBC2673E90 /* Pods-RunnerTests.debug.xcconfig */, + 205830810A775A4458305FCC /* Pods-RunnerTests.release.xcconfig */, + E58B0CCEA8BF88E4E13E2D74 /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; + D73912EC22F37F3D000D13A0 /* Frameworks */ = { + isa = PBXGroup; + children = ( + F55C7DAC252543D15EF87F75 /* Pods_Runner.framework */, + 174FA5BB45A5DB96CE3D9FA5 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 331C80D4294CF70F00263BE5 /* RunnerTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; + buildPhases = ( + D1A9605CFB5DD6C916A6BD7E /* [CP] Check Pods Manifest.lock */, + 331C80D1294CF70F00263BE5 /* Sources */, + 331C80D2294CF70F00263BE5 /* Frameworks */, + 331C80D3294CF70F00263BE5 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 331C80DA294CF71000263BE5 /* PBXTargetDependency */, + ); + name = RunnerTests; + productName = RunnerTests; + productReference = 331C80D5294CF71000263BE5 /* RunnerTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 33CC10EC2044A3C60003C045 /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + D1FEE4341BFEB29FFEF13802 /* [CP] Check Pods Manifest.lock */, + 33CC10E92044A3C60003C045 /* Sources */, + 33CC10EA2044A3C60003C045 /* Frameworks */, + 33CC10EB2044A3C60003C045 /* Resources */, + 33CC110E2044A8840003C045 /* Bundle Framework */, + 3399D490228B24CF009A79C7 /* ShellScript */, + 131A3D744E455864D02F77D8 /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 33CC11202044C79F0003C045 /* PBXTargetDependency */, + ); + name = Runner; + productName = Runner; + productReference = 33CC10ED2044A3C60003C045 /* sound.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 33CC10E52044A3C60003C045 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + LastSwiftUpdateCheck = 0920; + LastUpgradeCheck = 1510; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 331C80D4294CF70F00263BE5 = { + CreatedOnToolsVersion = 14.0; + TestTargetID = 33CC10EC2044A3C60003C045; + }; + 33CC10EC2044A3C60003C045 = { + CreatedOnToolsVersion = 9.2; + LastSwiftMigration = 1100; + ProvisioningStyle = Automatic; + SystemCapabilities = { + com.apple.Sandbox = { + enabled = 1; + }; + }; + }; + 33CC111A2044C6BA0003C045 = { + CreatedOnToolsVersion = 9.2; + ProvisioningStyle = Manual; + }; + }; + }; + buildConfigurationList = 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 33CC10E42044A3C60003C045; + productRefGroup = 33CC10EE2044A3C60003C045 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 33CC10EC2044A3C60003C045 /* Runner */, + 331C80D4294CF70F00263BE5 /* RunnerTests */, + 33CC111A2044C6BA0003C045 /* Flutter Assemble */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 331C80D3294CF70F00263BE5 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 33CC10EB2044A3C60003C045 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */, + 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 131A3D744E455864D02F77D8 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + 3399D490228B24CF009A79C7 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n"; + }; + 33CC111E2044C6BF0003C045 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + Flutter/ephemeral/FlutterInputs.xcfilelist, + ); + inputPaths = ( + Flutter/ephemeral/tripwire, + ); + outputFileListPaths = ( + Flutter/ephemeral/FlutterOutputs.xcfilelist, + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; + }; + D1A9605CFB5DD6C916A6BD7E /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + D1FEE4341BFEB29FFEF13802 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 331C80D1294CF70F00263BE5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 33CC10E92044A3C60003C045 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */, + 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */, + 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 331C80DA294CF71000263BE5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 33CC10EC2044A3C60003C045 /* Runner */; + targetProxy = 331C80D9294CF71000263BE5 /* PBXContainerItemProxy */; + }; + 33CC11202044C79F0003C045 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 33CC111A2044C6BA0003C045 /* Flutter Assemble */; + targetProxy = 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 33CC10F42044A3C60003C045 /* MainMenu.xib */ = { + isa = PBXVariantGroup; + children = ( + 33CC10F52044A3C60003C045 /* Base */, + ); + name = MainMenu.xib; + path = Runner; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 331C80DB294CF71000263BE5 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 98BCA275C43EBDCBC2673E90 /* Pods-RunnerTests.debug.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = de.onenightproductions.sound.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/sound.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/sound"; + }; + name = Debug; + }; + 331C80DC294CF71000263BE5 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 205830810A775A4458305FCC /* Pods-RunnerTests.release.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = de.onenightproductions.sound.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/sound.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/sound"; + }; + name = Release; + }; + 331C80DD294CF71000263BE5 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = E58B0CCEA8BF88E4E13E2D74 /* Pods-RunnerTests.profile.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = de.onenightproductions.sound.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/sound.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/sound"; + }; + name = Profile; + }; + 338D0CE9231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEAD_CODE_STRIPPING = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.15; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Profile; + }; + 338D0CEA231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + }; + name = Profile; + }; + 338D0CEB231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Manual; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Profile; + }; + 33CC10F92044A3C60003C045 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEAD_CODE_STRIPPING = YES; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.15; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 33CC10FA2044A3C60003C045 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEAD_CODE_STRIPPING = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.15; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Release; + }; + 33CC10FC2044A3C60003C045 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + 33CC10FD2044A3C60003C045 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; + 33CC111C2044C6BA0003C045 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Manual; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 33CC111D2044C6BA0003C045 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 331C80DB294CF71000263BE5 /* Debug */, + 331C80DC294CF71000263BE5 /* Release */, + 331C80DD294CF71000263BE5 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC10F92044A3C60003C045 /* Debug */, + 33CC10FA2044A3C60003C045 /* Release */, + 338D0CE9231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC10FC2044A3C60003C045 /* Debug */, + 33CC10FD2044A3C60003C045 /* Release */, + 338D0CEA231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC111C2044C6BA0003C045 /* Debug */, + 33CC111D2044C6BA0003C045 /* Release */, + 338D0CEB231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 33CC10E52044A3C60003C045 /* Project object */; +} diff --git a/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 0000000..e90758b --- /dev/null +++ b/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/macos/Runner.xcworkspace/contents.xcworkspacedata b/macos/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..21a3cc1 --- /dev/null +++ b/macos/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/macos/Runner/AppDelegate.swift b/macos/Runner/AppDelegate.swift new file mode 100644 index 0000000..b3c1761 --- /dev/null +++ b/macos/Runner/AppDelegate.swift @@ -0,0 +1,13 @@ +import Cocoa +import FlutterMacOS + +@main +class AppDelegate: FlutterAppDelegate { + override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { + return true + } + + override func applicationSupportsSecureRestorableState(_ app: NSApplication) -> Bool { + return true + } +} diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..a2ec33f --- /dev/null +++ b/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,68 @@ +{ + "images" : [ + { + "size" : "16x16", + "idiom" : "mac", + "filename" : "app_icon_16.png", + "scale" : "1x" + }, + { + "size" : "16x16", + "idiom" : "mac", + "filename" : "app_icon_32.png", + "scale" : "2x" + }, + { + "size" : "32x32", + "idiom" : "mac", + "filename" : "app_icon_32.png", + "scale" : "1x" + }, + { + "size" : "32x32", + "idiom" : "mac", + "filename" : "app_icon_64.png", + "scale" : "2x" + }, + { + "size" : "128x128", + "idiom" : "mac", + "filename" : "app_icon_128.png", + "scale" : "1x" + }, + { + "size" : "128x128", + "idiom" : "mac", + "filename" : "app_icon_256.png", + "scale" : "2x" + }, + { + "size" : "256x256", + "idiom" : "mac", + "filename" : "app_icon_256.png", + "scale" : "1x" + }, + { + "size" : "256x256", + "idiom" : "mac", + "filename" : "app_icon_512.png", + "scale" : "2x" + }, + { + "size" : "512x512", + "idiom" : "mac", + "filename" : "app_icon_512.png", + "scale" : "1x" + }, + { + "size" : "512x512", + "idiom" : "mac", + "filename" : "app_icon_1024.png", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png new file mode 100644 index 0000000000000000000000000000000000000000..82b6f9d9a33e198f5747104729e1fcef999772a5 GIT binary patch literal 102994 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ⅅ8MglG&ER{i5lN315cO?EdHNLrg? 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 z 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 Pe7HEdAEg|=c=LY&YVNkY literal 0 HcmV?d00001 diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png new file mode 100644 index 0000000000000000000000000000000000000000..13b35eba55c6dabc3aac36f33d859266c18fa0d0 GIT binary patch literal 5680 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 literal 0 HcmV?d00001 diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png new file mode 100644 index 0000000000000000000000000000000000000000..0a3f5fa40fb3d1e0710331a48de5d256da3f275d GIT binary patch literal 520 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 literal 0 HcmV?d00001 diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png new file mode 100644 index 0000000000000000000000000000000000000000..2f1632cfddf3d9dade342351e627a0a75609fb46 GIT binary patch literal 2218 zcmV;b2vzrqP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91K%fHv1ONa40RR91KmY&$07g+lumAuE6iGxuRCodHTWf3-RTMruyW6Fu zQYeUM04eX6D5c0FCjKKPrco1(K`<0SL=crI{PC3-^hZU0kQie$gh-5!7z6SH6Q0J% zqot*`H1q{R5fHFYS}dje@;kG=v$L0(yY0?wY2%*c?A&{2?!D*x?m71{of2gv!$5|C z3>qG_BW}7K_yUcT3A5C6QD<+{aq?x;MAUyAiJn#Jv8_zZtQ{P zTRzbL3U9!qVuZzS$xKU10KiW~Bgdcv1-!uAhQxf3a7q+dU6lj?yoO4Lq4TUN4}h{N z*fIM=SS8|C2$(T>w$`t@3Tka!(r!7W`x z-isCVgQD^mG-MJ;XtJuK3V{Vy72GQ83KRWsHU?e*wrhKk=ApIYeDqLi;JI1e zuvv}5^Dc=k7F7?nm3nIw$NVmU-+R>> zyqOR$-2SDpJ}Pt;^RkJytDVXNTsu|mI1`~G7yw`EJR?VkGfNdqK9^^8P`JdtTV&tX4CNcV4 z&N06nZa??Fw1AgQOUSE2AmPE@WO(Fvo`%m`cDgiv(fAeRA%3AGXUbsGw{7Q`cY;1BI#ac3iN$$Hw z0LT0;xc%=q)me?Y*$xI@GRAw?+}>=9D+KTk??-HJ4=A>`V&vKFS75@MKdSF1JTq{S zc1!^8?YA|t+uKigaq!sT;Z!&0F2=k7F0PIU;F$leJLaw2UI6FL^w}OG&!;+b%ya1c z1n+6-inU<0VM-Y_s5iTElq)ThyF?StVcebpGI znw#+zLx2@ah{$_2jn+@}(zJZ{+}_N9BM;z)0yr|gF-4=Iyu@hI*Lk=-A8f#bAzc9f z`Kd6K--x@t04swJVC3JK1cHY-Hq+=|PN-VO;?^_C#;coU6TDP7Bt`;{JTG;!+jj(` zw5cLQ-(Cz-Tlb`A^w7|R56Ce;Wmr0)$KWOUZ6ai0PhzPeHwdl0H(etP zUV`va_i0s-4#DkNM8lUlqI7>YQLf)(lz9Q3Uw`)nc(z3{m5ZE77Ul$V%m)E}3&8L0 z-XaU|eB~Is08eORPk;=<>!1w)Kf}FOVS2l&9~A+@R#koFJ$Czd%Y(ENTV&A~U(IPI z;UY+gf+&6ioZ=roly<0Yst8ck>(M=S?B-ys3mLdM&)ex!hbt+ol|T6CTS+Sc0jv(& z7ijdvFwBq;0a{%3GGwkDKTeG`b+lyj0jjS1OMkYnepCdoosNY`*zmBIo*981BU%%U z@~$z0V`OVtIbEx5pa|Tct|Lg#ZQf5OYMUMRD>Wdxm5SAqV2}3!ceE-M2 z@O~lQ0OiKQp}o9I;?uxCgYVV?FH|?Riri*U$Zi_`V2eiA>l zdSm6;SEm6#T+SpcE8Ro_f2AwxzI z44hfe^WE3!h@W3RDyA_H440cpmYkv*)6m1XazTqw%=E5Xv7^@^^T7Q2wxr+Z2kVYr + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/macos/Runner/Configs/AppInfo.xcconfig b/macos/Runner/Configs/AppInfo.xcconfig new file mode 100644 index 0000000..c963acf --- /dev/null +++ b/macos/Runner/Configs/AppInfo.xcconfig @@ -0,0 +1,14 @@ +// Application-level settings for the Runner target. +// +// This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the +// future. If not, the values below would default to using the project name when this becomes a +// 'flutter create' template. + +// The application's name. By default this is also the title of the Flutter window. +PRODUCT_NAME = sound + +// The application's bundle identifier +PRODUCT_BUNDLE_IDENTIFIER = de.onenightproductions.sound + +// The copyright displayed in application information +PRODUCT_COPYRIGHT = Copyright © 2026 de.onenightproductions. All rights reserved. diff --git a/macos/Runner/Configs/Debug.xcconfig b/macos/Runner/Configs/Debug.xcconfig new file mode 100644 index 0000000..36b0fd9 --- /dev/null +++ b/macos/Runner/Configs/Debug.xcconfig @@ -0,0 +1,2 @@ +#include "../../Flutter/Flutter-Debug.xcconfig" +#include "Warnings.xcconfig" diff --git a/macos/Runner/Configs/Release.xcconfig b/macos/Runner/Configs/Release.xcconfig new file mode 100644 index 0000000..dff4f49 --- /dev/null +++ b/macos/Runner/Configs/Release.xcconfig @@ -0,0 +1,2 @@ +#include "../../Flutter/Flutter-Release.xcconfig" +#include "Warnings.xcconfig" diff --git a/macos/Runner/Configs/Warnings.xcconfig b/macos/Runner/Configs/Warnings.xcconfig new file mode 100644 index 0000000..42bcbf4 --- /dev/null +++ b/macos/Runner/Configs/Warnings.xcconfig @@ -0,0 +1,13 @@ +WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings +GCC_WARN_UNDECLARED_SELECTOR = YES +CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES +CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE +CLANG_WARN__DUPLICATE_METHOD_MATCH = YES +CLANG_WARN_PRAGMA_PACK = YES +CLANG_WARN_STRICT_PROTOTYPES = YES +CLANG_WARN_COMMA = YES +GCC_WARN_STRICT_SELECTOR_MATCH = YES +CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES +CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES +GCC_WARN_SHADOW = YES +CLANG_WARN_UNREACHABLE_CODE = YES diff --git a/macos/Runner/DebugProfile.entitlements b/macos/Runner/DebugProfile.entitlements new file mode 100644 index 0000000..834e188 --- /dev/null +++ b/macos/Runner/DebugProfile.entitlements @@ -0,0 +1,14 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.device.audio-input + + com.apple.security.cs.allow-jit + + com.apple.security.network.server + + + diff --git a/macos/Runner/Info.plist b/macos/Runner/Info.plist new file mode 100644 index 0000000..3556f7e --- /dev/null +++ b/macos/Runner/Info.plist @@ -0,0 +1,34 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIconFile + + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSMinimumSystemVersion + $(MACOSX_DEPLOYMENT_TARGET) + NSHumanReadableCopyright + $(PRODUCT_COPYRIGHT) + NSMainNibFile + MainMenu + NSMicrophoneUsageDescription + SketChord needs microphone access to record audio clips for your notes. + NSPrincipalClass + NSApplication + + diff --git a/macos/Runner/MainFlutterWindow.swift b/macos/Runner/MainFlutterWindow.swift new file mode 100644 index 0000000..3cc05eb --- /dev/null +++ b/macos/Runner/MainFlutterWindow.swift @@ -0,0 +1,15 @@ +import Cocoa +import FlutterMacOS + +class MainFlutterWindow: NSWindow { + override func awakeFromNib() { + let flutterViewController = FlutterViewController() + let windowFrame = self.frame + self.contentViewController = flutterViewController + self.setFrame(windowFrame, display: true) + + RegisterGeneratedPlugins(registry: flutterViewController) + + super.awakeFromNib() + } +} diff --git a/macos/Runner/Release.entitlements b/macos/Runner/Release.entitlements new file mode 100644 index 0000000..f29279b --- /dev/null +++ b/macos/Runner/Release.entitlements @@ -0,0 +1,10 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.device.audio-input + + + diff --git a/macos/RunnerTests/RunnerTests.swift b/macos/RunnerTests/RunnerTests.swift new file mode 100644 index 0000000..61f3bd1 --- /dev/null +++ b/macos/RunnerTests/RunnerTests.swift @@ -0,0 +1,12 @@ +import Cocoa +import FlutterMacOS +import XCTest + +class RunnerTests: XCTestCase { + + func testExample() { + // If you add code to the Runner application, consider adding tests here. + // See https://developer.apple.com/documentation/xctest for more information about using XCTest. + } + +} diff --git a/pubspec.lock b/pubspec.lock index bc82a09..b3d05da 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1,186 +1,259 @@ # Generated by pub # See https://dart.dev/tools/pub/glossary#lockfile packages: + another_flushbar: + dependency: "direct main" + description: + name: another_flushbar + sha256: "2b99671c010a7d5770acf5cb24c9f508b919c3a7948b6af9646e773e7da7b757" + url: "https://pub.dev" + source: hosted + version: "1.12.32" archive: dependency: "direct main" description: name: archive - url: "https://pub.dartlang.org" + sha256: a96e8b390886ee8abb49b7bd3ac8df6f451c621619f52a26e815fdcf568959ff + url: "https://pub.dev" source: hosted - version: "2.0.13" + version: "4.0.9" args: dependency: transitive description: name: args - url: "https://pub.dartlang.org" + sha256: d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04 + url: "https://pub.dev" source: hosted - version: "1.6.0" + version: "2.7.0" async: dependency: transitive description: name: async - url: "https://pub.dartlang.org" + sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb" + url: "https://pub.dev" source: hosted - version: "2.6.1" + version: "2.13.0" audioplayers: dependency: "direct main" description: name: audioplayers - url: "https://pub.dartlang.org" + sha256: "5441fa0ceb8807a5ad701199806510e56afde2b4913d9d17c2f19f2902cf0ae4" + url: "https://pub.dev" + source: hosted + version: "6.5.1" + audioplayers_android: + dependency: transitive + description: + name: audioplayers_android + sha256: "60a6728277228413a85755bd3ffd6fab98f6555608923813ce383b190a360605" + url: "https://pub.dev" + source: hosted + version: "5.2.1" + audioplayers_darwin: + dependency: transitive + description: + name: audioplayers_darwin + sha256: "0811d6924904ca13f9ef90d19081e4a87f7297ddc19fc3d31f60af1aaafee333" + url: "https://pub.dev" source: hosted - version: "0.13.7" + version: "6.3.0" + audioplayers_linux: + dependency: transitive + description: + name: audioplayers_linux + sha256: f75bce1ce864170ef5e6a2c6a61cd3339e1a17ce11e99a25bae4474ea491d001 + url: "https://pub.dev" + source: hosted + version: "4.2.1" + audioplayers_platform_interface: + dependency: transitive + description: + name: audioplayers_platform_interface + sha256: "0e2f6a919ab56d0fec272e801abc07b26ae7f31980f912f24af4748763e5a656" + url: "https://pub.dev" + source: hosted + version: "7.1.1" + audioplayers_web: + dependency: transitive + description: + name: audioplayers_web + sha256: "1c0f17cec68455556775f1e50ca85c40c05c714a99c5eb1d2d57cc17ba5522d7" + url: "https://pub.dev" + source: hosted + version: "5.1.1" + audioplayers_windows: + dependency: transitive + description: + name: audioplayers_windows + sha256: "4048797865105b26d47628e6abb49231ea5de84884160229251f37dfcbe52fd7" + url: "https://pub.dev" + source: hosted + version: "4.2.1" barcode: dependency: transitive description: name: barcode - url: "https://pub.dartlang.org" + sha256: "7b6729c37e3b7f34233e2318d866e8c48ddb46c1f7ad01ff7bb2a8de1da2b9f4" + url: "https://pub.dev" + source: hosted + version: "2.2.9" + bidi: + dependency: transitive + description: + name: bidi + sha256: "77f475165e94b261745cf1032c751e2032b8ed92ccb2bf5716036db79320637d" + url: "https://pub.dev" source: hosted - version: "1.17.1" + version: "2.0.13" boolean_selector: dependency: transitive description: name: boolean_selector - url: "https://pub.dartlang.org" + sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.2" characters: dependency: transitive description: name: characters - url: "https://pub.dartlang.org" + sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 + url: "https://pub.dev" source: hosted - version: "1.1.0" - charcode: + version: "1.4.0" + checked_yaml: dependency: transitive description: - name: charcode - url: "https://pub.dartlang.org" + name: checked_yaml + sha256: "959525d3162f249993882720d52b7e0c833978df229be20702b33d48d91de70f" + url: "https://pub.dev" source: hosted - version: "1.2.0" - clipboard_manager: - dependency: "direct main" + version: "2.0.4" + cli_util: + dependency: transitive description: - name: clipboard_manager - url: "https://pub.dartlang.org" + name: cli_util + sha256: ff6785f7e9e3c38ac98b2fb035701789de90154024a75b6cb926445e83197d1c + url: "https://pub.dev" source: hosted - version: "0.0.4" + version: "0.4.2" clock: dependency: transitive description: name: clock - url: "https://pub.dartlang.org" + sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b + url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.1.2" collection: dependency: transitive description: name: collection - url: "https://pub.dartlang.org" + sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" + url: "https://pub.dev" source: hosted - version: "1.15.0" - convert: + version: "1.19.1" + cross_file: dependency: transitive description: - name: convert - url: "https://pub.dartlang.org" + name: cross_file + sha256: "28bb3ae56f117b5aec029d702a90f57d285cd975c3c5c281eaca38dbc47c5937" + url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "0.3.5+2" crypto: dependency: transitive description: name: crypto - url: "https://pub.dartlang.org" + sha256: c8ea0233063ba03258fbcf2ca4d6dadfefe14f02fab57702265467a19f27fadf + url: "https://pub.dev" source: hosted - version: "2.1.5" + version: "3.0.7" cupertino_icons: dependency: "direct main" description: name: cupertino_icons - url: "https://pub.dartlang.org" + sha256: ba631d1c7f7bef6b729a622b7b752645a2d076dba9976925b8f25725a30e1ee6 + url: "https://pub.dev" + source: hosted + version: "1.0.8" + dbus: + dependency: transitive + description: + name: dbus + sha256: d0c98dcd4f5169878b6cf8f6e0a52403a9dff371a3e2f019697accbf6f44a270 + url: "https://pub.dev" source: hosted - version: "0.1.3" + version: "0.7.12" fake_async: dependency: transitive description: name: fake_async - url: "https://pub.dartlang.org" + sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44" + url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.3.3" ffi: dependency: transitive description: name: ffi - url: "https://pub.dartlang.org" + sha256: "6d7fd89431262d8f3125e81b50d3847a091d846eafcd4fdb88dd06f36d705a45" + url: "https://pub.dev" source: hosted - version: "1.1.2" + version: "2.2.0" file: dependency: transitive description: name: file - url: "https://pub.dartlang.org" + sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4 + url: "https://pub.dev" source: hosted - version: "5.2.1" + version: "7.0.1" file_picker: dependency: "direct main" description: name: file_picker - url: "https://pub.dartlang.org" + sha256: "57d9a1dd5063f85fa3107fb42d1faffda52fdc948cefd5fe5ea85267a5fc7343" + url: "https://pub.dev" source: hosted - version: "1.13.3" - file_picker_platform_interface: + version: "10.3.10" + fixnum: dependency: transitive description: - name: file_picker_platform_interface - url: "https://pub.dartlang.org" + name: fixnum + sha256: b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be + url: "https://pub.dev" source: hosted - version: "1.3.1" + version: "1.1.1" flutter: dependency: "direct main" description: flutter source: sdk version: "0.0.0" - flutter_audio_recorder: - dependency: "direct main" - description: - name: flutter_audio_recorder - url: "https://pub.dartlang.org" - source: hosted - version: "0.5.5" - flutter_file_dialog: - dependency: "direct main" - description: - name: flutter_file_dialog - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.0" - flutter_flux: - dependency: "direct main" - description: - name: flutter_flux - url: "https://pub.dartlang.org" - source: hosted - version: "4.1.3" flutter_launcher_icons: - dependency: "direct main" + dependency: "direct dev" description: name: flutter_launcher_icons - url: "https://pub.dartlang.org" + sha256: "10f13781741a2e3972126fae08393d3c4e01fa4cd7473326b94b72cf594195e7" + url: "https://pub.dev" + source: hosted + version: "0.14.4" + flutter_lints: + dependency: "direct dev" + description: + name: flutter_lints + sha256: "5398f14efa795ffb7a33e9b6a08798b26a180edac4ad7db3f231e40f82ce11e1" + url: "https://pub.dev" source: hosted - version: "0.8.1" + version: "5.0.0" flutter_plugin_android_lifecycle: dependency: transitive description: name: flutter_plugin_android_lifecycle - url: "https://pub.dartlang.org" + sha256: ee8068e0e1cd16c4a82714119918efdeed33b3ba7772c54b5d094ab53f9b7fd1 + url: "https://pub.dev" source: hosted - version: "1.0.11" - flutter_share: - dependency: "direct main" - description: - name: flutter_share - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.5" + version: "2.0.33" flutter_test: dependency: "direct dev" description: flutter @@ -195,371 +268,639 @@ packages: dependency: "direct main" description: name: google_fonts - url: "https://pub.dartlang.org" + sha256: ba03d03bcaa2f6cb7bd920e3b5027181db75ab524f8891c8bc3aa603885b8055 + url: "https://pub.dev" source: hosted - version: "1.1.2" + version: "6.3.3" http: dependency: transitive description: name: http - url: "https://pub.dartlang.org" + sha256: "87721a4a50b19c7f1d49001e51409bddc46303966ce89a65af4f4e6004896412" + url: "https://pub.dev" source: hosted - version: "0.12.2" + version: "1.6.0" http_parser: dependency: transitive description: name: http_parser - url: "https://pub.dartlang.org" + sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571" + url: "https://pub.dev" source: hosted - version: "3.1.4" + version: "4.1.2" image: dependency: transitive description: name: image - url: "https://pub.dartlang.org" + sha256: "4e973fcf4caae1a4be2fa0a13157aa38a8f9cb049db6529aa00b4d71abc4d928" + url: "https://pub.dev" source: hosted - version: "2.1.19" - intl: + version: "4.5.4" + json_annotation: dependency: transitive description: - name: intl - url: "https://pub.dartlang.org" + name: json_annotation + sha256: cb09e7dac6210041fad964ed7fbee004f14258b4eca4040f72d1234062ace4c8 + url: "https://pub.dev" source: hosted - version: "0.16.1" - js: + version: "4.11.0" + leak_tracker: dependency: transitive description: - name: js - url: "https://pub.dartlang.org" + name: leak_tracker + sha256: "33e2e26bdd85a0112ec15400c8cbffea70d0f9c3407491f672a2fad47915e2de" + url: "https://pub.dev" source: hosted - version: "0.6.3" + version: "11.0.2" + leak_tracker_flutter_testing: + dependency: transitive + description: + name: leak_tracker_flutter_testing + sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1" + url: "https://pub.dev" + source: hosted + version: "3.0.10" + leak_tracker_testing: + dependency: transitive + description: + name: leak_tracker_testing + sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1" + url: "https://pub.dev" + source: hosted + version: "3.0.2" + lints: + dependency: transitive + description: + name: lints + sha256: c35bb79562d980e9a453fc715854e1ed39e24e7d0297a880ef54e17f9874a9d7 + url: "https://pub.dev" + source: hosted + version: "5.1.1" matcher: dependency: transitive description: name: matcher - url: "https://pub.dartlang.org" + sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 + url: "https://pub.dev" + source: hosted + version: "0.12.17" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec + url: "https://pub.dev" source: hosted - version: "0.12.10" + version: "0.11.1" meta: dependency: transitive description: name: meta - url: "https://pub.dartlang.org" + sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c + url: "https://pub.dev" source: hosted - version: "1.3.0" - package_info: + version: "1.16.0" + mime: dependency: transitive description: - name: package_info - url: "https://pub.dartlang.org" + name: mime + sha256: "41a20518f0cb1256669420fdba0cd90d21561e560ac240f26ef8322e45bb7ed6" + url: "https://pub.dev" source: hosted - version: "0.4.3+4" + version: "2.0.0" + nested: + dependency: transitive + description: + name: nested + sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20" + url: "https://pub.dev" + source: hosted + version: "1.0.0" path: dependency: "direct main" description: name: path - url: "https://pub.dartlang.org" + sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" + url: "https://pub.dev" source: hosted - version: "1.8.0" + version: "1.9.1" path_parsing: dependency: transitive description: name: path_parsing - url: "https://pub.dartlang.org" + sha256: "883402936929eac138ee0a45da5b0f2c80f89913e6dc3bf77eb65b84b409c6ca" + url: "https://pub.dev" source: hosted - version: "0.1.4" + version: "1.1.0" path_provider: dependency: "direct main" description: name: path_provider - url: "https://pub.dartlang.org" + sha256: "50c5dd5b6e1aaf6fb3a78b33f6aa3afca52bf903a8a5298f53101fdaee55bbcd" + url: "https://pub.dev" source: hosted - version: "1.6.28" - path_provider_linux: + version: "2.1.5" + path_provider_android: dependency: transitive description: - name: path_provider_linux - url: "https://pub.dartlang.org" + name: path_provider_android + sha256: f2c65e21139ce2c3dad46922be8272bb5963516045659e71bb16e151c93b580e + url: "https://pub.dev" source: hosted - version: "0.0.1+2" - path_provider_macos: + version: "2.2.22" + path_provider_foundation: dependency: transitive description: - name: path_provider_macos - url: "https://pub.dartlang.org" + name: path_provider_foundation + sha256: "6d13aece7b3f5c5a9731eaf553ff9dcbc2eff41087fd2df587fd0fed9a3eb0c4" + url: "https://pub.dev" source: hosted - version: "0.0.4+8" + version: "2.5.1" + path_provider_linux: + dependency: transitive + description: + name: path_provider_linux + sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279 + url: "https://pub.dev" + source: hosted + version: "2.2.1" path_provider_platform_interface: dependency: transitive description: name: path_provider_platform_interface - url: "https://pub.dartlang.org" + sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334" + url: "https://pub.dev" source: hosted - version: "1.0.4" + version: "2.1.2" path_provider_windows: dependency: transitive description: name: path_provider_windows - url: "https://pub.dartlang.org" + sha256: bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7 + url: "https://pub.dev" source: hosted - version: "0.0.5" + version: "2.3.0" pdf: dependency: "direct main" description: name: pdf - url: "https://pub.dartlang.org" - source: hosted - version: "1.13.0" - pedantic: - dependency: transitive - description: - name: pedantic - url: "https://pub.dartlang.org" + sha256: "28eacad99bffcce2e05bba24e50153890ad0255294f4dd78a17075a2ba5c8416" + url: "https://pub.dev" source: hosted - version: "1.11.1" + version: "3.11.3" permission_handler: dependency: "direct main" description: name: permission_handler - url: "https://pub.dartlang.org" + sha256: bc917da36261b00137bbc8896bf1482169cd76f866282368948f032c8c1caae1 + url: "https://pub.dev" + source: hosted + version: "12.0.1" + permission_handler_android: + dependency: transitive + description: + name: permission_handler_android + sha256: "1e3bc410ca1bf84662104b100eb126e066cb55791b7451307f9708d4007350e6" + url: "https://pub.dev" + source: hosted + version: "13.0.1" + permission_handler_apple: + dependency: transitive + description: + name: permission_handler_apple + sha256: f000131e755c54cf4d84a5d8bd6e4149e262cc31c5a8b1d698de1ac85fa41023 + url: "https://pub.dev" + source: hosted + version: "9.4.7" + permission_handler_html: + dependency: transitive + description: + name: permission_handler_html + sha256: "38f000e83355abb3392140f6bc3030660cfaef189e1f87824facb76300b4ff24" + url: "https://pub.dev" source: hosted - version: "5.1.0+2" + version: "0.1.3+5" permission_handler_platform_interface: dependency: transitive description: name: permission_handler_platform_interface - url: "https://pub.dartlang.org" + sha256: eb99b295153abce5d683cac8c02e22faab63e50679b937fa1bf67d58bb282878 + url: "https://pub.dev" source: hosted - version: "2.0.2" + version: "4.3.0" + permission_handler_windows: + dependency: transitive + description: + name: permission_handler_windows + sha256: "1a790728016f79a41216d88672dbc5df30e686e811ad4e698bfc51f76ad91f1e" + url: "https://pub.dev" + source: hosted + version: "0.2.1" petitparser: dependency: transitive description: name: petitparser - url: "https://pub.dartlang.org" + sha256: "91bd59303e9f769f108f8df05e371341b15d59e995e6806aefab827b58336675" + url: "https://pub.dev" source: hosted - version: "3.1.0" + version: "7.0.2" platform: dependency: transitive description: name: platform - url: "https://pub.dartlang.org" + sha256: "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984" + url: "https://pub.dev" source: hosted - version: "3.0.0" + version: "3.1.6" plugin_platform_interface: dependency: transitive description: name: plugin_platform_interface - url: "https://pub.dartlang.org" + sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" + url: "https://pub.dev" source: hosted - version: "1.0.3" - process: + version: "2.1.8" + posix: dependency: transitive description: - name: process - url: "https://pub.dartlang.org" + name: posix + sha256: "185ef7606574f789b40f289c233efa52e96dead518aed988e040a10737febb07" + url: "https://pub.dev" + source: hosted + version: "6.5.0" + provider: + dependency: "direct main" + description: + name: provider + sha256: "4e82183fa20e5ca25703ead7e05de9e4cceed1fbd1eadc1ac3cb6f565a09f272" + url: "https://pub.dev" source: hosted - version: "3.0.13" + version: "6.1.5+1" qr: dependency: transitive description: name: qr - url: "https://pub.dartlang.org" + sha256: "5a1d2586170e172b8a8c8470bbbffd5eb0cd38a66c0d77155ea138d3af3a4445" + url: "https://pub.dev" + source: hosted + version: "3.0.2" + receive_sharing_intent: + dependency: "direct main" + description: + name: receive_sharing_intent + sha256: ec76056e4d258ad708e76d85591d933678625318e411564dcb9059048ca3a593 + url: "https://pub.dev" + source: hosted + version: "1.8.1" + record: + dependency: "direct main" + description: + name: record + sha256: d5b6b334f3ab02460db6544e08583c942dbf23e3504bf1e14fd4cbe3d9409277 + url: "https://pub.dev" + source: hosted + version: "6.2.0" + record_android: + dependency: transitive + description: + name: record_android + sha256: "94783f08403aed33ffb68797bf0715b0812eb852f3c7985644c945faea462ba1" + url: "https://pub.dev" + source: hosted + version: "1.5.1" + record_ios: + dependency: transitive + description: + name: record_ios + sha256: "8df7c136131bd05efc19256af29b2ba6ccc000ccc2c80d4b6b6d7a8d21a3b5a9" + url: "https://pub.dev" + source: hosted + version: "1.2.0" + record_linux: + dependency: transitive + description: + name: record_linux + sha256: c31a35cc158cd666fc6395f7f56fc054f31685571684be6b97670a27649ce5c7 + url: "https://pub.dev" source: hosted version: "1.3.0" - quiver: + record_macos: dependency: transitive description: - name: quiver - url: "https://pub.dartlang.org" + name: record_macos + sha256: "084902e63fc9c0c224c29203d6c75f0bdf9b6a40536c9d916393c8f4c4256488" + url: "https://pub.dev" source: hosted - version: "2.1.5" - receive_sharing_intent: - dependency: "direct main" + version: "1.2.1" + record_platform_interface: + dependency: transitive description: - name: receive_sharing_intent - url: "https://pub.dartlang.org" + name: record_platform_interface + sha256: "8a81dbc4e14e1272a285bbfef6c9136d070a47d9b0d1f40aa6193516253ee2f6" + url: "https://pub.dev" source: hosted - version: "1.4.5" - sentry: + version: "1.5.0" + record_web: + dependency: transitive + description: + name: record_web + sha256: "7e9846981c1f2d111d86f0ae3309071f5bba8b624d1c977316706f08fc31d16d" + url: "https://pub.dev" + source: hosted + version: "1.3.0" + record_windows: dependency: transitive description: - name: sentry - url: "https://pub.dartlang.org" + name: record_windows + sha256: "223258060a1d25c62bae18282c16783f28581ec19401d17e56b5205b9f039d78" + url: "https://pub.dev" source: hosted - version: "4.0.6" - sentry_flutter: + version: "1.0.7" + share_plus: dependency: "direct main" description: - name: sentry_flutter - url: "https://pub.dartlang.org" + name: share_plus + sha256: d7dc0630a923883c6328ca31b89aa682bacbf2f8304162d29f7c6aaff03a27a1 + url: "https://pub.dev" source: hosted - version: "4.0.6" + version: "11.1.0" + share_plus_platform_interface: + dependency: transitive + description: + name: share_plus_platform_interface + sha256: "88023e53a13429bd65d8e85e11a9b484f49d4c190abbd96c7932b74d6927cc9a" + url: "https://pub.dev" + source: hosted + version: "6.1.0" shared_preferences: dependency: "direct main" description: name: shared_preferences - url: "https://pub.dartlang.org" + sha256: "2939ae520c9024cb197fc20dee269cd8cdbf564c8b5746374ec6cacdc5169e64" + url: "https://pub.dev" source: hosted - version: "0.5.12+4" - shared_preferences_linux: + version: "2.5.4" + shared_preferences_android: dependency: transitive description: - name: shared_preferences_linux - url: "https://pub.dartlang.org" + name: shared_preferences_android + sha256: "8374d6200ab33ac99031a852eba4c8eb2170c4bf20778b3e2c9eccb45384fb41" + url: "https://pub.dev" + source: hosted + version: "2.4.21" + shared_preferences_foundation: + dependency: transitive + description: + name: shared_preferences_foundation + sha256: "4e7eaffc2b17ba398759f1151415869a34771ba11ebbccd1b0145472a619a64f" + url: "https://pub.dev" source: hosted - version: "0.0.2+4" - shared_preferences_macos: + version: "2.5.6" + shared_preferences_linux: dependency: transitive description: - name: shared_preferences_macos - url: "https://pub.dartlang.org" + name: shared_preferences_linux + sha256: "580abfd40f415611503cae30adf626e6656dfb2f0cee8f465ece7b6defb40f2f" + url: "https://pub.dev" source: hosted - version: "0.0.1+11" + version: "2.4.1" shared_preferences_platform_interface: dependency: transitive description: name: shared_preferences_platform_interface - url: "https://pub.dartlang.org" + sha256: "57cbf196c486bc2cf1f02b85784932c6094376284b3ad5779d1b1c6c6a816b80" + url: "https://pub.dev" source: hosted - version: "1.0.4" + version: "2.4.1" shared_preferences_web: dependency: transitive description: name: shared_preferences_web - url: "https://pub.dartlang.org" + sha256: c49bd060261c9a3f0ff445892695d6212ff603ef3115edbb448509d407600019 + url: "https://pub.dev" source: hosted - version: "0.1.2+7" + version: "2.4.3" shared_preferences_windows: dependency: transitive description: name: shared_preferences_windows - url: "https://pub.dartlang.org" + sha256: "94ef0f72b2d71bc3e700e025db3710911bd51a71cefb65cc609dd0d9a982e3c1" + url: "https://pub.dev" source: hosted - version: "0.0.2+3" + version: "2.4.1" sky_engine: dependency: transitive description: flutter source: sdk - version: "0.0.99" + version: "0.0.0" source_span: dependency: transitive description: name: source_span - url: "https://pub.dartlang.org" + sha256: "56a02f1f4cd1a2d96303c0144c93bd6d909eea6bee6bf5a0e0b685edbd4c47ab" + url: "https://pub.dev" source: hosted - version: "1.8.1" + version: "1.10.2" sqflite: dependency: "direct main" description: name: sqflite - url: "https://pub.dartlang.org" + sha256: e2297b1da52f127bc7a3da11439985d9b536f75070f3325e62ada69a5c585d03 + url: "https://pub.dev" source: hosted - version: "1.3.2+4" + version: "2.4.2" + sqflite_android: + dependency: transitive + description: + name: sqflite_android + sha256: ecd684501ebc2ae9a83536e8b15731642b9570dc8623e0073d227d0ee2bfea88 + url: "https://pub.dev" + source: hosted + version: "2.4.2+2" sqflite_common: dependency: transitive description: name: sqflite_common - url: "https://pub.dartlang.org" + sha256: "6ef422a4525ecc601db6c0a2233ff448c731307906e92cabc9ba292afaae16a6" + url: "https://pub.dev" + source: hosted + version: "2.5.6" + sqflite_darwin: + dependency: transitive + description: + name: sqflite_darwin + sha256: "279832e5cde3fe99e8571879498c9211f3ca6391b0d818df4e17d9fff5c6ccb3" + url: "https://pub.dev" source: hosted - version: "1.0.3+3" + version: "2.4.2" + sqflite_platform_interface: + dependency: transitive + description: + name: sqflite_platform_interface + sha256: "8dd4515c7bdcae0a785b0062859336de775e8c65db81ae33dd5445f35be61920" + url: "https://pub.dev" + source: hosted + version: "2.4.0" stack_trace: dependency: transitive description: name: stack_trace - url: "https://pub.dartlang.org" + sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" + url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.12.1" stream_channel: dependency: transitive description: name: stream_channel - url: "https://pub.dartlang.org" + sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.4" string_scanner: dependency: transitive description: name: string_scanner - url: "https://pub.dartlang.org" + sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" + url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.4.1" synchronized: dependency: transitive description: name: synchronized - url: "https://pub.dartlang.org" + sha256: c254ade258ec8282947a0acbbc90b9575b4f19673533ee46f2f6e9b3aeefd7c0 + url: "https://pub.dev" source: hosted - version: "2.2.0+2" + version: "3.4.0" term_glyph: dependency: transitive description: name: term_glyph - url: "https://pub.dartlang.org" + sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" + url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.2.2" test_api: dependency: transitive description: name: test_api - url: "https://pub.dartlang.org" + sha256: "522f00f556e73044315fa4585ec3270f1808a4b186c936e612cab0b565ff1e00" + url: "https://pub.dev" source: hosted - version: "0.3.0" + version: "0.7.6" tuple: dependency: "direct main" description: name: tuple - url: "https://pub.dartlang.org" + sha256: a97ce2013f240b2f3807bcbaf218765b6f301c3eff91092bcfa23a039e7dd151 + url: "https://pub.dev" source: hosted - version: "1.0.3" + version: "2.0.2" typed_data: dependency: transitive description: name: typed_data - url: "https://pub.dartlang.org" + sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006 + url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.4.0" + url_launcher_linux: + dependency: transitive + description: + name: url_launcher_linux + sha256: d5e14138b3bc193a0f63c10a53c94b91d399df0512b1f29b94a043db7482384a + url: "https://pub.dev" + source: hosted + version: "3.2.2" + url_launcher_platform_interface: + dependency: transitive + description: + name: url_launcher_platform_interface + sha256: "552f8a1e663569be95a8190206a38187b531910283c3e982193e4f2733f01029" + url: "https://pub.dev" + source: hosted + version: "2.3.2" + url_launcher_web: + dependency: transitive + description: + name: url_launcher_web + sha256: "4bd2b7b4dc4d4d0b94e5babfffbca8eac1a126c7f3d6ecbc1a11013faa3abba2" + url: "https://pub.dev" + source: hosted + version: "2.4.1" + url_launcher_windows: + dependency: transitive + description: + name: url_launcher_windows + sha256: "712c70ab1b99744ff066053cbe3e80c73332b38d46e5e945c98689b2e66fc15f" + url: "https://pub.dev" + source: hosted + version: "3.1.5" uuid: dependency: "direct main" description: name: uuid - url: "https://pub.dartlang.org" + sha256: "1fef9e8e11e2991bb773070d4656b7bd5d850967a2456cfc83cf47925ba79489" + url: "https://pub.dev" source: hosted - version: "2.2.2" + version: "4.5.3" vector_math: dependency: transitive description: name: vector_math - url: "https://pub.dartlang.org" + sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b + url: "https://pub.dev" + source: hosted + version: "2.2.0" + vm_service: + dependency: transitive + description: + name: vm_service + sha256: "45caa6c5917fa127b5dbcfbd1fa60b14e583afdc08bfc96dda38886ca252eb60" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "15.0.2" + web: + dependency: transitive + description: + name: web + sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a" + url: "https://pub.dev" + source: hosted + version: "1.1.1" win32: dependency: transitive description: name: win32 - url: "https://pub.dartlang.org" + sha256: d7cb55e04cd34096cd3a79b3330245f54cb96a370a1c27adb3c84b917de8b08e + url: "https://pub.dev" source: hosted - version: "2.2.5" + version: "5.15.0" xdg_directories: dependency: transitive description: name: xdg_directories - url: "https://pub.dartlang.org" + sha256: "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15" + url: "https://pub.dev" source: hosted - version: "0.1.2" + version: "1.1.0" xml: dependency: transitive description: name: xml - url: "https://pub.dartlang.org" + sha256: "971043b3a0d3da28727e40ed3e0b5d18b742fa5a68665cca88e74b7876d5e025" + url: "https://pub.dev" source: hosted - version: "4.5.1" + version: "6.6.1" yaml: dependency: transitive description: name: yaml - url: "https://pub.dartlang.org" + sha256: b9da305ac7c39faa3f030eccd175340f968459dae4af175130b3fc47e40d76ce + url: "https://pub.dev" source: hosted - version: "2.2.1" + version: "3.1.3" sdks: - dart: ">=2.13.0 <3.0.0" - flutter: ">=1.22.2" + dart: ">=3.9.0 <4.0.0" + flutter: ">=3.35.0" diff --git a/pubspec.yaml b/pubspec.yaml index 0156a26..0574db5 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -15,39 +15,36 @@ publish_to: "none" # Remove this line if you wish to publish to pub.dev # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. # Read more about iOS versioning at # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html -version: 1.1.1+3 +version: 1.0.0+1 environment: - sdk: ">=2.7.0 <3.0.0" + sdk: ">=3.3.0 <4.0.0" dependencies: flutter: sdk: flutter - uuid: ^2.0.0 - shared_preferences: ^0.5.10 - tuple: ^1.0.3 + uuid: ^4.5.1 + shared_preferences: ^2.5.3 + tuple: ^2.0.2 + provider: ^6.1.5 - flutter_flux: ^4.1.3 - archive: ^2.0.13 - path_provider: ^1.6.14 - path: ^1.7.0 - permission_handler: ^5.0.1+1 - flutter_share: ^1.0.2+1 - file_picker: ^1.13.3 - audioplayers: ^0.13.2 - flutter_audio_recorder: ^0.5.5 - pdf: ^1.11.1 - google_fonts: ^1.1.2 - receive_sharing_intent: ^1.4.1 - clipboard_manager: ^0.0.4 + archive: ^4.0.7 + path_provider: ^2.1.5 + path: ^1.9.1 + permission_handler: ^12.0.1 + share_plus: ^11.1.0 + file_picker: ^10.3.2 + audioplayers: ^6.5.0 + record: ^6.1.2 + another_flushbar: ^1.12.30 + pdf: ^3.11.3 + google_fonts: ^6.3.2 + receive_sharing_intent: ^1.8.1 # html: ^0.14.0+3 # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. - cupertino_icons: ^0.1.3 - flutter_launcher_icons: ^0.8.0 - sqflite: ^1.3.0 - flutter_file_dialog: ^1.0.0 - sentry_flutter: ^4.0.6 + cupertino_icons: ^1.0.8 + sqflite: ^2.4.2 flutter_icons: android: true @@ -57,6 +54,8 @@ flutter_icons: dev_dependencies: flutter_test: sdk: flutter + flutter_launcher_icons: ^0.14.4 + flutter_lints: ^5.0.0 # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec @@ -71,16 +70,6 @@ flutter: # To add assets to your application, add an assets section, like this: assets: - assets/initial_data.json - - assets/initial_notes.json - # - assets/fonts/RobotoMono.ttf - # - assets/fonts/arial.ttf - # - assets/fonts/Hind-Bold.ttf - # - assets/fonts/Hind-Light.ttf - # - assets/fonts/Hind-Medium.ttf - # - assets/fonts/Hind-Regular.ttf - # - assets/fonts/Hind-SemiBold.ttf - # - assets/fonts/OpenSans-Bold.ttf - # - assets/fonts/OpenSans-Regular.ttf # An image asset can refer to one or more resolution-specific "variants", see # https://flutter.dev/assets-and-images/#resolution-aware. # For details regarding adding assets from package dependencies, see diff --git a/test/widget_test.dart b/test/widget_test.dart index 767b2e8..05e975b 100644 --- a/test/widget_test.dart +++ b/test/widget_test.dart @@ -1,30 +1,16 @@ -// This is a basic Flutter widget test. -// -// To perform an interaction with a widget in your test, use the WidgetTester -// utility that Flutter provides. For example, you can send tap and scroll -// gestures. You can also use WidgetTester to find child widgets in the widget -// tree, read text, and verify that the values of widget properties are correct. - import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:sound/main.dart'; - void main() { - testWidgets('Counter increments smoke test', (WidgetTester tester) async { - // Build our app and trigger a frame. - await tester.pumpWidget(App()); - - // Verify that our counter starts at 0. - expect(find.text('0'), findsOneWidget); - expect(find.text('1'), findsNothing); - - // Tap the '+' icon and trigger a frame. - await tester.tap(find.byIcon(Icons.add)); - await tester.pump(); + testWidgets('basic widget smoke test', (WidgetTester tester) async { + await tester.pumpWidget( + const MaterialApp( + home: Scaffold( + body: Text('SketChord'), + ), + ), + ); - // Verify that our counter has incremented. - expect(find.text('0'), findsNothing); - expect(find.text('1'), findsOneWidget); + expect(find.text('SketChord'), findsOneWidget); }); } From 5a3a3c0c83421fe696e1a6b7fb4769c2f89f33b1 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 1 Mar 2026 04:00:56 +0100 Subject: [PATCH 140/146] Restore parity for ideas and sets workflows --- analysis_options.yaml | 10 ++ lib/audio_ideas.dart | 270 +++++++++++++++++++++++++++----- lib/collections_page.dart | 319 ++++++++++++++++++++++++++++++++++---- lib/note_editor.dart | 18 ++- 4 files changed, 547 insertions(+), 70 deletions(-) diff --git a/analysis_options.yaml b/analysis_options.yaml index 5de6c67..08df032 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -1,3 +1,13 @@ analyzer: exclude: - build/** + - lib/audio_list.dart + - lib/audio_list_store.dart + - lib/collection_editor_store.dart + - lib/collections.dart + - lib/collections_store.dart + - lib/menu_store.dart + - lib/note_search_view.dart + - lib/dialogs/add_to_collection_dialog.dart + - lib/dialogs/change_number_dialog.dart + - lib/dialogs/choose_note_dialog.dart diff --git a/lib/audio_ideas.dart b/lib/audio_ideas.dart index 6ac4013..5b76255 100644 --- a/lib/audio_ideas.dart +++ b/lib/audio_ideas.dart @@ -1,8 +1,17 @@ +import 'dart:async'; +import 'dart:io'; + +import 'package:file_picker/file_picker.dart'; import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; import 'package:sound/dialogs/audio_action_dialog.dart'; +import 'package:sound/dialogs/audio_import_dialog.dart'; import 'package:sound/editor_views/audio.dart'; +import 'package:sound/file_manager.dart'; import 'package:sound/local_storage.dart'; import 'package:sound/model.dart'; +import 'package:sound/recorder_bottom_sheet.dart'; +import 'package:sound/recorder_store.dart'; import 'package:sound/share.dart'; class AudioIdeasPage extends StatefulWidget { @@ -16,14 +25,29 @@ class AudioIdeasPage extends StatefulWidget { class _AudioIdeasPageState extends State { List _ideas = []; + final TextEditingController _searchController = TextEditingController(); + StreamSubscription? _recordingSub; bool _loading = true; + bool _searching = false; + String _search = ''; @override void initState() { super.initState(); + _recordingSub = recorderBottomSheetStore.onRecordingFinished.listen((f) async { + await LocalStorage().addAudioIdea(f); + await _loadIdeas(); + }); _loadIdeas(); } + @override + void dispose() { + _recordingSub?.cancel(); + _searchController.dispose(); + super.dispose(); + } + Future _loadIdeas() async { final ideas = await LocalStorage().getAudioIdeas(); if (!mounted) return; @@ -45,64 +69,226 @@ class _AudioIdeasPageState extends State { }, file); } + Future _toggleStar(AudioFile file) async { + file.starred = !file.starred; + await LocalStorage().syncAudioFile(file); + await _loadIdeas(); + } + + Future _renameIdea(AudioFile file) async { + final controller = TextEditingController(text: file.name); + await showDialog( + context: context, + builder: (context) => AlertDialog( + title: const Text('Rename Idea'), + content: TextField( + controller: controller, + autofocus: true, + maxLines: 1, + ), + actions: [ + TextButton( + onPressed: () => Navigator.pop(context), + child: const Text('Cancel'), + ), + ElevatedButton( + onPressed: () async { + file.name = controller.text.trim().isEmpty + ? 'Untitled idea' + : controller.text.trim(); + await LocalStorage().syncAudioFile(file); + if (mounted) Navigator.pop(context); + await _loadIdeas(); + }, + child: const Text('Apply'), + ) + ], + ), + ); + } + + Future _duplicateIdea(AudioFile file) async { + final copy = await FileManager().copyToNew(file); + copy.starred = file.starred; + copy.text = file.text; + await LocalStorage().addAudioIdea(copy); + await _loadIdeas(); + } + + Future _pickAndImportAudio() async { + final result = await FilePicker.platform.pickFiles( + allowMultiple: true, + type: FileType.custom, + allowedExtensions: ['m4a', 'wav', 'mp3', 'aac'], + ); + if (result == null) return; + final files = result.paths.whereType().map(File.new).toList(); + if (files.isEmpty || !mounted) return; + showAudioImportDialog(context, files); + await Future.delayed(const Duration(milliseconds: 250)); + await _loadIdeas(); + } + + Future _toggleRecording() async { + if (recorderBottomSheetStore.state == RecorderState.recording) { + await stopAction(); + } else { + await startRecordingAction(); + } + } + + List _filteredIdeas() { + final q = _search.trim().toLowerCase(); + if (q.isEmpty) return _ideas; + return _ideas.where((f) { + return f.name.toLowerCase().contains(q) || + f.text.toLowerCase().contains(q) || + f.durationString.toLowerCase().contains(q); + }).toList(); + } + + List _buildIdeaTiles(List files) { + final list = []; + final starred = files.where((f) => f.starred).toList(); + final rest = files.where((f) => !f.starred).toList(); + + void addGroup(String title, List entries) { + if (entries.isEmpty) return; + list.add(Padding( + padding: const EdgeInsets.fromLTRB(16, 10, 16, 4), + child: Row( + children: [ + Text(title, style: Theme.of(context).textTheme.bodySmall), + if (title == 'Starred') + const Padding( + padding: EdgeInsets.only(left: 6), + child: Icon(Icons.star, size: 14), + ), + ], + ), + )); + + for (final file in entries) { + list.add(Dismissible( + key: ValueKey(file.id), + direction: DismissDirection.endToStart, + onDismissed: (_) => _deleteIdea(file), + background: Container( + alignment: Alignment.centerRight, + color: Colors.redAccent, + padding: const EdgeInsets.symmetric(horizontal: 16), + child: const Icon(Icons.delete), + ), + child: ListTile( + leading: IconButton( + icon: const Icon(Icons.play_arrow), + onPressed: () => playInDialog(context, file), + ), + title: Text(file.name), + subtitle: Text(file.durationString), + trailing: PopupMenuButton( + onSelected: (action) async { + if (action == 'share') { + await shareFile(file.path); + } else if (action == 'move') { + await _moveIdea(file); + } else if (action == 'delete') { + await _deleteIdea(file); + } else if (action == 'star') { + await _toggleStar(file); + } else if (action == 'rename') { + await _renameIdea(file); + } else if (action == 'duplicate') { + await _duplicateIdea(file); + } + }, + itemBuilder: (context) => [ + const PopupMenuItem(value: 'share', child: Text('Share')), + const PopupMenuItem(value: 'move', child: Text('Move to Note')), + PopupMenuItem( + value: 'star', + child: Text(file.starred ? 'Unstar' : 'Star'), + ), + const PopupMenuItem(value: 'rename', child: Text('Rename')), + const PopupMenuItem(value: 'duplicate', child: Text('Duplicate')), + const PopupMenuItem(value: 'delete', child: Text('Delete')), + ], + ), + ), + )); + } + } + + if (starred.isNotEmpty) { + addGroup('Starred', starred); + addGroup('Other', rest); + } else { + addGroup('Ideas', files); + } + return list; + } + @override Widget build(BuildContext context) { + final recorderStore = context.watch(); + final showSheet = recorderStore.state == RecorderState.recording || + recorderStore.state == RecorderState.playing || + recorderStore.state == RecorderState.pausing; + final ideas = _filteredIdeas(); + return Scaffold( appBar: AppBar( leading: IconButton( icon: const Icon(Icons.menu), onPressed: widget.onMenuPressed, ), - title: const Text('Ideas'), + title: _searching + ? TextField( + controller: _searchController, + autofocus: true, + decoration: const InputDecoration( + border: InputBorder.none, + hintText: 'Search ideas...', + ), + onChanged: (value) => setState(() => _search = value), + ) + : const Text('Ideas'), + actions: [ + IconButton( + icon: Icon(_searching ? Icons.close : Icons.search), + onPressed: () { + setState(() { + if (_searching) { + _searchController.clear(); + _search = ''; + } + _searching = !_searching; + }); + }, + ), + IconButton( + icon: const Icon(Icons.upload_file), + onPressed: _pickAndImportAudio, + ), + ], ), body: _loading ? const Center(child: CircularProgressIndicator()) - : _ideas.isEmpty + : ideas.isEmpty ? const Center(child: Text('No audio ideas yet')) : RefreshIndicator( onRefresh: _loadIdeas, - child: ListView.builder( - itemCount: _ideas.length, - itemBuilder: (context, index) { - final file = _ideas[index]; - return Dismissible( - key: ValueKey(file.id), - direction: DismissDirection.endToStart, - onDismissed: (_) => _deleteIdea(file), - background: Container( - alignment: Alignment.centerRight, - color: Colors.redAccent, - padding: const EdgeInsets.symmetric(horizontal: 16), - child: const Icon(Icons.delete), - ), - child: ListTile( - leading: IconButton( - icon: const Icon(Icons.play_arrow), - onPressed: () => playInDialog(context, file), - ), - title: Text(file.name), - subtitle: Text(file.durationString), - trailing: PopupMenuButton( - onSelected: (action) async { - if (action == 'share') { - await shareFile(file.path); - } else if (action == 'move') { - await _moveIdea(file); - } else if (action == 'delete') { - await _deleteIdea(file); - } - }, - itemBuilder: (context) => const [ - PopupMenuItem(value: 'share', child: Text('Share')), - PopupMenuItem(value: 'move', child: Text('Move to Note')), - PopupMenuItem(value: 'delete', child: Text('Delete')), - ], - ), - ), - ); - }, + child: ListView( + children: _buildIdeaTiles(ideas), ), ), + bottomSheet: showSheet ? const RecorderBottomSheet() : null, + floatingActionButton: FloatingActionButton( + onPressed: _toggleRecording, + child: Icon( + recorderStore.state == RecorderState.recording ? Icons.stop : Icons.mic, + ), + ), ); } } diff --git a/lib/collections_page.dart b/lib/collections_page.dart index bc3819a..2ba1793 100644 --- a/lib/collections_page.dart +++ b/lib/collections_page.dart @@ -1,7 +1,83 @@ import 'package:flutter/material.dart'; +import 'package:sound/backup.dart'; import 'package:sound/local_storage.dart'; import 'package:sound/model.dart'; import 'package:sound/note_editor.dart'; +import 'package:sound/note_viewer.dart'; +import 'package:sound/share.dart'; + +Future showAddNoteToSetDialog(BuildContext context, Note note) async { + final collections = await LocalStorage().getCollections(); + if (!context.mounted) return; + + final selected = {}; + for (final c in collections) { + if (c.notes.any((n) => n.id == note.id)) { + selected.add(c.id); + } + } + + await showDialog( + context: context, + builder: (context) => StatefulBuilder( + builder: (context, setState) => AlertDialog( + title: const Text('Add to Set'), + content: SizedBox( + width: 460, + height: 420, + child: collections.isEmpty + ? const Center(child: Text('No sets yet')) + : ListView.builder( + itemCount: collections.length, + itemBuilder: (context, index) { + final collection = collections[index]; + return CheckboxListTile( + value: selected.contains(collection.id), + title: Text( + collection.title.isEmpty ? 'Untitled Set' : collection.title, + ), + subtitle: Text('${collection.notes.length} notes'), + onChanged: (value) { + setState(() { + if (value ?? false) { + selected.add(collection.id); + } else { + selected.remove(collection.id); + } + }); + }, + ); + }, + ), + ), + actions: [ + TextButton( + onPressed: () => Navigator.pop(context), + child: const Text('Cancel'), + ), + ElevatedButton( + onPressed: () async { + for (final c in collections) { + final has = c.notes.any((n) => n.id == note.id); + final selectedNow = selected.contains(c.id); + if (selectedNow && !has) { + c.notes.add(note); + await LocalStorage().syncCollection(c); + } + if (!selectedNow && has) { + c.notes.removeWhere((n) => n.id == note.id); + await LocalStorage().syncCollection(c); + } + } + if (context.mounted) Navigator.pop(context); + }, + child: const Text('Apply'), + ), + ], + ), + ), + ); +} class CollectionsPage extends StatefulWidget { final VoidCallback onMenuPressed; @@ -14,7 +90,13 @@ class CollectionsPage extends StatefulWidget { class _CollectionsPageState extends State { List _collections = []; + final Set _selectedIds = {}; bool _loading = true; + bool _searching = false; + String _search = ''; + final TextEditingController _searchController = TextEditingController(); + + bool get _selectionMode => _selectedIds.isNotEmpty; @override void initState() { @@ -22,6 +104,12 @@ class _CollectionsPageState extends State { _loadCollections(); } + @override + void dispose() { + _searchController.dispose(); + super.dispose(); + } + Future _loadCollections() async { final collections = await LocalStorage().getCollections(); if (!mounted) return; @@ -47,36 +135,159 @@ class _CollectionsPageState extends State { await _loadCollections(); } + void _toggleSelection(NoteCollection c) { + setState(() { + if (_selectedIds.contains(c.id)) { + _selectedIds.remove(c.id); + } else { + _selectedIds.add(c.id); + } + }); + } + + Future _deleteSelected() async { + final selected = + _collections.where((c) => _selectedIds.contains(c.id)).toList(); + for (final c in selected) { + await LocalStorage().deleteCollection(c); + } + _selectedIds.clear(); + await _loadCollections(); + } + + Future _setStarSelected(bool starred) async { + for (final c in _collections.where((c) => _selectedIds.contains(c.id))) { + c.starred = starred; + await LocalStorage().syncCollection(c); + } + _selectedIds.clear(); + await _loadCollections(); + } + + List _filteredCollections() { + final q = _search.trim().toLowerCase(); + if (q.isEmpty) return _collections; + return _collections.where((c) { + return c.title.toLowerCase().contains(q) || + c.description.toLowerCase().contains(q); + }).toList(); + } + @override Widget build(BuildContext context) { - return Scaffold( - appBar: AppBar( + final collections = _filteredCollections(); + final starred = collections.where((c) => c.starred).toList(); + final unstarred = collections.where((c) => !c.starred).toList(); + + PreferredSizeWidget appBar; + if (_selectionMode) { + appBar = AppBar( + leading: IconButton( + icon: const Icon(Icons.clear), + onPressed: () => setState(() => _selectedIds.clear()), + ), + title: Text('${_selectedIds.length}'), + actions: [ + IconButton( + icon: const Icon(Icons.star), + onPressed: () => _setStarSelected(true), + ), + IconButton( + icon: const Icon(Icons.star_border), + onPressed: () => _setStarSelected(false), + ), + IconButton( + icon: const Icon(Icons.delete), + onPressed: _deleteSelected, + ), + ], + ); + } else { + appBar = AppBar( leading: IconButton( icon: const Icon(Icons.menu), onPressed: widget.onMenuPressed, ), - title: const Text('Sets'), + title: _searching + ? TextField( + controller: _searchController, + autofocus: true, + decoration: const InputDecoration( + border: InputBorder.none, + hintText: 'Search sets...', + ), + onChanged: (v) => setState(() => _search = v), + ) + : const Text('Sets'), actions: [ + IconButton( + icon: Icon(_searching ? Icons.close : Icons.search), + onPressed: () { + setState(() { + if (_searching) { + _searchController.clear(); + _search = ''; + } + _searching = !_searching; + }); + }, + ), IconButton(icon: const Icon(Icons.add), onPressed: _createCollection), ], - ), + ); + } + + Widget list(List data, {String? title}) { + if (data.isEmpty) return const SizedBox.shrink(); + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + if (title != null) + Padding( + padding: const EdgeInsets.fromLTRB(16, 12, 16, 8), + child: Text(title, style: Theme.of(context).textTheme.bodySmall), + ), + ...data.map((c) { + final selected = _selectedIds.contains(c.id); + return ListTile( + tileColor: selected + ? Theme.of(context).colorScheme.surfaceContainerHighest + : null, + title: Text(c.title.isEmpty ? 'Untitled Set' : c.title), + subtitle: Text( + c.description.isEmpty + ? '${c.activeNotes.length} notes' + : '${c.description} • ${c.activeNotes.length} notes', + ), + leading: c.starred ? const Icon(Icons.star, size: 18) : null, + trailing: const Icon(Icons.chevron_right), + onLongPress: () => _toggleSelection(c), + onTap: () { + if (_selectionMode) { + _toggleSelection(c); + } else { + _openCollection(c); + } + }, + ); + }), + ], + ); + } + + return Scaffold( + appBar: appBar, body: _loading ? const Center(child: CircularProgressIndicator()) - : _collections.isEmpty + : collections.isEmpty ? const Center(child: Text('No sets yet')) : RefreshIndicator( onRefresh: _loadCollections, - child: ListView.builder( - itemCount: _collections.length, - itemBuilder: (context, index) { - final c = _collections[index]; - return ListTile( - title: Text(c.title.isEmpty ? 'Untitled Set' : c.title), - subtitle: Text('${c.activeNotes.length} notes'), - trailing: const Icon(Icons.chevron_right), - onTap: () => _openCollection(c), - ); - }, + child: ListView( + children: [ + if (starred.isNotEmpty) list(starred, title: 'Starred'), + list(unstarred, title: starred.isNotEmpty ? 'Other' : null), + ], ), ), ); @@ -123,6 +334,22 @@ class _CollectionEditorPageState extends State { if (mounted) Navigator.pop(context); } + Future _toggleStar() async { + _collection.starred = !_collection.starred; + await _save(); + setState(() {}); + } + + Future _exportCollectionZip() async { + final notes = _collection.activeNotes; + if (notes.isEmpty) return; + final path = await Backup().exportZip(notes); + if (path.isNotEmpty) { + await shareFile(path, + filename: '${_collection.title.isEmpty ? "set" : _collection.title}.zip'); + } + } + Future _addNotes() async { final notes = await LocalStorage().getActiveNotes(); if (!mounted) return; @@ -166,7 +393,8 @@ class _CollectionEditorPageState extends State { ), ElevatedButton( onPressed: () async { - _collection.notes = notes.where((n) => selected.contains(n.id)).toList(); + _collection.notes = + notes.where((n) => selected.contains(n.id)).toList(); await _save(); if (mounted) Navigator.pop(context); setState(() {}); @@ -187,6 +415,11 @@ class _CollectionEditorPageState extends State { appBar: AppBar( title: const Text('Edit Set'), actions: [ + IconButton( + icon: Icon(_collection.starred ? Icons.star : Icons.star_border), + onPressed: _toggleStar, + ), + IconButton(icon: const Icon(Icons.upload_file), onPressed: _exportCollectionZip), IconButton(icon: const Icon(Icons.playlist_add), onPressed: _addNotes), IconButton(icon: const Icon(Icons.delete), onPressed: _deleteCollection), ], @@ -209,22 +442,43 @@ class _CollectionEditorPageState extends State { onChanged: (_) => _save(), ), ), + if (_collection.lengthStr.isNotEmpty) + Padding( + padding: const EdgeInsets.only(top: 6), + child: Text('Length: ${_collection.lengthStr}'), + ), const SizedBox(height: 8), Expanded( - child: ListView.builder( + child: ReorderableListView.builder( itemCount: _collection.notes.length, + onReorder: (oldIndex, newIndex) async { + setState(() { + if (newIndex > oldIndex) newIndex -= 1; + final note = _collection.notes.removeAt(oldIndex); + _collection.notes.insert(newIndex, note); + }); + await _save(); + }, itemBuilder: (context, index) { final note = _collection.notes[index]; return ListTile( + key: ValueKey('${note.id}-$index'), title: Text(note.title.isEmpty ? 'Untitled Note' : note.title), - trailing: IconButton( - icon: const Icon(Icons.remove_circle_outline), - onPressed: () async { - setState(() { - _collection.notes.removeAt(index); - }); - await _save(); - }, + subtitle: Text(note.lengthStr.isEmpty ? '' : note.lengthStr), + trailing: Row( + mainAxisSize: MainAxisSize.min, + children: [ + IconButton( + icon: const Icon(Icons.remove_circle_outline), + onPressed: () async { + setState(() { + _collection.notes.removeAt(index); + }); + await _save(); + }, + ), + const Icon(Icons.drag_handle), + ], ), onTap: () { Navigator.push( @@ -232,6 +486,19 @@ class _CollectionEditorPageState extends State { MaterialPageRoute(builder: (context) => NoteEditor(note)), ); }, + onLongPress: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => NoteViewer( + note, + showAdditionalInformation: false, + showTitle: true, + showAudioFiles: true, + ), + ), + ); + }, ); }, ), diff --git a/lib/note_editor.dart b/lib/note_editor.dart index 33ea239..76aeba4 100644 --- a/lib/note_editor.dart +++ b/lib/note_editor.dart @@ -9,6 +9,7 @@ import 'package:tuple/tuple.dart'; import 'dialogs/color_picker_dialog.dart'; import 'dialogs/export_dialog.dart'; import 'dialogs/import_dialog.dart'; +import 'collections_page.dart'; import 'editor_store.dart'; import 'editor_views/additional_info.dart'; import 'editor_views/audio.dart'; @@ -33,7 +34,12 @@ class NoteEditor extends StatefulWidget { class NoteEditorState extends State { final GlobalKey _globalKey = GlobalKey(); - final List popupMenuActions = ['share', 'copy']; + final List popupMenuActions = ['share', 'copy', 'add_to_set']; + final Map popupMenuActionTitles = const { + 'share': 'Share', + 'copy': 'Copy to Clipboard', + 'add_to_set': 'Add to Set', + }; final Map dismissables = {}; StreamSubscription? _recordingSub; @@ -105,6 +111,11 @@ class NoteEditorState extends State { case 'copy': _copyToClipboard(store); break; + case 'add_to_set': + if (store.note != null) { + showAddNoteToSetDialog(context, store.note!); + } + break; default: break; } @@ -251,7 +262,10 @@ class NoteEditorState extends State { onSelected: (action) => _runPopupAction(store, action), itemBuilder: (context) { return popupMenuActions - .map((action) => PopupMenuItem(value: action, child: Text(action))) + .map((action) => PopupMenuItem( + value: action, + child: Text(popupMenuActionTitles[action] ?? action), + )) .toList(); }, ), From 11e569d1cc2ce785626e6477c92d635586a39848 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 1 Mar 2026 12:27:33 +0100 Subject: [PATCH 141/146] Add multi-platform release CI and backend PyInstaller packaging --- .github/workflows/release-main.yml | 169 ++++ README.md | 15 +- backend/Dockerfile.dev | 10 +- backend/README.md | 66 ++ backend/docker-compose.yaml | 26 +- .../pyinstaller/sketchord_sync_backend.spec | 43 ++ backend/pyproject.toml | 27 + backend/requirements.txt | 9 +- backend/scripts/build_pyinstaller.sh | 14 + backend/src/app.py | 59 +- .../src/sketchord_sync_backend/__init__.py | 4 + .../src/sketchord_sync_backend/__main__.py | 20 + backend/src/sketchord_sync_backend/app.py | 479 ++++++++++++ backend/src/sketchord_sync_backend/config.py | 24 + backend/src/sketchord_sync_backend/models.py | 85 ++ backend/src/sketchord_sync_backend/service.py | 317 ++++++++ .../storage/__init__.py | 20 + .../sketchord_sync_backend/storage/base.py | 99 +++ .../storage/rethink_repo.py | 288 +++++++ .../storage/sqlite_repo.py | 342 ++++++++ backend/uv.lock | 301 ++++++++ ios/Flutter/ephemeral/flutter_lldb_helper.py | 32 + ios/Flutter/ephemeral/flutter_lldbinit | 5 + lib/home.dart | 381 ++++++--- lib/local_storage.dart | 730 ++++++++++++++++-- lib/main.dart | 96 ++- lib/model.dart | 242 ++++-- lib/settings.dart | 145 +++- lib/sync_conflicts_page.dart | 135 ++++ lib/sync_debug_panel.dart | 109 +++ lib/sync_debug_store.dart | 50 ++ lib/sync_engine.dart | 224 ++++++ lib/sync_network.dart | 28 + lib/sync_status_store.dart | 59 ++ macos/Runner/DebugProfile.entitlements | 2 + macos/Runner/Release.entitlements | 2 + 36 files changed, 4319 insertions(+), 338 deletions(-) create mode 100644 .github/workflows/release-main.yml create mode 100644 backend/README.md create mode 100644 backend/pyinstaller/sketchord_sync_backend.spec create mode 100644 backend/pyproject.toml create mode 100755 backend/scripts/build_pyinstaller.sh create mode 100644 backend/src/sketchord_sync_backend/__init__.py create mode 100644 backend/src/sketchord_sync_backend/__main__.py create mode 100644 backend/src/sketchord_sync_backend/app.py create mode 100644 backend/src/sketchord_sync_backend/config.py create mode 100644 backend/src/sketchord_sync_backend/models.py create mode 100644 backend/src/sketchord_sync_backend/service.py create mode 100644 backend/src/sketchord_sync_backend/storage/__init__.py create mode 100644 backend/src/sketchord_sync_backend/storage/base.py create mode 100644 backend/src/sketchord_sync_backend/storage/rethink_repo.py create mode 100644 backend/src/sketchord_sync_backend/storage/sqlite_repo.py create mode 100644 backend/uv.lock create mode 100644 ios/Flutter/ephemeral/flutter_lldb_helper.py create mode 100644 ios/Flutter/ephemeral/flutter_lldbinit create mode 100644 lib/sync_conflicts_page.dart create mode 100644 lib/sync_debug_panel.dart create mode 100644 lib/sync_debug_store.dart create mode 100644 lib/sync_engine.dart create mode 100644 lib/sync_network.dart create mode 100644 lib/sync_status_store.dart diff --git a/.github/workflows/release-main.yml b/.github/workflows/release-main.yml new file mode 100644 index 0000000..73560c5 --- /dev/null +++ b/.github/workflows/release-main.yml @@ -0,0 +1,169 @@ +name: Build and Release (main) + +on: + push: + branches: + - main + - feature/sync-conflict-log + workflow_dispatch: + +permissions: + contents: write + +jobs: + build_flutter: + name: Flutter ${{ matrix.target }} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + include: + - target: android + os: ubuntu-latest + artifact_name: flutter-android-apk + - target: linux + os: ubuntu-latest + artifact_name: flutter-linux + - target: macos + os: macos-latest + artifact_name: flutter-macos + - target: ios + os: macos-latest + artifact_name: flutter-ios + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Java (Android) + if: matrix.target == 'android' + uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: '17' + + - name: Setup Flutter + uses: subosito/flutter-action@v2 + with: + channel: stable + + - name: Flutter pub get + run: flutter pub get + + - name: Install Linux desktop build deps + if: matrix.target == 'linux' + run: | + sudo apt-get update + sudo apt-get install -y clang cmake ninja-build pkg-config libgtk-3-dev liblzma-dev + + - name: Enable Linux platform + if: matrix.target == 'linux' + run: | + flutter config --enable-linux-desktop + flutter create --platforms=linux . + + - name: Build Android APK + if: matrix.target == 'android' + run: flutter build apk --release + + - name: Build Linux + if: matrix.target == 'linux' + run: flutter build linux --release + + - name: Build macOS + if: matrix.target == 'macos' + run: flutter build macos --release + + - name: Build iOS (no code signing) + if: matrix.target == 'ios' + run: flutter build ios --release --no-codesign + + - name: Prepare artifact bundle + shell: bash + run: | + set -euo pipefail + mkdir -p out + if [ "${{ matrix.target }}" = "android" ]; then + cp build/app/outputs/flutter-apk/app-release.apk out/sketchord-android-release.apk + elif [ "${{ matrix.target }}" = "linux" ]; then + tar -czf out/sketchord-linux-release.tar.gz -C build/linux/x64/release bundle + elif [ "${{ matrix.target }}" = "macos" ]; then + ditto -c -k --sequesterRsrc --keepParent build/macos/Build/Products/Release/sound.app out/sketchord-macos-release.zip + elif [ "${{ matrix.target }}" = "ios" ]; then + ditto -c -k --sequesterRsrc --keepParent build/ios/iphoneos/Runner.app out/sketchord-ios-runner-app-nosign.zip + fi + + - name: Upload artifact + uses: actions/upload-artifact@v4 + with: + name: ${{ matrix.artifact_name }} + path: out/* + if-no-files-found: error + + build_backend_pyinstaller: + name: Backend PyInstaller ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: + - ubuntu-latest + - macos-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Python + uses: actions/setup-python@v5 + with: + python-version: '3.11' + + - name: Build backend executable + shell: bash + run: | + set -euo pipefail + chmod +x backend/scripts/build_pyinstaller.sh + backend/scripts/build_pyinstaller.sh + + - name: Package backend executable + shell: bash + run: | + set -euo pipefail + mkdir -p out + BIN_NAME="sketchord-sync-backend" + if [ "${{ runner.os }}" = "Windows" ]; then + BIN_NAME="sketchord-sync-backend.exe" + fi + cp "backend/dist/${BIN_NAME}" "out/${BIN_NAME}-${{ runner.os }}" + + - name: Upload backend artifact + uses: actions/upload-artifact@v4 + with: + name: backend-pyinstaller-${{ runner.os }} + path: out/* + if-no-files-found: error + + release: + name: Create Release + runs-on: ubuntu-latest + needs: + - build_flutter + - build_backend_pyinstaller + + steps: + - name: Download artifacts + uses: actions/download-artifact@v4 + with: + path: artifacts + + - name: List artifacts + run: ls -R artifacts + + - name: Publish GitHub release + uses: softprops/action-gh-release@v2 + with: + tag_name: main-build-${{ github.run_number }} + name: Main build #${{ github.run_number }} + generate_release_notes: true + files: artifacts/**/* diff --git a/README.md b/README.md index e210411..58f90fb 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,18 @@ flutter run --flavor prod flutter run --flavor dev # flutter run --flavor dev -d chrome --web-renderer html -# flutter packages pub run flutter_launcher_icons:main -f pubspec.yaml - +# flutter packages pub run flutter_launcher_icons:main -f pubspec.yaml # Create Release 1. Change Version -2. Build bundle `flutter build appbundle --flavor prod` \ No newline at end of file +2. Build bundle `flutter build appbundle --flavor prod` + +# CI/CD Release + +A GitHub Actions workflow is defined at `.github/workflows/release-main.yml`. + +On every push to `main`, it: + +1. Builds Flutter artifacts for Android, Linux, macOS, and iOS (`--no-codesign` for iOS). +2. Builds standalone backend binaries with PyInstaller for Linux and macOS. +3. Publishes a GitHub Release named `Main build #` and uploads all artifacts. diff --git a/backend/Dockerfile.dev b/backend/Dockerfile.dev index c5855d7..e91d0b4 100644 --- a/backend/Dockerfile.dev +++ b/backend/Dockerfile.dev @@ -1,11 +1,11 @@ -FROM python:3.7-buster +FROM python:3.11-slim WORKDIR /app -# install requirements -ADD requirements.txt requirements.txt -RUN pip3 install -r requirements.txt +COPY pyproject.toml README.md ./ +COPY src ./src +RUN pip install --no-cache-dir -e . EXPOSE 8000 -CMD ["uvicorn", "src.app:app", "--reload"] \ No newline at end of file +CMD ["uvicorn", "src.app:app", "--reload", "--host=0.0.0.0", "--port=8000"] diff --git a/backend/README.md b/backend/README.md new file mode 100644 index 0000000..a3fa5b7 --- /dev/null +++ b/backend/README.md @@ -0,0 +1,66 @@ +# Sketchord Sync Backend + +FastAPI backend for deterministic mutation sync. + +## Install + +```bash +cd backend +uv sync +``` + +Optional RethinkDB support: + +```bash +cd backend +uv sync --extra rethinkdb +``` + +## Run + +```bash +cd backend +uv run sketchord-sync-backend +``` + +## Build Standalone Binary (PyInstaller) + +Build a single-file executable for macOS/Linux: + +```bash +cd backend +./scripts/build_pyinstaller.sh +``` + +Output binary: + +- `backend/dist/sketchord-sync-backend` + +Run it directly: + +```bash +SYNC_PORT=8009 ./dist/sketchord-sync-backend +``` + +## Configuration + +- `SYNC_DB_BACKEND`: `sqlite` (default) or `rethinkdb` +- `SYNC_SQLITE_PATH`: SQLite file path (default: `./data/sync.db`) +- `SYNC_HOST`: bind host (default: `0.0.0.0`) +- `SYNC_PORT`: bind port (default: `8009`) +- `SYNC_LOG_LEVEL`: Uvicorn log level (default: `info`) + +RethinkDB settings (only when `SYNC_DB_BACKEND=rethinkdb`): + +- `SYNC_RETHINK_HOST` (default: `localhost`) +- `SYNC_RETHINK_PORT` (default: `28015`) +- `SYNC_RETHINK_DB` (default: `sketchord`) +- `SYNC_RETHINK_TABLE_PREFIX` (default: `sync`) + +## API + +- `GET /healthz` +- `POST /v1/sync/upload` +- `GET /v1/sync/pull?since_seq=` +- `GET /v1/sync/conflicts?unresolved_only=true` +- `POST /v1/sync/conflicts/{conflict_id}/resolve` diff --git a/backend/docker-compose.yaml b/backend/docker-compose.yaml index e50da70..27f3f96 100644 --- a/backend/docker-compose.yaml +++ b/backend/docker-compose.yaml @@ -1,14 +1,5 @@ -version: '2' +version: '3.9' services: - rethinkdb: - image: rethinkdb:latest - ports: - - "8084:8080" - - "29015:29015" - - "28015:28015" - volumes: - - ./data:/data - command: rethinkdb --bind all # --data /data backend: build: context: ./ @@ -20,6 +11,15 @@ services: ports: - "8009:8000" environment: - - DATABASE_URI=user:1234@rethinkdb:28015/iot - depends_on: - - "rethinkdb" + - SYNC_DB_BACKEND=sqlite + - SYNC_SQLITE_PATH=/app/data/sync.db + rethinkdb: + image: rethinkdb:latest + profiles: ["rethinkdb"] + ports: + - "8084:8080" + - "29015:29015" + - "28015:28015" + volumes: + - ./data:/data + command: rethinkdb --bind all diff --git a/backend/pyinstaller/sketchord_sync_backend.spec b/backend/pyinstaller/sketchord_sync_backend.spec new file mode 100644 index 0000000..7c39305 --- /dev/null +++ b/backend/pyinstaller/sketchord_sync_backend.spec @@ -0,0 +1,43 @@ +# -*- mode: python ; coding: utf-8 -*- + +from PyInstaller.utils.hooks import collect_submodules + +hiddenimports = [] +hiddenimports += collect_submodules("uvicorn") + + +a = Analysis( + ["src/sketchord_sync_backend/__main__.py"], + pathex=["src"], + binaries=[], + datas=[], + hiddenimports=hiddenimports, + hookspath=[], + hooksconfig={}, + runtime_hooks=[], + excludes=[], + noarchive=False, + optimize=0, +) +pyz = PYZ(a.pure) + +exe = EXE( + pyz, + a.scripts, + a.binaries, + a.datas, + [], + name="sketchord-sync-backend", + debug=False, + bootloader_ignore_signals=False, + strip=False, + upx=True, + upx_exclude=[], + runtime_tmpdir=None, + console=True, + disable_windowed_traceback=False, + argv_emulation=False, + target_arch=None, + codesign_identity=None, + entitlements_file=None, +) diff --git a/backend/pyproject.toml b/backend/pyproject.toml new file mode 100644 index 0000000..6f1262a --- /dev/null +++ b/backend/pyproject.toml @@ -0,0 +1,27 @@ +[build-system] +requires = ["hatchling>=1.25.0"] +build-backend = "hatchling.build" + +[project] +name = "sketchord-sync-backend" +version = "0.1.0" +description = "Sketchord sync backend with deterministic merge and conflict logging." +readme = "README.md" +requires-python = ">=3.11" +dependencies = [ + "fastapi>=0.116.0", + "uvicorn>=0.35.0", + "pydantic>=2.11.0", +] + +[project.optional-dependencies] +rethinkdb = [ + "rethinkdb>=2.4.10", +] + +[project.scripts] +sketchord-sync-backend = "sketchord_sync_backend.__main__:main" + +[tool.hatch.build.targets.wheel] +packages = ["src/sketchord_sync_backend"] + diff --git a/backend/requirements.txt b/backend/requirements.txt index 898a597..889c6e2 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -1,5 +1,4 @@ -fastapi -rethinkdb -uvicorn -bs4 -requests \ No newline at end of file +fastapi>=0.116.0 +uvicorn>=0.35.0 +pydantic>=2.11.0 +rethinkdb>=2.4.10 diff --git a/backend/scripts/build_pyinstaller.sh b/backend/scripts/build_pyinstaller.sh new file mode 100755 index 0000000..dbcf805 --- /dev/null +++ b/backend/scripts/build_pyinstaller.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +BACKEND_DIR="$(cd "${SCRIPT_DIR}/.." && pwd)" + +cd "${BACKEND_DIR}" + +python -m pip install --upgrade pip +python -m pip install -r requirements.txt pyinstaller + +pyinstaller --clean --noconfirm pyinstaller/sketchord_sync_backend.spec + +echo "Built backend executable at: ${BACKEND_DIR}/dist/sketchord-sync-backend" diff --git a/backend/src/app.py b/backend/src/app.py index 7ad22a0..ee4738a 100644 --- a/backend/src/app.py +++ b/backend/src/app.py @@ -1,59 +1,4 @@ -from fastapi import FastAPI, Request -from fastapi.responses import JSONResponse -from starlette.exceptions import HTTPException as StarletteHTTPException +from sketchord_sync_backend.app import create_app -import time -import random -import string -from . import requestvars -import types +app = create_app() -from . import config -from .utils import logger -from . import v1 -from .db import RethinkClient - -app = FastAPI(title="Sound App Server", - openapi_url="/rest/v1/openapi.json", - redoc_url='/redoc', - debug=config.is_debug(), - docs_url='/docs', # '/rest/v1/docs', - version="0.0.1") - - -@app.exception_handler(StarletteHTTPException) -async def validation_exception_handler(request, exc): - logger.error(str(exc.__dict__)) - logger.error(str(request.__dict__)) - return JSONResponse(dict(detail=str(exc.detail), status_code=exc.status_code, method=request.scope['method'], path=request.scope["path"]), status_code=exc.status_code) - - -@app.middleware("http") -async def log_requests(request: Request, call_next): - idem = ''.join(random.choices(string.ascii_uppercase + string.digits, k=6)) - logger.info( - f"rid={idem} start request path={request.url.path}, params={request.query_params}") - start_time = time.time() - - """ - # set namespace vars - initial_g = requestvars.Context( - db=RethinkClient(config.get_database_uri())) - requestvars.request_global.set(initial_g) - """ - - response = await call_next(request) - - process_time = (time.time() - start_time) * 1000 - formatted_process_time = '{0:.2f}'.format(process_time) - logger.info( - f"rid={idem} completed_in={formatted_process_time}ms status_code={response.status_code}") - - return response - - -v1.include_routes(app) - -if __name__ == "__main__": - import uvicorn - uvicorn.run(app, host='0.0.0.0', port=8009) diff --git a/backend/src/sketchord_sync_backend/__init__.py b/backend/src/sketchord_sync_backend/__init__.py new file mode 100644 index 0000000..a207644 --- /dev/null +++ b/backend/src/sketchord_sync_backend/__init__.py @@ -0,0 +1,4 @@ +__all__ = ["create_app"] + +from .app import create_app + diff --git a/backend/src/sketchord_sync_backend/__main__.py b/backend/src/sketchord_sync_backend/__main__.py new file mode 100644 index 0000000..6fa5589 --- /dev/null +++ b/backend/src/sketchord_sync_backend/__main__.py @@ -0,0 +1,20 @@ +import uvicorn + +from sketchord_sync_backend.app import create_app +from sketchord_sync_backend.config import Settings + + +def main() -> None: + settings = Settings() + uvicorn.run( + "sketchord_sync_backend.app:create_app", + host=settings.host, + port=settings.port, + log_level=settings.log_level, + factory=True, + ) + + +if __name__ == "__main__": + main() + diff --git a/backend/src/sketchord_sync_backend/app.py b/backend/src/sketchord_sync_backend/app.py new file mode 100644 index 0000000..9c0ce4c --- /dev/null +++ b/backend/src/sketchord_sync_backend/app.py @@ -0,0 +1,479 @@ +import asyncio +import json + +from fastapi import FastAPI, HTTPException, Query, Request +from fastapi.responses import HTMLResponse, StreamingResponse + +from sketchord_sync_backend.config import Settings +from sketchord_sync_backend.models import ConflictListResponse, PullResponse, UploadRequest, UploadResponse +from sketchord_sync_backend.service import SyncService +from sketchord_sync_backend.storage import create_repository + + +def _diff_payloads(before: dict | None, after: dict | None) -> dict: + before = before or {} + after = after or {} + added = {} + removed = {} + changed = {} + + before_keys = set(before.keys()) + after_keys = set(after.keys()) + for k in sorted(after_keys - before_keys): + added[k] = after[k] + for k in sorted(before_keys - after_keys): + removed[k] = before[k] + for k in sorted(before_keys & after_keys): + b = before[k] + a = after[k] + if b == a: + continue + if isinstance(b, dict) and isinstance(a, dict): + nested = _diff_payloads(b, a) + if nested["added"] or nested["removed"] or nested["changed"]: + changed[k] = nested + else: + changed[k] = {"from": b, "to": a} + return {"added": added, "removed": removed, "changed": changed} + + +def create_app() -> FastAPI: + settings = Settings() + repository = create_repository(settings) + service = SyncService(repository) + + app = FastAPI( + title="Sketchord Sync Backend", + version="0.1.0", + ) + + @app.get("/healthz") + def healthz() -> dict[str, str]: + return {"status": "ok", "backend": settings.normalized_backend} + + @app.post("/v1/sync/upload", response_model=UploadResponse) + def upload(request: UploadRequest) -> UploadResponse: + return service.upload(request) + + @app.get("/v1/sync/pull", response_model=PullResponse) + def pull( + since_seq: int = Query(default=0, ge=0), + limit: int = Query(default=500, ge=1, le=5000), + ) -> PullResponse: + return service.pull(since_seq=since_seq, limit=limit) + + @app.get("/v1/sync/conflicts", response_model=ConflictListResponse) + def list_conflicts(unresolved_only: bool = True) -> ConflictListResponse: + return service.list_conflicts(unresolved_only=unresolved_only) + + @app.post("/v1/sync/conflicts/{conflict_id}/resolve") + def resolve_conflict(conflict_id: str) -> dict[str, bool]: + resolved = service.resolve_conflict(conflict_id) + if not resolved: + raise HTTPException(status_code=404, detail="conflict not found") + return {"resolved": True} + + @app.get("/v1/admin/state") + def admin_state( + entity_limit: int = Query(default=200, ge=1, le=5000), + change_limit: int = Query(default=200, ge=1, le=5000), + conflict_limit: int = Query(default=200, ge=1, le=5000), + op_limit: int = Query(default=200, ge=1, le=5000), + ) -> dict: + changes = repository.list_changes(since_seq=0, limit=change_limit) + previous_payloads: dict[tuple[str, str], dict] = {} + changes_with_diff = [] + for change in changes: + key = (change.entity_type, change.entity_id) + before = previous_payloads.get(key, {}) + after = change.payload + diff = _diff_payloads(before, after) + row = change.model_dump() + row["diff"] = diff + changes_with_diff.append(row) + previous_payloads[key] = after + + conflicts = repository.list_conflicts(unresolved_only=False)[:conflict_limit] + entities = repository.list_entities(limit=entity_limit) + processed_ops = repository.list_processed_ops(limit=op_limit) + conflicts_rows = [conflict.model_dump() for conflict in conflicts] + return { + "backend": settings.normalized_backend, + "counts": { + "entities": len(repository.list_entities(limit=5000)), + "changes": repository.max_change_seq(), + "conflicts_unresolved": len(repository.list_conflicts(unresolved_only=True)), + "processed_ops": len(repository.list_processed_ops(limit=5000)), + }, + "entities": entities, + "changes": changes_with_diff, + "conflicts": conflicts_rows, + "processed_ops": processed_ops, + "tables": { + "sync_entities": entities, + "sync_change_log": changes_with_diff, + "sync_conflicts": conflicts_rows, + "sync_processed_ops": processed_ops, + }, + } + + @app.get("/v1/admin/stream") + async def admin_stream( + request: Request, + since_seq: int = Query(default=0, ge=0), + ) -> StreamingResponse: + async def event_generator(): + last_seq = since_seq + # Send initial hello event so the UI can confirm connectivity. + yield "event: hello\ndata: {\"ok\":true}\n\n" + while True: + if await request.is_disconnected(): + break + max_seq = repository.max_change_seq() + unresolved = len(repository.list_conflicts(unresolved_only=True)) + if max_seq > last_seq: + payload = { + "type": "change", + "from_seq": last_seq, + "to_seq": max_seq, + "unresolved_conflicts": unresolved, + } + yield f"event: change\ndata: {json.dumps(payload)}\n\n" + last_seq = max_seq + else: + payload = { + "type": "heartbeat", + "seq": max_seq, + "unresolved_conflicts": unresolved, + } + yield f"event: heartbeat\ndata: {json.dumps(payload)}\n\n" + await asyncio.sleep(1.0) + + return StreamingResponse( + event_generator(), + media_type="text/event-stream", + headers={ + "Cache-Control": "no-cache", + "Connection": "keep-alive", + "X-Accel-Buffering": "no", + }, + ) + + @app.get("/dashboard", response_class=HTMLResponse) + def dashboard() -> str: + return """ + + + + + + Sketchord Sync Dashboard + + + +
+ + + + + +""" + + return app diff --git a/backend/src/sketchord_sync_backend/config.py b/backend/src/sketchord_sync_backend/config.py new file mode 100644 index 0000000..58e2885 --- /dev/null +++ b/backend/src/sketchord_sync_backend/config.py @@ -0,0 +1,24 @@ +import os +from dataclasses import dataclass + + +@dataclass(frozen=True) +class Settings: + db_backend: str = os.getenv("SYNC_DB_BACKEND", "sqlite").strip().lower() + sqlite_path: str = os.getenv("SYNC_SQLITE_PATH", "./data/sync.db") + host: str = os.getenv("SYNC_HOST", "0.0.0.0") + port: int = int(os.getenv("SYNC_PORT", "8009")) + log_level: str = os.getenv("SYNC_LOG_LEVEL", "info") + + rethink_host: str = os.getenv("SYNC_RETHINK_HOST", "localhost") + rethink_port: int = int(os.getenv("SYNC_RETHINK_PORT", "28015")) + rethink_db: str = os.getenv("SYNC_RETHINK_DB", "sketchord") + rethink_table_prefix: str = os.getenv("SYNC_RETHINK_TABLE_PREFIX", "sync") + + @property + def normalized_backend(self) -> str: + backend = self.db_backend + if backend not in {"sqlite", "rethinkdb"}: + return "sqlite" + return backend + diff --git a/backend/src/sketchord_sync_backend/models.py b/backend/src/sketchord_sync_backend/models.py new file mode 100644 index 0000000..8b3923e --- /dev/null +++ b/backend/src/sketchord_sync_backend/models.py @@ -0,0 +1,85 @@ +from datetime import datetime, timezone +from enum import Enum +from typing import Any + +from pydantic import BaseModel, Field + + +def utc_now_iso() -> str: + return datetime.now(timezone.utc).isoformat() + + +class OperationStatus(str, Enum): + applied = "applied" + merged = "merged" + rejected = "rejected" + duplicate = "duplicate" + + +class SyncOperationType(str, Enum): + upsert = "upsert" + delete = "delete" + tombstone = "tombstone" + + +class Mutation(BaseModel): + op_id: str = Field(min_length=1, max_length=128) + entity_type: str = Field(min_length=1, max_length=64) + entity_id: str = Field(min_length=1, max_length=256) + operation: SyncOperationType + base_version: int = Field(ge=0) + payload: dict[str, Any] = Field(default_factory=dict) + client_ts: str | None = None + source: str | None = None + + +class UploadRequest(BaseModel): + mutations: list[Mutation] = Field(default_factory=list) + + +class MutationResult(BaseModel): + op_id: str + status: OperationStatus + entity_type: str + entity_id: str + server_version: int | None = None + message: str | None = None + merged_payload: dict[str, Any] | None = None + remote_payload: dict[str, Any] | None = None + conflict_id: str | None = None + + +class UploadResponse(BaseModel): + results: list[MutationResult] + + +class ChangeItem(BaseModel): + seq: int + entity_type: str + entity_id: str + operation: SyncOperationType + version: int + source: str | None = None + payload: dict[str, Any] + ts: str + + +class PullResponse(BaseModel): + changes: list[ChangeItem] + next_seq: int + + +class ConflictItem(BaseModel): + conflict_id: str + op_id: str + entity_type: str + entity_id: str + reason: str + local_payload: dict[str, Any] + remote_payload: dict[str, Any] + created_at: str + resolved_at: str | None = None + + +class ConflictListResponse(BaseModel): + conflicts: list[ConflictItem] diff --git a/backend/src/sketchord_sync_backend/service.py b/backend/src/sketchord_sync_backend/service.py new file mode 100644 index 0000000..88f530e --- /dev/null +++ b/backend/src/sketchord_sync_backend/service.py @@ -0,0 +1,317 @@ +from dataclasses import dataclass +from typing import Any + +from sketchord_sync_backend.models import ( + ConflictListResponse, + Mutation, + MutationResult, + OperationStatus, + PullResponse, + SyncOperationType, + UploadRequest, + UploadResponse, + utc_now_iso, +) +from sketchord_sync_backend.storage.base import EntityState, SyncRepository + + +@dataclass +class MergeOutcome: + status: OperationStatus + merged_payload: dict[str, Any] | None = None + message: str | None = None + + +class SyncService: + def __init__(self, repository: SyncRepository): + self.repository = repository + + def upload(self, request: UploadRequest) -> UploadResponse: + results: list[MutationResult] = [] + for mutation in request.mutations: + results.append(self._apply_mutation(mutation)) + return UploadResponse(results=results) + + def pull(self, since_seq: int, limit: int = 500) -> PullResponse: + changes = self.repository.list_changes(since_seq=since_seq, limit=limit) + next_seq = changes[-1].seq if changes else self.repository.max_change_seq() + return PullResponse(changes=changes, next_seq=next_seq) + + def list_conflicts(self, unresolved_only: bool = True) -> ConflictListResponse: + return ConflictListResponse( + conflicts=self.repository.list_conflicts(unresolved_only=unresolved_only), + ) + + def resolve_conflict(self, conflict_id: str) -> bool: + return self.repository.resolve_conflict(conflict_id, utc_now_iso()) + + def _apply_mutation(self, mutation: Mutation) -> MutationResult: + existing_result = self.repository.get_processed_result(mutation.op_id) + if existing_result is not None: + return existing_result + + now = utc_now_iso() + current = self.repository.get_entity(mutation.entity_type, mutation.entity_id) + + if mutation.operation in {SyncOperationType.delete, SyncOperationType.tombstone}: + result = self._apply_delete(mutation, current, now) + else: + result = self._apply_upsert(mutation, current, now) + + self.repository.save_processed_result( + op_id=mutation.op_id, + result=result, + processed_at=now, + ) + return result + + def _apply_delete( + self, + mutation: Mutation, + current: EntityState | None, + now: str, + ) -> MutationResult: + if current is None: + version = self.repository.upsert_entity( + entity_type=mutation.entity_type, + entity_id=mutation.entity_id, + payload={"id": mutation.entity_id}, + deleted=True, + ts=now, + ) + self.repository.append_change( + entity_type=mutation.entity_type, + entity_id=mutation.entity_id, + operation=mutation.operation.value, + version=version, + source=mutation.source, + payload={"id": mutation.entity_id}, + ts=now, + ) + return MutationResult( + op_id=mutation.op_id, + status=OperationStatus.applied, + entity_type=mutation.entity_type, + entity_id=mutation.entity_id, + server_version=version, + message="Delete tombstone created", + ) + + if current.version != mutation.base_version and not current.deleted: + conflict_id = self.repository.create_conflict( + op_id=mutation.op_id, + entity_type=mutation.entity_type, + entity_id=mutation.entity_id, + reason="Delete rejected: version mismatch", + local_payload=mutation.payload, + remote_payload=current.payload, + created_at=now, + ) + return MutationResult( + op_id=mutation.op_id, + status=OperationStatus.rejected, + entity_type=mutation.entity_type, + entity_id=mutation.entity_id, + server_version=current.version, + message="Delete rejected: version mismatch", + remote_payload=current.payload, + conflict_id=conflict_id, + ) + + version = self.repository.upsert_entity( + entity_type=mutation.entity_type, + entity_id=mutation.entity_id, + payload=current.payload if current else mutation.payload, + deleted=True, + ts=now, + ) + self.repository.append_change( + entity_type=mutation.entity_type, + entity_id=mutation.entity_id, + operation=mutation.operation.value, + version=version, + source=mutation.source, + payload={"id": mutation.entity_id}, + ts=now, + ) + return MutationResult( + op_id=mutation.op_id, + status=OperationStatus.applied, + entity_type=mutation.entity_type, + entity_id=mutation.entity_id, + server_version=version, + ) + + def _apply_upsert( + self, + mutation: Mutation, + current: EntityState | None, + now: str, + ) -> MutationResult: + if current is None: + if mutation.base_version != 0: + conflict_id = self.repository.create_conflict( + op_id=mutation.op_id, + entity_type=mutation.entity_type, + entity_id=mutation.entity_id, + reason="Upsert rejected: entity missing for non-zero base_version", + local_payload=mutation.payload, + remote_payload={}, + created_at=now, + ) + return MutationResult( + op_id=mutation.op_id, + status=OperationStatus.rejected, + entity_type=mutation.entity_type, + entity_id=mutation.entity_id, + server_version=0, + message="Entity missing for non-zero base_version", + remote_payload={}, + conflict_id=conflict_id, + ) + version = self.repository.upsert_entity( + entity_type=mutation.entity_type, + entity_id=mutation.entity_id, + payload=mutation.payload, + deleted=False, + ts=now, + ) + self.repository.append_change( + entity_type=mutation.entity_type, + entity_id=mutation.entity_id, + operation=mutation.operation.value, + version=version, + source=mutation.source, + payload=mutation.payload, + ts=now, + ) + return MutationResult( + op_id=mutation.op_id, + status=OperationStatus.applied, + entity_type=mutation.entity_type, + entity_id=mutation.entity_id, + server_version=version, + ) + + if current.deleted: + conflict_id = self.repository.create_conflict( + op_id=mutation.op_id, + entity_type=mutation.entity_type, + entity_id=mutation.entity_id, + reason="Upsert rejected: entity is tombstoned", + local_payload=mutation.payload, + remote_payload=current.payload, + created_at=now, + ) + return MutationResult( + op_id=mutation.op_id, + status=OperationStatus.rejected, + entity_type=mutation.entity_type, + entity_id=mutation.entity_id, + server_version=current.version, + message="Entity is tombstoned", + remote_payload=current.payload, + conflict_id=conflict_id, + ) + + if current.version == mutation.base_version: + version = self.repository.upsert_entity( + entity_type=mutation.entity_type, + entity_id=mutation.entity_id, + payload=mutation.payload, + deleted=False, + ts=now, + ) + self.repository.append_change( + entity_type=mutation.entity_type, + entity_id=mutation.entity_id, + operation=mutation.operation.value, + version=version, + source=mutation.source, + payload=mutation.payload, + ts=now, + ) + return MutationResult( + op_id=mutation.op_id, + status=OperationStatus.applied, + entity_type=mutation.entity_type, + entity_id=mutation.entity_id, + server_version=version, + ) + + merge = self._deterministic_merge(local=mutation.payload, remote=current.payload) + if merge.status == OperationStatus.rejected: + conflict_id = self.repository.create_conflict( + op_id=mutation.op_id, + entity_type=mutation.entity_type, + entity_id=mutation.entity_id, + reason=merge.message or "Upsert rejected: overlapping field conflict", + local_payload=mutation.payload, + remote_payload=current.payload, + created_at=now, + ) + return MutationResult( + op_id=mutation.op_id, + status=OperationStatus.rejected, + entity_type=mutation.entity_type, + entity_id=mutation.entity_id, + server_version=current.version, + message=merge.message, + remote_payload=current.payload, + conflict_id=conflict_id, + ) + + merged_payload = merge.merged_payload or mutation.payload + version = self.repository.upsert_entity( + entity_type=mutation.entity_type, + entity_id=mutation.entity_id, + payload=merged_payload, + deleted=False, + ts=now, + ) + self.repository.append_change( + entity_type=mutation.entity_type, + entity_id=mutation.entity_id, + operation=mutation.operation.value, + version=version, + source=mutation.source, + payload=merged_payload, + ts=now, + ) + return MutationResult( + op_id=mutation.op_id, + status=OperationStatus.merged, + entity_type=mutation.entity_type, + entity_id=mutation.entity_id, + server_version=version, + merged_payload=merged_payload, + ) + + def _deterministic_merge(self, local: dict[str, Any], remote: dict[str, Any]) -> MergeOutcome: + merged = dict(remote) + conflict_keys: list[str] = [] + for key, local_value in local.items(): + if key not in merged: + merged[key] = local_value + continue + remote_value = merged[key] + if remote_value == local_value: + continue + + if isinstance(local_value, dict) and isinstance(remote_value, dict): + nested = self._deterministic_merge(local_value, remote_value) + if nested.status == OperationStatus.rejected: + conflict_keys.append(key) + continue + merged[key] = nested.merged_payload or remote_value + continue + + conflict_keys.append(key) + + if conflict_keys: + return MergeOutcome( + status=OperationStatus.rejected, + message=f"Overlapping field conflict: {', '.join(sorted(conflict_keys))}", + ) + + return MergeOutcome(status=OperationStatus.merged, merged_payload=merged) diff --git a/backend/src/sketchord_sync_backend/storage/__init__.py b/backend/src/sketchord_sync_backend/storage/__init__.py new file mode 100644 index 0000000..9d584d0 --- /dev/null +++ b/backend/src/sketchord_sync_backend/storage/__init__.py @@ -0,0 +1,20 @@ +from sketchord_sync_backend.config import Settings +from sketchord_sync_backend.storage.base import SyncRepository + + +def create_repository(settings: Settings) -> SyncRepository: + if settings.normalized_backend == "rethinkdb": + from sketchord_sync_backend.storage.rethink_repo import RethinkSyncRepository + + repo = RethinkSyncRepository( + host=settings.rethink_host, + port=settings.rethink_port, + db_name=settings.rethink_db, + table_prefix=settings.rethink_table_prefix, + ) + else: + from sketchord_sync_backend.storage.sqlite_repo import SqliteSyncRepository + + repo = SqliteSyncRepository(db_path=settings.sqlite_path) + repo.ensure_schema() + return repo diff --git a/backend/src/sketchord_sync_backend/storage/base.py b/backend/src/sketchord_sync_backend/storage/base.py new file mode 100644 index 0000000..c2643f0 --- /dev/null +++ b/backend/src/sketchord_sync_backend/storage/base.py @@ -0,0 +1,99 @@ +from abc import ABC, abstractmethod +from dataclasses import dataclass +from typing import Any + +from sketchord_sync_backend.models import ChangeItem, ConflictItem, MutationResult + + +@dataclass +class EntityState: + entity_type: str + entity_id: str + version: int + payload: dict[str, Any] + deleted: bool + updated_at: str + + +class SyncRepository(ABC): + @abstractmethod + def ensure_schema(self) -> None: + raise NotImplementedError + + @abstractmethod + def get_processed_result(self, op_id: str) -> MutationResult | None: + raise NotImplementedError + + @abstractmethod + def save_processed_result( + self, + op_id: str, + result: MutationResult, + processed_at: str, + ) -> None: + raise NotImplementedError + + @abstractmethod + def get_entity(self, entity_type: str, entity_id: str) -> EntityState | None: + raise NotImplementedError + + @abstractmethod + def upsert_entity( + self, + entity_type: str, + entity_id: str, + payload: dict[str, Any], + deleted: bool, + ts: str, + ) -> int: + raise NotImplementedError + + @abstractmethod + def append_change( + self, + entity_type: str, + entity_id: str, + operation: str, + version: int, + source: str | None, + payload: dict[str, Any], + ts: str, + ) -> int: + raise NotImplementedError + + @abstractmethod + def create_conflict( + self, + op_id: str, + entity_type: str, + entity_id: str, + reason: str, + local_payload: dict[str, Any], + remote_payload: dict[str, Any], + created_at: str, + ) -> str: + raise NotImplementedError + + @abstractmethod + def list_changes(self, since_seq: int, limit: int) -> list[ChangeItem]: + raise NotImplementedError + + @abstractmethod + def max_change_seq(self) -> int: + raise NotImplementedError + + @abstractmethod + def list_conflicts(self, unresolved_only: bool = True) -> list[ConflictItem]: + raise NotImplementedError + + @abstractmethod + def resolve_conflict(self, conflict_id: str, resolved_at: str) -> bool: + raise NotImplementedError + + @abstractmethod + def list_entities(self, limit: int) -> list[dict[str, Any]]: + raise NotImplementedError + + @abstractmethod + def list_processed_ops(self, limit: int) -> list[dict[str, Any]]: + raise NotImplementedError diff --git a/backend/src/sketchord_sync_backend/storage/rethink_repo.py b/backend/src/sketchord_sync_backend/storage/rethink_repo.py new file mode 100644 index 0000000..98da919 --- /dev/null +++ b/backend/src/sketchord_sync_backend/storage/rethink_repo.py @@ -0,0 +1,288 @@ +import uuid +from typing import Any + +from sketchord_sync_backend.models import ( + ChangeItem, + ConflictItem, + MutationResult, + SyncOperationType, +) +from sketchord_sync_backend.storage.base import EntityState, SyncRepository + + +class RethinkSyncRepository(SyncRepository): + def __init__( + self, + host: str, + port: int, + db_name: str, + table_prefix: str = "sync", + ): + try: + from rethinkdb import RethinkDB + except ImportError as exc: + raise RuntimeError( + "RethinkDB backend requested but rethinkdb package is not installed. " + "Install with: uv sync --extra rethinkdb", + ) from exc + + self.r = RethinkDB() + self.host = host + self.port = port + self.db_name = db_name + self.entities_table = f"{table_prefix}_entities" + self.processed_ops_table = f"{table_prefix}_processed_ops" + self.change_log_table = f"{table_prefix}_change_log" + self.conflicts_table = f"{table_prefix}_conflicts" + self.conn = self.r.connect(host, port) + + def _db(self): + return self.r.db(self.db_name) + + def _create_index_if_missing(self, table: str, index: str) -> None: + indexes = self._db().table(table).index_list().run(self.conn) + if index not in indexes: + self._db().table(table).index_create(index).run(self.conn) + self._db().table(table).index_wait(index).run(self.conn) + + def ensure_schema(self) -> None: + dbs = self.r.db_list().run(self.conn) + if self.db_name not in dbs: + self.r.db_create(self.db_name).run(self.conn) + + db = self._db() + tables = db.table_list().run(self.conn) + for table in [ + self.entities_table, + self.processed_ops_table, + self.change_log_table, + self.conflicts_table, + ]: + if table not in tables: + db.table_create(table).run(self.conn) + + self._create_index_if_missing(self.entities_table, "entity_key") + self._create_index_if_missing(self.processed_ops_table, "op_id") + self._create_index_if_missing(self.change_log_table, "seq") + self._create_index_if_missing(self.change_log_table, "ts") + self._create_index_if_missing(self.conflicts_table, "resolved_at") + self._create_index_if_missing(self.conflicts_table, "created_at") + + def _entity_key(self, entity_type: str, entity_id: str) -> str: + return f"{entity_type}:{entity_id}" + + def get_processed_result(self, op_id: str) -> MutationResult | None: + row = self._db().table(self.processed_ops_table).get(op_id).run(self.conn) + if row is None: + return None + return MutationResult.model_validate(row["result"]) + + def save_processed_result( + self, + op_id: str, + result: MutationResult, + processed_at: str, + ) -> None: + self._db().table(self.processed_ops_table).insert( + { + "id": op_id, + "op_id": op_id, + "entity_type": result.entity_type, + "entity_id": result.entity_id, + "result": result.model_dump(), + "processed_at": processed_at, + }, + conflict="replace", + ).run(self.conn) + + def get_entity(self, entity_type: str, entity_id: str) -> EntityState | None: + key = self._entity_key(entity_type, entity_id) + row = self._db().table(self.entities_table).get(key).run(self.conn) + if row is None: + return None + return EntityState( + entity_type=row["entity_type"], + entity_id=row["entity_id"], + version=int(row["version"]), + payload=dict(row.get("payload", {})), + deleted=bool(row.get("deleted", False)), + updated_at=row["updated_at"], + ) + + def upsert_entity( + self, + entity_type: str, + entity_id: str, + payload: dict[str, Any], + deleted: bool, + ts: str, + ) -> int: + current = self.get_entity(entity_type, entity_id) + next_version = (current.version if current else 0) + 1 + self._db().table(self.entities_table).insert( + { + "id": self._entity_key(entity_type, entity_id), + "entity_key": self._entity_key(entity_type, entity_id), + "entity_type": entity_type, + "entity_id": entity_id, + "version": next_version, + "payload": payload, + "deleted": deleted, + "updated_at": ts, + }, + conflict="replace", + ).run(self.conn) + return next_version + + def append_change( + self, + entity_type: str, + entity_id: str, + operation: str, + version: int, + source: str | None, + payload: dict[str, Any], + ts: str, + ) -> int: + next_seq = self.max_change_seq() + 1 + result = self._db().table(self.change_log_table).insert( + { + "seq": next_seq, + "entity_type": entity_type, + "entity_id": entity_id, + "operation": operation, + "version": version, + "source": source, + "payload": payload, + "ts": ts, + }, + ).run(self.conn) + _ = result + return next_seq + + def create_conflict( + self, + op_id: str, + entity_type: str, + entity_id: str, + reason: str, + local_payload: dict[str, Any], + remote_payload: dict[str, Any], + created_at: str, + ) -> str: + conflict_id = str(uuid.uuid4()) + self._db().table(self.conflicts_table).insert( + { + "id": conflict_id, + "conflict_id": conflict_id, + "op_id": op_id, + "entity_type": entity_type, + "entity_id": entity_id, + "reason": reason, + "local_payload": local_payload, + "remote_payload": remote_payload, + "created_at": created_at, + "resolved_at": None, + }, + ).run(self.conn) + return conflict_id + + def list_changes(self, since_seq: int, limit: int) -> list[ChangeItem]: + rows = ( + self._db() + .table(self.change_log_table) + .filter(self.r.row["seq"] > since_seq) + .order_by("seq") + .limit(limit) + .run(self.conn) + ) + return [ + ChangeItem( + seq=int(row["seq"]), + entity_type=row["entity_type"], + entity_id=row["entity_id"], + operation=SyncOperationType(row["operation"]), + version=int(row["version"]), + source=row.get("source"), + payload=dict(row.get("payload", {})), + ts=row["ts"], + ) + for row in rows + ] + + def max_change_seq(self) -> int: + rows = ( + self._db() + .table(self.change_log_table) + .order_by(self.r.desc("seq")) + .limit(1) + .run(self.conn) + ) + first = next(iter(rows), None) + if first is None: + return 0 + return int(first.get("seq", 0)) + + def list_conflicts(self, unresolved_only: bool = True) -> list[ConflictItem]: + query = self._db().table(self.conflicts_table) + if unresolved_only: + query = query.filter(self.r.row["resolved_at"] == None) # noqa: E711 + rows = query.order_by(self.r.desc("created_at")).run(self.conn) + return [ + ConflictItem( + conflict_id=row["conflict_id"], + op_id=row["op_id"], + entity_type=row["entity_type"], + entity_id=row["entity_id"], + reason=row["reason"], + local_payload=dict(row.get("local_payload", {})), + remote_payload=dict(row.get("remote_payload", {})), + created_at=row["created_at"], + resolved_at=row.get("resolved_at"), + ) + for row in rows + ] + + def resolve_conflict(self, conflict_id: str, resolved_at: str) -> bool: + result = self._db().table(self.conflicts_table).get(conflict_id).update( + {"resolved_at": resolved_at}, + ).run(self.conn) + return result.get("replaced", 0) > 0 or result.get("unchanged", 0) > 0 + + def list_entities(self, limit: int) -> list[dict]: + rows = ( + self._db() + .table(self.entities_table) + .order_by(self.r.desc("updated_at")) + .limit(limit) + .run(self.conn) + ) + return [ + { + "entity_type": row["entity_type"], + "entity_id": row["entity_id"], + "version": int(row["version"]), + "payload": dict(row.get("payload", {})), + "deleted": bool(row.get("deleted", False)), + "updated_at": row["updated_at"], + } + for row in rows + ] + + def list_processed_ops(self, limit: int) -> list[dict]: + rows = ( + self._db() + .table(self.processed_ops_table) + .order_by(self.r.desc("processed_at")) + .limit(limit) + .run(self.conn) + ) + return [ + { + "op_id": row["op_id"], + "entity_type": row["entity_type"], + "entity_id": row["entity_id"], + "processed_at": row.get("processed_at", ""), + } + for row in rows + ] diff --git a/backend/src/sketchord_sync_backend/storage/sqlite_repo.py b/backend/src/sketchord_sync_backend/storage/sqlite_repo.py new file mode 100644 index 0000000..92ef0e3 --- /dev/null +++ b/backend/src/sketchord_sync_backend/storage/sqlite_repo.py @@ -0,0 +1,342 @@ +import json +import sqlite3 +import threading +import uuid +from pathlib import Path + +from sketchord_sync_backend.models import ChangeItem, ConflictItem, MutationResult, SyncOperationType +from sketchord_sync_backend.storage.base import EntityState, SyncRepository + + +class SqliteSyncRepository(SyncRepository): + def __init__(self, db_path: str): + self.db_path = db_path + Path(db_path).parent.mkdir(parents=True, exist_ok=True) + self.conn = sqlite3.connect(db_path, check_same_thread=False) + self.conn.row_factory = sqlite3.Row + self._lock = threading.RLock() + + def ensure_schema(self) -> None: + with self._lock: + self.conn.execute( + """ + CREATE TABLE IF NOT EXISTS sync_entities( + entity_type TEXT NOT NULL, + entity_id TEXT NOT NULL, + version INTEGER NOT NULL, + payload TEXT NOT NULL, + deleted INTEGER NOT NULL DEFAULT 0, + updated_at TEXT NOT NULL, + PRIMARY KEY(entity_type, entity_id) + ); + """, + ) + self.conn.execute( + """ + CREATE TABLE IF NOT EXISTS sync_processed_ops( + op_id TEXT PRIMARY KEY, + entity_type TEXT NOT NULL, + entity_id TEXT NOT NULL, + result_json TEXT NOT NULL, + processed_at TEXT NOT NULL + ); + """, + ) + self.conn.execute( + """ + CREATE TABLE IF NOT EXISTS sync_change_log( + seq INTEGER PRIMARY KEY AUTOINCREMENT, + entity_type TEXT NOT NULL, + entity_id TEXT NOT NULL, + operation TEXT NOT NULL, + version INTEGER NOT NULL, + source TEXT, + payload TEXT NOT NULL, + ts TEXT NOT NULL + ); + """, + ) + cols = self.conn.execute("PRAGMA table_info(sync_change_log)").fetchall() + col_names = {str(c["name"]) for c in cols} + if "source" not in col_names: + self.conn.execute("ALTER TABLE sync_change_log ADD source TEXT;") + self.conn.execute( + """ + CREATE TABLE IF NOT EXISTS sync_conflicts( + conflict_id TEXT PRIMARY KEY, + op_id TEXT NOT NULL, + entity_type TEXT NOT NULL, + entity_id TEXT NOT NULL, + reason TEXT NOT NULL, + local_payload TEXT NOT NULL, + remote_payload TEXT NOT NULL, + created_at TEXT NOT NULL, + resolved_at TEXT + ); + """, + ) + self.conn.commit() + + def get_processed_result(self, op_id: str) -> MutationResult | None: + with self._lock: + row = self.conn.execute( + "SELECT result_json FROM sync_processed_ops WHERE op_id = ?", + (op_id,), + ).fetchone() + if row is None: + return None + return MutationResult.model_validate_json(row["result_json"]) + + def save_processed_result(self, op_id: str, result: MutationResult, processed_at: str) -> None: + with self._lock: + self.conn.execute( + """ + INSERT OR REPLACE INTO sync_processed_ops(op_id, entity_type, entity_id, result_json, processed_at) + VALUES(?, ?, ?, ?, ?) + """, + ( + op_id, + result.entity_type, + result.entity_id, + result.model_dump_json(), + processed_at, + ), + ) + self.conn.commit() + + def get_entity(self, entity_type: str, entity_id: str) -> EntityState | None: + with self._lock: + row = self.conn.execute( + """ + SELECT entity_type, entity_id, version, payload, deleted, updated_at + FROM sync_entities + WHERE entity_type = ? AND entity_id = ? + """, + (entity_type, entity_id), + ).fetchone() + if row is None: + return None + return EntityState( + entity_type=row["entity_type"], + entity_id=row["entity_id"], + version=int(row["version"]), + payload=json.loads(row["payload"]), + deleted=bool(row["deleted"]), + updated_at=row["updated_at"], + ) + + def upsert_entity( + self, + entity_type: str, + entity_id: str, + payload: dict, + deleted: bool, + ts: str, + ) -> int: + with self._lock: + row = self.conn.execute( + """ + SELECT version FROM sync_entities + WHERE entity_type = ? AND entity_id = ? + """, + (entity_type, entity_id), + ).fetchone() + next_version = (int(row["version"]) if row else 0) + 1 + self.conn.execute( + """ + INSERT OR REPLACE INTO sync_entities(entity_type, entity_id, version, payload, deleted, updated_at) + VALUES (?, ?, ?, ?, ?, ?) + """, + ( + entity_type, + entity_id, + next_version, + json.dumps(payload), + 1 if deleted else 0, + ts, + ), + ) + self.conn.commit() + return next_version + + def append_change( + self, + entity_type: str, + entity_id: str, + operation: str, + version: int, + source: str | None, + payload: dict, + ts: str, + ) -> int: + with self._lock: + cur = self.conn.execute( + """ + INSERT INTO sync_change_log(entity_type, entity_id, operation, version, source, payload, ts) + VALUES(?, ?, ?, ?, ?, ?, ?) + """, + ( + entity_type, + entity_id, + operation, + version, + source, + json.dumps(payload), + ts, + ), + ) + self.conn.commit() + return int(cur.lastrowid) + + def create_conflict( + self, + op_id: str, + entity_type: str, + entity_id: str, + reason: str, + local_payload: dict, + remote_payload: dict, + created_at: str, + ) -> str: + with self._lock: + conflict_id = str(uuid.uuid4()) + self.conn.execute( + """ + INSERT INTO sync_conflicts(conflict_id, op_id, entity_type, entity_id, reason, local_payload, remote_payload, created_at, resolved_at) + VALUES(?, ?, ?, ?, ?, ?, ?, ?, NULL) + """, + ( + conflict_id, + op_id, + entity_type, + entity_id, + reason, + json.dumps(local_payload), + json.dumps(remote_payload), + created_at, + ), + ) + self.conn.commit() + return conflict_id + + def list_changes(self, since_seq: int, limit: int) -> list[ChangeItem]: + with self._lock: + rows = self.conn.execute( + """ + SELECT seq, entity_type, entity_id, operation, version, source, payload, ts + FROM sync_change_log + WHERE seq > ? + ORDER BY seq ASC + LIMIT ? + """, + (since_seq, limit), + ).fetchall() + return [ + ChangeItem( + seq=int(row["seq"]), + entity_type=row["entity_type"], + entity_id=row["entity_id"], + operation=SyncOperationType(row["operation"]), + version=int(row["version"]), + source=row["source"], + payload=json.loads(row["payload"]), + ts=row["ts"], + ) + for row in rows + ] + + def max_change_seq(self) -> int: + with self._lock: + row = self.conn.execute("SELECT COALESCE(MAX(seq), 0) AS v FROM sync_change_log").fetchone() + return int(row["v"]) if row is not None else 0 + + def list_conflicts(self, unresolved_only: bool = True) -> list[ConflictItem]: + with self._lock: + if unresolved_only: + rows = self.conn.execute( + """ + SELECT conflict_id, op_id, entity_type, entity_id, reason, local_payload, remote_payload, created_at, resolved_at + FROM sync_conflicts + WHERE resolved_at IS NULL + ORDER BY created_at DESC + """, + ).fetchall() + else: + rows = self.conn.execute( + """ + SELECT conflict_id, op_id, entity_type, entity_id, reason, local_payload, remote_payload, created_at, resolved_at + FROM sync_conflicts + ORDER BY created_at DESC + """, + ).fetchall() + return [ + ConflictItem( + conflict_id=row["conflict_id"], + op_id=row["op_id"], + entity_type=row["entity_type"], + entity_id=row["entity_id"], + reason=row["reason"], + local_payload=json.loads(row["local_payload"]), + remote_payload=json.loads(row["remote_payload"]), + created_at=row["created_at"], + resolved_at=row["resolved_at"], + ) + for row in rows + ] + + def resolve_conflict(self, conflict_id: str, resolved_at: str) -> bool: + with self._lock: + cur = self.conn.execute( + """ + UPDATE sync_conflicts + SET resolved_at = ? + WHERE conflict_id = ? + """, + (resolved_at, conflict_id), + ) + self.conn.commit() + return cur.rowcount > 0 + + def list_entities(self, limit: int) -> list[dict]: + with self._lock: + rows = self.conn.execute( + """ + SELECT entity_type, entity_id, version, payload, deleted, updated_at + FROM sync_entities + ORDER BY updated_at DESC + LIMIT ? + """, + (limit,), + ).fetchall() + return [ + { + "entity_type": row["entity_type"], + "entity_id": row["entity_id"], + "version": int(row["version"]), + "payload": json.loads(row["payload"]), + "deleted": bool(row["deleted"]), + "updated_at": row["updated_at"], + } + for row in rows + ] + + def list_processed_ops(self, limit: int) -> list[dict]: + with self._lock: + rows = self.conn.execute( + """ + SELECT op_id, entity_type, entity_id, processed_at + FROM sync_processed_ops + ORDER BY processed_at DESC + LIMIT ? + """, + (limit,), + ).fetchall() + return [ + { + "op_id": row["op_id"], + "entity_type": row["entity_type"], + "entity_id": row["entity_id"], + "processed_at": row["processed_at"], + } + for row in rows + ] diff --git a/backend/uv.lock b/backend/uv.lock new file mode 100644 index 0000000..2cfbc54 --- /dev/null +++ b/backend/uv.lock @@ -0,0 +1,301 @@ +version = 1 +requires-python = ">=3.11" + +[[package]] +name = "annotated-doc" +version = "0.0.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/57/ba/046ceea27344560984e26a590f90bc7f4a75b06701f653222458922b558c/annotated_doc-0.0.4.tar.gz", hash = "sha256:fbcda96e87e9c92ad167c2e53839e57503ecfda18804ea28102353485033faa4", size = 7288 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/d3/26bf1008eb3d2daa8ef4cacc7f3bfdc11818d111f7e2d0201bc6e3b49d45/annotated_doc-0.0.4-py3-none-any.whl", hash = "sha256:571ac1dc6991c450b25a9c2d84a3705e2ae7a53467b5d111c24fa8baabbed320", size = 5303 }, +] + +[[package]] +name = "annotated-types" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643 }, +] + +[[package]] +name = "anyio" +version = "4.12.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "idna" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/96/f0/5eb65b2bb0d09ac6776f2eb54adee6abe8228ea05b20a5ad0e4945de8aac/anyio-4.12.1.tar.gz", hash = "sha256:41cfcc3a4c85d3f05c932da7c26d0201ac36f72abd4435ba90d0464a3ffed703", size = 228685 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/38/0e/27be9fdef66e72d64c0cdc3cc2823101b80585f8119b5c112c2e8f5f7dab/anyio-4.12.1-py3-none-any.whl", hash = "sha256:d405828884fc140aa80a3c667b8beed277f1dfedec42ba031bd6ac3db606ab6c", size = 113592 }, +] + +[[package]] +name = "click" +version = "8.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "platform_system == 'Windows'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3d/fa/656b739db8587d7b5dfa22e22ed02566950fbfbcdc20311993483657a5c0/click-8.3.1.tar.gz", hash = "sha256:12ff4785d337a1bb490bb7e9c2b1ee5da3112e94a8622f26a6c77f5d2fc6842a", size = 295065 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/98/78/01c019cdb5d6498122777c1a43056ebb3ebfeef2076d9d026bfe15583b2b/click-8.3.1-py3-none-any.whl", hash = "sha256:981153a64e25f12d547d3426c367a4857371575ee7ad18df2a6183ab0545b2a6", size = 108274 }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 }, +] + +[[package]] +name = "fastapi" +version = "0.135.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-doc" }, + { name = "pydantic" }, + { name = "starlette" }, + { name = "typing-extensions" }, + { name = "typing-inspection" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a2/b5/386a9579a299a32365b34097e4eac6a0544ce0d7aa4bb95ce0d71607a999/fastapi-0.135.0.tar.gz", hash = "sha256:bd37903acf014d1284bda027096e460814dca9699f9dacfe11c275749d949f4d", size = 393855 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/56/38/fa5dd0e677e1e2e38f858933c4a125e80103e551151f1f661dd4f227210d/fastapi-0.135.0-py3-none-any.whl", hash = "sha256:31e2ddc78d6406c6f7d5d7b9996a057985e2600fbe7e9ba6ace8205d48dff688", size = 114496 }, +] + +[[package]] +name = "h11" +version = "0.16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515 }, +] + +[[package]] +name = "idna" +version = "3.11" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6f/6d/0703ccc57f3a7233505399edb88de3cbd678da106337b9fcde432b65ed60/idna-3.11.tar.gz", hash = "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902", size = 194582 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea", size = 71008 }, +] + +[[package]] +name = "looseversion" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/64/7e/f13dc08e0712cc2eac8e56c7909ce2ac280dbffef2ffd87bd5277ce9d58b/looseversion-1.3.0.tar.gz", hash = "sha256:ebde65f3f6bb9531a81016c6fef3eb95a61181adc47b7f949e9c0ea47911669e", size = 8799 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4e/74/d5405b9b3b12e9176dff223576d7090bc161092878f533fd0dc23dd6ae1d/looseversion-1.3.0-py2.py3-none-any.whl", hash = "sha256:781ef477b45946fc03dd4c84ea87734b21137ecda0e1e122bcb3c8d16d2a56e0", size = 8237 }, +] + +[[package]] +name = "pydantic" +version = "2.12.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-types" }, + { name = "pydantic-core" }, + { name = "typing-extensions" }, + { name = "typing-inspection" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/69/44/36f1a6e523abc58ae5f928898e4aca2e0ea509b5aa6f6f392a5d882be928/pydantic-2.12.5.tar.gz", hash = "sha256:4d351024c75c0f085a9febbb665ce8c0c6ec5d30e903bdb6394b7ede26aebb49", size = 821591 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/87/b70ad306ebb6f9b585f114d0ac2137d792b48be34d732d60e597c2f8465a/pydantic-2.12.5-py3-none-any.whl", hash = "sha256:e561593fccf61e8a20fc46dfc2dfe075b8be7d0188df33f221ad1f0139180f9d", size = 463580 }, +] + +[[package]] +name = "pydantic-core" +version = "2.41.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/71/70/23b021c950c2addd24ec408e9ab05d59b035b39d97cdc1130e1bce647bb6/pydantic_core-2.41.5.tar.gz", hash = "sha256:08daa51ea16ad373ffd5e7606252cc32f07bc72b28284b6bc9c6df804816476e", size = 460952 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e8/72/74a989dd9f2084b3d9530b0915fdda64ac48831c30dbf7c72a41a5232db8/pydantic_core-2.41.5-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:a3a52f6156e73e7ccb0f8cced536adccb7042be67cb45f9562e12b319c119da6", size = 2105873 }, + { url = "https://files.pythonhosted.org/packages/12/44/37e403fd9455708b3b942949e1d7febc02167662bf1a7da5b78ee1ea2842/pydantic_core-2.41.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7f3bf998340c6d4b0c9a2f02d6a400e51f123b59565d74dc60d252ce888c260b", size = 1899826 }, + { url = "https://files.pythonhosted.org/packages/33/7f/1d5cab3ccf44c1935a359d51a8a2a9e1a654b744b5e7f80d41b88d501eec/pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:378bec5c66998815d224c9ca994f1e14c0c21cb95d2f52b6021cc0b2a58f2a5a", size = 1917869 }, + { url = "https://files.pythonhosted.org/packages/6e/6a/30d94a9674a7fe4f4744052ed6c5e083424510be1e93da5bc47569d11810/pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e7b576130c69225432866fe2f4a469a85a54ade141d96fd396dffcf607b558f8", size = 2063890 }, + { url = "https://files.pythonhosted.org/packages/50/be/76e5d46203fcb2750e542f32e6c371ffa9b8ad17364cf94bb0818dbfb50c/pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6cb58b9c66f7e4179a2d5e0f849c48eff5c1fca560994d6eb6543abf955a149e", size = 2229740 }, + { url = "https://files.pythonhosted.org/packages/d3/ee/fed784df0144793489f87db310a6bbf8118d7b630ed07aa180d6067e653a/pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:88942d3a3dff3afc8288c21e565e476fc278902ae4d6d134f1eeda118cc830b1", size = 2350021 }, + { url = "https://files.pythonhosted.org/packages/c8/be/8fed28dd0a180dca19e72c233cbf58efa36df055e5b9d90d64fd1740b828/pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f31d95a179f8d64d90f6831d71fa93290893a33148d890ba15de25642c5d075b", size = 2066378 }, + { url = "https://files.pythonhosted.org/packages/b0/3b/698cf8ae1d536a010e05121b4958b1257f0b5522085e335360e53a6b1c8b/pydantic_core-2.41.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c1df3d34aced70add6f867a8cf413e299177e0c22660cc767218373d0779487b", size = 2175761 }, + { url = "https://files.pythonhosted.org/packages/b8/ba/15d537423939553116dea94ce02f9c31be0fa9d0b806d427e0308ec17145/pydantic_core-2.41.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4009935984bd36bd2c774e13f9a09563ce8de4abaa7226f5108262fa3e637284", size = 2146303 }, + { url = "https://files.pythonhosted.org/packages/58/7f/0de669bf37d206723795f9c90c82966726a2ab06c336deba4735b55af431/pydantic_core-2.41.5-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:34a64bc3441dc1213096a20fe27e8e128bd3ff89921706e83c0b1ac971276594", size = 2340355 }, + { url = "https://files.pythonhosted.org/packages/e5/de/e7482c435b83d7e3c3ee5ee4451f6e8973cff0eb6007d2872ce6383f6398/pydantic_core-2.41.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c9e19dd6e28fdcaa5a1de679aec4141f691023916427ef9bae8584f9c2fb3b0e", size = 2319875 }, + { url = "https://files.pythonhosted.org/packages/fe/e6/8c9e81bb6dd7560e33b9053351c29f30c8194b72f2d6932888581f503482/pydantic_core-2.41.5-cp311-cp311-win32.whl", hash = "sha256:2c010c6ded393148374c0f6f0bf89d206bf3217f201faa0635dcd56bd1520f6b", size = 1987549 }, + { url = "https://files.pythonhosted.org/packages/11/66/f14d1d978ea94d1bc21fc98fcf570f9542fe55bfcc40269d4e1a21c19bf7/pydantic_core-2.41.5-cp311-cp311-win_amd64.whl", hash = "sha256:76ee27c6e9c7f16f47db7a94157112a2f3a00e958bc626e2f4ee8bec5c328fbe", size = 2011305 }, + { url = "https://files.pythonhosted.org/packages/56/d8/0e271434e8efd03186c5386671328154ee349ff0354d83c74f5caaf096ed/pydantic_core-2.41.5-cp311-cp311-win_arm64.whl", hash = "sha256:4bc36bbc0b7584de96561184ad7f012478987882ebf9f9c389b23f432ea3d90f", size = 1972902 }, + { url = "https://files.pythonhosted.org/packages/5f/5d/5f6c63eebb5afee93bcaae4ce9a898f3373ca23df3ccaef086d0233a35a7/pydantic_core-2.41.5-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f41a7489d32336dbf2199c8c0a215390a751c5b014c2c1c5366e817202e9cdf7", size = 2110990 }, + { url = "https://files.pythonhosted.org/packages/aa/32/9c2e8ccb57c01111e0fd091f236c7b371c1bccea0fa85247ac55b1e2b6b6/pydantic_core-2.41.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:070259a8818988b9a84a449a2a7337c7f430a22acc0859c6b110aa7212a6d9c0", size = 1896003 }, + { url = "https://files.pythonhosted.org/packages/68/b8/a01b53cb0e59139fbc9e4fda3e9724ede8de279097179be4ff31f1abb65a/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e96cea19e34778f8d59fe40775a7a574d95816eb150850a85a7a4c8f4b94ac69", size = 1919200 }, + { url = "https://files.pythonhosted.org/packages/38/de/8c36b5198a29bdaade07b5985e80a233a5ac27137846f3bc2d3b40a47360/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed2e99c456e3fadd05c991f8f437ef902e00eedf34320ba2b0842bd1c3ca3a75", size = 2052578 }, + { url = "https://files.pythonhosted.org/packages/00/b5/0e8e4b5b081eac6cb3dbb7e60a65907549a1ce035a724368c330112adfdd/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:65840751b72fbfd82c3c640cff9284545342a4f1eb1586ad0636955b261b0b05", size = 2208504 }, + { url = "https://files.pythonhosted.org/packages/77/56/87a61aad59c7c5b9dc8caad5a41a5545cba3810c3e828708b3d7404f6cef/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e536c98a7626a98feb2d3eaf75944ef6f3dbee447e1f841eae16f2f0a72d8ddc", size = 2335816 }, + { url = "https://files.pythonhosted.org/packages/0d/76/941cc9f73529988688a665a5c0ecff1112b3d95ab48f81db5f7606f522d3/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eceb81a8d74f9267ef4081e246ffd6d129da5d87e37a77c9bde550cb04870c1c", size = 2075366 }, + { url = "https://files.pythonhosted.org/packages/d3/43/ebef01f69baa07a482844faaa0a591bad1ef129253ffd0cdaa9d8a7f72d3/pydantic_core-2.41.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d38548150c39b74aeeb0ce8ee1d8e82696f4a4e16ddc6de7b1d8823f7de4b9b5", size = 2171698 }, + { url = "https://files.pythonhosted.org/packages/b1/87/41f3202e4193e3bacfc2c065fab7706ebe81af46a83d3e27605029c1f5a6/pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c23e27686783f60290e36827f9c626e63154b82b116d7fe9adba1fda36da706c", size = 2132603 }, + { url = "https://files.pythonhosted.org/packages/49/7d/4c00df99cb12070b6bccdef4a195255e6020a550d572768d92cc54dba91a/pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:482c982f814460eabe1d3bb0adfdc583387bd4691ef00b90575ca0d2b6fe2294", size = 2329591 }, + { url = "https://files.pythonhosted.org/packages/cc/6a/ebf4b1d65d458f3cda6a7335d141305dfa19bdc61140a884d165a8a1bbc7/pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:bfea2a5f0b4d8d43adf9d7b8bf019fb46fdd10a2e5cde477fbcb9d1fa08c68e1", size = 2319068 }, + { url = "https://files.pythonhosted.org/packages/49/3b/774f2b5cd4192d5ab75870ce4381fd89cf218af999515baf07e7206753f0/pydantic_core-2.41.5-cp312-cp312-win32.whl", hash = "sha256:b74557b16e390ec12dca509bce9264c3bbd128f8a2c376eaa68003d7f327276d", size = 1985908 }, + { url = "https://files.pythonhosted.org/packages/86/45/00173a033c801cacf67c190fef088789394feaf88a98a7035b0e40d53dc9/pydantic_core-2.41.5-cp312-cp312-win_amd64.whl", hash = "sha256:1962293292865bca8e54702b08a4f26da73adc83dd1fcf26fbc875b35d81c815", size = 2020145 }, + { url = "https://files.pythonhosted.org/packages/f9/22/91fbc821fa6d261b376a3f73809f907cec5ca6025642c463d3488aad22fb/pydantic_core-2.41.5-cp312-cp312-win_arm64.whl", hash = "sha256:1746d4a3d9a794cacae06a5eaaccb4b8643a131d45fbc9af23e353dc0a5ba5c3", size = 1976179 }, + { url = "https://files.pythonhosted.org/packages/87/06/8806241ff1f70d9939f9af039c6c35f2360cf16e93c2ca76f184e76b1564/pydantic_core-2.41.5-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:941103c9be18ac8daf7b7adca8228f8ed6bb7a1849020f643b3a14d15b1924d9", size = 2120403 }, + { url = "https://files.pythonhosted.org/packages/94/02/abfa0e0bda67faa65fef1c84971c7e45928e108fe24333c81f3bfe35d5f5/pydantic_core-2.41.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:112e305c3314f40c93998e567879e887a3160bb8689ef3d2c04b6cc62c33ac34", size = 1896206 }, + { url = "https://files.pythonhosted.org/packages/15/df/a4c740c0943e93e6500f9eb23f4ca7ec9bf71b19e608ae5b579678c8d02f/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cbaad15cb0c90aa221d43c00e77bb33c93e8d36e0bf74760cd00e732d10a6a0", size = 1919307 }, + { url = "https://files.pythonhosted.org/packages/9a/e3/6324802931ae1d123528988e0e86587c2072ac2e5394b4bc2bc34b61ff6e/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:03ca43e12fab6023fc79d28ca6b39b05f794ad08ec2feccc59a339b02f2b3d33", size = 2063258 }, + { url = "https://files.pythonhosted.org/packages/c9/d4/2230d7151d4957dd79c3044ea26346c148c98fbf0ee6ebd41056f2d62ab5/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dc799088c08fa04e43144b164feb0c13f9a0bc40503f8df3e9fde58a3c0c101e", size = 2214917 }, + { url = "https://files.pythonhosted.org/packages/e6/9f/eaac5df17a3672fef0081b6c1bb0b82b33ee89aa5cec0d7b05f52fd4a1fa/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:97aeba56665b4c3235a0e52b2c2f5ae9cd071b8a8310ad27bddb3f7fb30e9aa2", size = 2332186 }, + { url = "https://files.pythonhosted.org/packages/cf/4e/35a80cae583a37cf15604b44240e45c05e04e86f9cfd766623149297e971/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:406bf18d345822d6c21366031003612b9c77b3e29ffdb0f612367352aab7d586", size = 2073164 }, + { url = "https://files.pythonhosted.org/packages/bf/e3/f6e262673c6140dd3305d144d032f7bd5f7497d3871c1428521f19f9efa2/pydantic_core-2.41.5-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b93590ae81f7010dbe380cdeab6f515902ebcbefe0b9327cc4804d74e93ae69d", size = 2179146 }, + { url = "https://files.pythonhosted.org/packages/75/c7/20bd7fc05f0c6ea2056a4565c6f36f8968c0924f19b7d97bbfea55780e73/pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:01a3d0ab748ee531f4ea6c3e48ad9dac84ddba4b0d82291f87248f2f9de8d740", size = 2137788 }, + { url = "https://files.pythonhosted.org/packages/3a/8d/34318ef985c45196e004bc46c6eab2eda437e744c124ef0dbe1ff2c9d06b/pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:6561e94ba9dacc9c61bce40e2d6bdc3bfaa0259d3ff36ace3b1e6901936d2e3e", size = 2340133 }, + { url = "https://files.pythonhosted.org/packages/9c/59/013626bf8c78a5a5d9350d12e7697d3d4de951a75565496abd40ccd46bee/pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:915c3d10f81bec3a74fbd4faebe8391013ba61e5a1a8d48c4455b923bdda7858", size = 2324852 }, + { url = "https://files.pythonhosted.org/packages/1a/d9/c248c103856f807ef70c18a4f986693a46a8ffe1602e5d361485da502d20/pydantic_core-2.41.5-cp313-cp313-win32.whl", hash = "sha256:650ae77860b45cfa6e2cdafc42618ceafab3a2d9a3811fcfbd3bbf8ac3c40d36", size = 1994679 }, + { url = "https://files.pythonhosted.org/packages/9e/8b/341991b158ddab181cff136acd2552c9f35bd30380422a639c0671e99a91/pydantic_core-2.41.5-cp313-cp313-win_amd64.whl", hash = "sha256:79ec52ec461e99e13791ec6508c722742ad745571f234ea6255bed38c6480f11", size = 2019766 }, + { url = "https://files.pythonhosted.org/packages/73/7d/f2f9db34af103bea3e09735bb40b021788a5e834c81eedb541991badf8f5/pydantic_core-2.41.5-cp313-cp313-win_arm64.whl", hash = "sha256:3f84d5c1b4ab906093bdc1ff10484838aca54ef08de4afa9de0f5f14d69639cd", size = 1981005 }, + { url = "https://files.pythonhosted.org/packages/ea/28/46b7c5c9635ae96ea0fbb779e271a38129df2550f763937659ee6c5dbc65/pydantic_core-2.41.5-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:3f37a19d7ebcdd20b96485056ba9e8b304e27d9904d233d7b1015db320e51f0a", size = 2119622 }, + { url = "https://files.pythonhosted.org/packages/74/1a/145646e5687e8d9a1e8d09acb278c8535ebe9e972e1f162ed338a622f193/pydantic_core-2.41.5-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:1d1d9764366c73f996edd17abb6d9d7649a7eb690006ab6adbda117717099b14", size = 1891725 }, + { url = "https://files.pythonhosted.org/packages/23/04/e89c29e267b8060b40dca97bfc64a19b2a3cf99018167ea1677d96368273/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25e1c2af0fce638d5f1988b686f3b3ea8cd7de5f244ca147c777769e798a9cd1", size = 1915040 }, + { url = "https://files.pythonhosted.org/packages/84/a3/15a82ac7bd97992a82257f777b3583d3e84bdb06ba6858f745daa2ec8a85/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:506d766a8727beef16b7adaeb8ee6217c64fc813646b424d0804d67c16eddb66", size = 2063691 }, + { url = "https://files.pythonhosted.org/packages/74/9b/0046701313c6ef08c0c1cf0e028c67c770a4e1275ca73131563c5f2a310a/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4819fa52133c9aa3c387b3328f25c1facc356491e6135b459f1de698ff64d869", size = 2213897 }, + { url = "https://files.pythonhosted.org/packages/8a/cd/6bac76ecd1b27e75a95ca3a9a559c643b3afcd2dd62086d4b7a32a18b169/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2b761d210c9ea91feda40d25b4efe82a1707da2ef62901466a42492c028553a2", size = 2333302 }, + { url = "https://files.pythonhosted.org/packages/4c/d2/ef2074dc020dd6e109611a8be4449b98cd25e1b9b8a303c2f0fca2f2bcf7/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22f0fb8c1c583a3b6f24df2470833b40207e907b90c928cc8d3594b76f874375", size = 2064877 }, + { url = "https://files.pythonhosted.org/packages/18/66/e9db17a9a763d72f03de903883c057b2592c09509ccfe468187f2a2eef29/pydantic_core-2.41.5-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2782c870e99878c634505236d81e5443092fba820f0373997ff75f90f68cd553", size = 2180680 }, + { url = "https://files.pythonhosted.org/packages/d3/9e/3ce66cebb929f3ced22be85d4c2399b8e85b622db77dad36b73c5387f8f8/pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:0177272f88ab8312479336e1d777f6b124537d47f2123f89cb37e0accea97f90", size = 2138960 }, + { url = "https://files.pythonhosted.org/packages/a6/62/205a998f4327d2079326b01abee48e502ea739d174f0a89295c481a2272e/pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:63510af5e38f8955b8ee5687740d6ebf7c2a0886d15a6d65c32814613681bc07", size = 2339102 }, + { url = "https://files.pythonhosted.org/packages/3c/0d/f05e79471e889d74d3d88f5bd20d0ed189ad94c2423d81ff8d0000aab4ff/pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:e56ba91f47764cc14f1daacd723e3e82d1a89d783f0f5afe9c364b8bb491ccdb", size = 2326039 }, + { url = "https://files.pythonhosted.org/packages/ec/e1/e08a6208bb100da7e0c4b288eed624a703f4d129bde2da475721a80cab32/pydantic_core-2.41.5-cp314-cp314-win32.whl", hash = "sha256:aec5cf2fd867b4ff45b9959f8b20ea3993fc93e63c7363fe6851424c8a7e7c23", size = 1995126 }, + { url = "https://files.pythonhosted.org/packages/48/5d/56ba7b24e9557f99c9237e29f5c09913c81eeb2f3217e40e922353668092/pydantic_core-2.41.5-cp314-cp314-win_amd64.whl", hash = "sha256:8e7c86f27c585ef37c35e56a96363ab8de4e549a95512445b85c96d3e2f7c1bf", size = 2015489 }, + { url = "https://files.pythonhosted.org/packages/4e/bb/f7a190991ec9e3e0ba22e4993d8755bbc4a32925c0b5b42775c03e8148f9/pydantic_core-2.41.5-cp314-cp314-win_arm64.whl", hash = "sha256:e672ba74fbc2dc8eea59fb6d4aed6845e6905fc2a8afe93175d94a83ba2a01a0", size = 1977288 }, + { url = "https://files.pythonhosted.org/packages/92/ed/77542d0c51538e32e15afe7899d79efce4b81eee631d99850edc2f5e9349/pydantic_core-2.41.5-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:8566def80554c3faa0e65ac30ab0932b9e3a5cd7f8323764303d468e5c37595a", size = 2120255 }, + { url = "https://files.pythonhosted.org/packages/bb/3d/6913dde84d5be21e284439676168b28d8bbba5600d838b9dca99de0fad71/pydantic_core-2.41.5-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:b80aa5095cd3109962a298ce14110ae16b8c1aece8b72f9dafe81cf597ad80b3", size = 1863760 }, + { url = "https://files.pythonhosted.org/packages/5a/f0/e5e6b99d4191da102f2b0eb9687aaa7f5bea5d9964071a84effc3e40f997/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3006c3dd9ba34b0c094c544c6006cc79e87d8612999f1a5d43b769b89181f23c", size = 1878092 }, + { url = "https://files.pythonhosted.org/packages/71/48/36fb760642d568925953bcc8116455513d6e34c4beaa37544118c36aba6d/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:72f6c8b11857a856bcfa48c86f5368439f74453563f951e473514579d44aa612", size = 2053385 }, + { url = "https://files.pythonhosted.org/packages/20/25/92dc684dd8eb75a234bc1c764b4210cf2646479d54b47bf46061657292a8/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5cb1b2f9742240e4bb26b652a5aeb840aa4b417c7748b6f8387927bc6e45e40d", size = 2218832 }, + { url = "https://files.pythonhosted.org/packages/e2/09/f53e0b05023d3e30357d82eb35835d0f6340ca344720a4599cd663dca599/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bd3d54f38609ff308209bd43acea66061494157703364ae40c951f83ba99a1a9", size = 2327585 }, + { url = "https://files.pythonhosted.org/packages/aa/4e/2ae1aa85d6af35a39b236b1b1641de73f5a6ac4d5a7509f77b814885760c/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ff4321e56e879ee8d2a879501c8e469414d948f4aba74a2d4593184eb326660", size = 2041078 }, + { url = "https://files.pythonhosted.org/packages/cd/13/2e215f17f0ef326fc72afe94776edb77525142c693767fc347ed6288728d/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d0d2568a8c11bf8225044aa94409e21da0cb09dcdafe9ecd10250b2baad531a9", size = 2173914 }, + { url = "https://files.pythonhosted.org/packages/02/7a/f999a6dcbcd0e5660bc348a3991c8915ce6599f4f2c6ac22f01d7a10816c/pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:a39455728aabd58ceabb03c90e12f71fd30fa69615760a075b9fec596456ccc3", size = 2129560 }, + { url = "https://files.pythonhosted.org/packages/3a/b1/6c990ac65e3b4c079a4fb9f5b05f5b013afa0f4ed6780a3dd236d2cbdc64/pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_armv7l.whl", hash = "sha256:239edca560d05757817c13dc17c50766136d21f7cd0fac50295499ae24f90fdf", size = 2329244 }, + { url = "https://files.pythonhosted.org/packages/d9/02/3c562f3a51afd4d88fff8dffb1771b30cfdfd79befd9883ee094f5b6c0d8/pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:2a5e06546e19f24c6a96a129142a75cee553cc018ffee48a460059b1185f4470", size = 2331955 }, + { url = "https://files.pythonhosted.org/packages/5c/96/5fb7d8c3c17bc8c62fdb031c47d77a1af698f1d7a406b0f79aaa1338f9ad/pydantic_core-2.41.5-cp314-cp314t-win32.whl", hash = "sha256:b4ececa40ac28afa90871c2cc2b9ffd2ff0bf749380fbdf57d165fd23da353aa", size = 1988906 }, + { url = "https://files.pythonhosted.org/packages/22/ed/182129d83032702912c2e2d8bbe33c036f342cc735737064668585dac28f/pydantic_core-2.41.5-cp314-cp314t-win_amd64.whl", hash = "sha256:80aa89cad80b32a912a65332f64a4450ed00966111b6615ca6816153d3585a8c", size = 1981607 }, + { url = "https://files.pythonhosted.org/packages/9f/ed/068e41660b832bb0b1aa5b58011dea2a3fe0ba7861ff38c4d4904c1c1a99/pydantic_core-2.41.5-cp314-cp314t-win_arm64.whl", hash = "sha256:35b44f37a3199f771c3eaa53051bc8a70cd7b54f333531c59e29fd4db5d15008", size = 1974769 }, + { url = "https://files.pythonhosted.org/packages/11/72/90fda5ee3b97e51c494938a4a44c3a35a9c96c19bba12372fb9c634d6f57/pydantic_core-2.41.5-graalpy311-graalpy242_311_native-macosx_10_12_x86_64.whl", hash = "sha256:b96d5f26b05d03cc60f11a7761a5ded1741da411e7fe0909e27a5e6a0cb7b034", size = 2115441 }, + { url = "https://files.pythonhosted.org/packages/1f/53/8942f884fa33f50794f119012dc6a1a02ac43a56407adaac20463df8e98f/pydantic_core-2.41.5-graalpy311-graalpy242_311_native-macosx_11_0_arm64.whl", hash = "sha256:634e8609e89ceecea15e2d61bc9ac3718caaaa71963717bf3c8f38bfde64242c", size = 1930291 }, + { url = "https://files.pythonhosted.org/packages/79/c8/ecb9ed9cd942bce09fc888ee960b52654fbdbede4ba6c2d6e0d3b1d8b49c/pydantic_core-2.41.5-graalpy311-graalpy242_311_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:93e8740d7503eb008aa2df04d3b9735f845d43ae845e6dcd2be0b55a2da43cd2", size = 1948632 }, + { url = "https://files.pythonhosted.org/packages/2e/1b/687711069de7efa6af934e74f601e2a4307365e8fdc404703afc453eab26/pydantic_core-2.41.5-graalpy311-graalpy242_311_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f15489ba13d61f670dcc96772e733aad1a6f9c429cc27574c6cdaed82d0146ad", size = 2138905 }, + { url = "https://files.pythonhosted.org/packages/09/32/59b0c7e63e277fa7911c2fc70ccfb45ce4b98991e7ef37110663437005af/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:7da7087d756b19037bc2c06edc6c170eeef3c3bafcb8f532ff17d64dc427adfd", size = 2110495 }, + { url = "https://files.pythonhosted.org/packages/aa/81/05e400037eaf55ad400bcd318c05bb345b57e708887f07ddb2d20e3f0e98/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:aabf5777b5c8ca26f7824cb4a120a740c9588ed58df9b2d196ce92fba42ff8dc", size = 1915388 }, + { url = "https://files.pythonhosted.org/packages/6e/0d/e3549b2399f71d56476b77dbf3cf8937cec5cd70536bdc0e374a421d0599/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c007fe8a43d43b3969e8469004e9845944f1a80e6acd47c150856bb87f230c56", size = 1942879 }, + { url = "https://files.pythonhosted.org/packages/f7/07/34573da085946b6a313d7c42f82f16e8920bfd730665de2d11c0c37a74b5/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76d0819de158cd855d1cbb8fcafdf6f5cf1eb8e470abe056d5d161106e38062b", size = 2139017 }, + { url = "https://files.pythonhosted.org/packages/5f/9b/1b3f0e9f9305839d7e84912f9e8bfbd191ed1b1ef48083609f0dabde978c/pydantic_core-2.41.5-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:b2379fa7ed44ddecb5bfe4e48577d752db9fc10be00a6b7446e9663ba143de26", size = 2101980 }, + { url = "https://files.pythonhosted.org/packages/a4/ed/d71fefcb4263df0da6a85b5d8a7508360f2f2e9b3bf5814be9c8bccdccc1/pydantic_core-2.41.5-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:266fb4cbf5e3cbd0b53669a6d1b039c45e3ce651fd5442eff4d07c2cc8d66808", size = 1923865 }, + { url = "https://files.pythonhosted.org/packages/ce/3a/626b38db460d675f873e4444b4bb030453bbe7b4ba55df821d026a0493c4/pydantic_core-2.41.5-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58133647260ea01e4d0500089a8c4f07bd7aa6ce109682b1426394988d8aaacc", size = 2134256 }, + { url = "https://files.pythonhosted.org/packages/83/d9/8412d7f06f616bbc053d30cb4e5f76786af3221462ad5eee1f202021eb4e/pydantic_core-2.41.5-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:287dad91cfb551c363dc62899a80e9e14da1f0e2b6ebde82c806612ca2a13ef1", size = 2174762 }, + { url = "https://files.pythonhosted.org/packages/55/4c/162d906b8e3ba3a99354e20faa1b49a85206c47de97a639510a0e673f5da/pydantic_core-2.41.5-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:03b77d184b9eb40240ae9fd676ca364ce1085f203e1b1256f8ab9984dca80a84", size = 2143141 }, + { url = "https://files.pythonhosted.org/packages/1f/f2/f11dd73284122713f5f89fc940f370d035fa8e1e078d446b3313955157fe/pydantic_core-2.41.5-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:a668ce24de96165bb239160b3d854943128f4334822900534f2fe947930e5770", size = 2330317 }, + { url = "https://files.pythonhosted.org/packages/88/9d/b06ca6acfe4abb296110fb1273a4d848a0bfb2ff65f3ee92127b3244e16b/pydantic_core-2.41.5-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f14f8f046c14563f8eb3f45f499cc658ab8d10072961e07225e507adb700e93f", size = 2316992 }, + { url = "https://files.pythonhosted.org/packages/36/c7/cfc8e811f061c841d7990b0201912c3556bfeb99cdcb7ed24adc8d6f8704/pydantic_core-2.41.5-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:56121965f7a4dc965bff783d70b907ddf3d57f6eba29b6d2e5dabfaf07799c51", size = 2145302 }, +] + +[[package]] +name = "rethinkdb" +version = "2.4.10.post1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "looseversion" }, + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/42/f2/ba4f965d8063c6e03ecca7237977b452f4d46ec056a8b3a4ba0cc61debc9/rethinkdb-2.4.10.post1.tar.gz", hash = "sha256:3634e03ee13dd637fd7196b80474bf44c64d3eba1dd069ea92b94926702a60bd", size = 159014 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/23/a9/8101ffc5f005aa9d735f213185e87209e30981db149506c18a47e9367602/rethinkdb-2.4.10.post1-py2.py3-none-any.whl", hash = "sha256:a8c3644a35beb7bc857887808d267e6124623b32dc1f54608e7729a14617a431", size = 160870 }, +] + +[[package]] +name = "six" +version = "1.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050 }, +] + +[[package]] +name = "sketchord-sync-backend" +version = "0.1.0" +source = { editable = "." } +dependencies = [ + { name = "fastapi" }, + { name = "pydantic" }, + { name = "uvicorn" }, +] + +[package.optional-dependencies] +rethinkdb = [ + { name = "rethinkdb" }, +] + +[package.metadata] +requires-dist = [ + { name = "fastapi", specifier = ">=0.116.0" }, + { name = "pydantic", specifier = ">=2.11.0" }, + { name = "rethinkdb", marker = "extra == 'rethinkdb'", specifier = ">=2.4.10" }, + { name = "uvicorn", specifier = ">=0.35.0" }, +] + +[[package]] +name = "starlette" +version = "0.52.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c4/68/79977123bb7be889ad680d79a40f339082c1978b5cfcf62c2d8d196873ac/starlette-0.52.1.tar.gz", hash = "sha256:834edd1b0a23167694292e94f597773bc3f89f362be6effee198165a35d62933", size = 2653702 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/0d/13d1d239a25cbfb19e740db83143e95c772a1fe10202dda4b76792b114dd/starlette-0.52.1-py3-none-any.whl", hash = "sha256:0029d43eb3d273bc4f83a08720b4912ea4b071087a3b48db01b7c839f7954d74", size = 74272 }, +] + +[[package]] +name = "typing-extensions" +version = "4.15.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614 }, +] + +[[package]] +name = "typing-inspection" +version = "0.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/55/e3/70399cb7dd41c10ac53367ae42139cf4b1ca5f36bb3dc6c9d33acdb43655/typing_inspection-0.4.2.tar.gz", hash = "sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464", size = 75949 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl", hash = "sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7", size = 14611 }, +] + +[[package]] +name = "uvicorn" +version = "0.41.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "h11" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/32/ce/eeb58ae4ac36fe09e3842eb02e0eb676bf2c53ae062b98f1b2531673efdd/uvicorn-0.41.0.tar.gz", hash = "sha256:09d11cf7008da33113824ee5a1c6422d89fbc2ff476540d69a34c87fab8b571a", size = 82633 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/83/e4/d04a086285c20886c0daad0e026f250869201013d18f81d9ff5eada73a88/uvicorn-0.41.0-py3-none-any.whl", hash = "sha256:29e35b1d2c36a04b9e180d4007ede3bcb32a85fbdfd6c6aeb3f26839de088187", size = 68783 }, +] diff --git a/ios/Flutter/ephemeral/flutter_lldb_helper.py b/ios/Flutter/ephemeral/flutter_lldb_helper.py new file mode 100644 index 0000000..a88caf9 --- /dev/null +++ b/ios/Flutter/ephemeral/flutter_lldb_helper.py @@ -0,0 +1,32 @@ +# +# Generated file, do not edit. +# + +import lldb + +def handle_new_rx_page(frame: lldb.SBFrame, bp_loc, extra_args, intern_dict): + """Intercept NOTIFY_DEBUGGER_ABOUT_RX_PAGES and touch the pages.""" + base = frame.register["x0"].GetValueAsAddress() + page_len = frame.register["x1"].GetValueAsUnsigned() + + # Note: NOTIFY_DEBUGGER_ABOUT_RX_PAGES will check contents of the + # first page to see if handled it correctly. This makes diagnosing + # misconfiguration (e.g. missing breakpoint) easier. + data = bytearray(page_len) + data[0:8] = b'IHELPED!' + + error = lldb.SBError() + frame.GetThread().GetProcess().WriteMemory(base, data, error) + if not error.Success(): + print(f'Failed to write into {base}[+{page_len}]', error) + return + +def __lldb_init_module(debugger: lldb.SBDebugger, _): + target = debugger.GetDummyTarget() + # Caveat: must use BreakpointCreateByRegEx here and not + # BreakpointCreateByName. For some reasons callback function does not + # get carried over from dummy target for the later. + bp = target.BreakpointCreateByRegex("^NOTIFY_DEBUGGER_ABOUT_RX_PAGES$") + bp.SetScriptCallbackFunction('{}.handle_new_rx_page'.format(__name__)) + bp.SetAutoContinue(True) + print("-- LLDB integration loaded --") diff --git a/ios/Flutter/ephemeral/flutter_lldbinit b/ios/Flutter/ephemeral/flutter_lldbinit new file mode 100644 index 0000000..e3ba6fb --- /dev/null +++ b/ios/Flutter/ephemeral/flutter_lldbinit @@ -0,0 +1,5 @@ +# +# Generated file, do not edit. +# + +command script import --relative-to-command-file flutter_lldb_helper.py diff --git a/lib/home.dart b/lib/home.dart index fea6dd1..abfe4dd 100644 --- a/lib/home.dart +++ b/lib/home.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:flutter/foundation.dart'; import 'package:sound/dialogs/color_picker_dialog.dart'; import 'package:sound/dialogs/initial_import_dialog.dart'; import 'package:sound/note_views/appbar.dart'; @@ -11,6 +12,9 @@ import 'note_list.dart'; import 'storage.dart'; import 'note_editor.dart'; import 'model.dart'; +import 'sync_debug_store.dart'; +import 'sync_conflicts_page.dart'; +import 'sync_status_store.dart'; //import 'recorder.dart'; import 'db.dart'; @@ -59,7 +63,9 @@ class _HomeState extends State { LocalStorage().syncNote(note); Navigator.push( - context, MaterialPageRoute(builder: (context) => NoteEditor(note))); + context, + MaterialPageRoute(builder: (context) => NoteEditor(note)), + ); } @override @@ -79,17 +85,18 @@ class _HomeState extends State { }, ); return Scaffold( - floatingActionButton: FloatingActionButton( - foregroundColor: Colors.white, - backgroundColor: Theme.of(context).colorScheme.secondary, + floatingActionButton: FloatingActionButton( + foregroundColor: Colors.white, + backgroundColor: Theme.of(context).colorScheme.secondary, + onPressed: () => _floatingButtonPress(context), + child: IconButton( onPressed: () => _floatingButtonPress(context), - child: IconButton( - onPressed: () => _floatingButtonPress(context), - icon: Icon(Icons.add), - ), + icon: Icon(Icons.add), ), - //bottomSheet: RecorderBottomSheet(), - body: builder); + ), + //bottomSheet: RecorderBottomSheet(), + body: builder, + ); } } @@ -117,6 +124,7 @@ class HomeContentState extends State @override Widget build(BuildContext context) { storage = context.watch(); + context.watch(); return _sliver(); } @@ -136,7 +144,9 @@ class HomeContentState extends State _activeFiltersView() { return ActiveFiltersView( - filters: storage.filters, removeFilter: removeFilter); + filters: storage.filters, + removeFilter: removeFilter, + ); } _filtersView() { @@ -151,23 +161,26 @@ class HomeContentState extends State for (Tuple3, FilterBy, String> option in filterOptions) { if (option.item1.length >= 0) { - items.add(FilterOptionsView( - title: option.item3, - data: option.item1, - by: option.item2, - showMore: storage.showMore(option.item2), - mustShowMore: storage.mustShowMore(option.item2), - isFilterApplied: storage.isFilterApplied, - )); + items.add( + FilterOptionsView( + title: option.item3, + data: option.item1, + by: option.item2, + showMore: storage.showMore(option.item2), + mustShowMore: storage.mustShowMore(option.item2), + isFilterApplied: storage.isFilterApplied, + ), + ); } } return Padding( - padding: EdgeInsets.only(left: 25, top: 60), - child: ListView.builder( - itemBuilder: (context, i) => items[i], - itemCount: items.length, - )); + padding: EdgeInsets.only(left: 25, top: 60), + child: ListView.builder( + itemBuilder: (context, i) => items[i], + itemCount: items.length, + ), + ); } _toggleIsSearching({searching}) { @@ -200,41 +213,174 @@ class HomeContentState extends State _searchActionButtons() { return [ IconButton( - icon: Icon(filtersEnabled ? Icons.arrow_upward : Icons.filter_list), - onPressed: () { - setState(() { - filtersEnabled = !filtersEnabled; - }); - }) + icon: Icon(filtersEnabled ? Icons.arrow_upward : Icons.filter_list), + onPressed: () { + setState(() { + filtersEnabled = !filtersEnabled; + }); + }, + ), ]; } + Widget _syncStatusButton() { + final syncStore = context.watch(); + final syncDebug = context.watch(); + final hasRuntimeError = + (syncDebug.lastError != null && syncDebug.lastError!.trim().isNotEmpty); + final hasConflicts = syncStore.unresolvedConflicts > 0; + final queuedChanges = syncStore.queuedChanges; + final badgeNumber = hasRuntimeError + ? 1 + : (hasConflicts ? syncStore.unresolvedConflicts : queuedChanges); + + final icon = hasRuntimeError + ? Icons.cloud_off + : hasConflicts + ? Icons.cloud_off + : (queuedChanges > 0 ? Icons.cloud_upload : Icons.cloud_done); + final iconColor = hasRuntimeError + ? Colors.redAccent + : hasConflicts + ? Colors.orangeAccent + : (queuedChanges > 0 ? null : Colors.greenAccent); + + Future showMiniDebugOverlay() async { + final debugStore = context.read(); + final syncStore = context.read(); + final backendUrl = await LocalStorage().getSyncBackendUrl(); + final enabled = await LocalStorage().getSyncEnabled(); + if (!mounted) return; + + await showModalBottomSheet( + context: context, + builder: (sheetContext) { + final currentDebug = sheetContext.watch(); + final currentSync = sheetContext.watch(); + String fmt(DateTime? dt) => dt?.toIso8601String() ?? '-'; + return SafeArea( + child: Padding( + padding: const EdgeInsets.fromLTRB(16, 12, 16, 16), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text('Sync Debug', + style: Theme.of(context).textTheme.titleMedium), + const SizedBox(height: 8), + Text('Enabled: $enabled'), + Text('Backend: $backendUrl'), + Text('Syncing: ${currentDebug.isSyncing}'), + Text('Queued: ${currentSync.queuedChanges}'), + Text('Conflicts: ${currentSync.unresolvedConflicts}'), + Text('Last attempt: ${fmt(currentDebug.lastAttemptAt)}'), + Text('Last success: ${fmt(currentDebug.lastSuccessAt)}'), + Text('Last error: ${currentDebug.lastError ?? '-'}'), + const SizedBox(height: 12), + Row( + children: [ + ElevatedButton.icon( + onPressed: () async { + await debugStore.syncNow(); + await syncStore.refresh(); + }, + icon: const Icon(Icons.sync), + label: const Text('Sync now'), + ), + const SizedBox(width: 10), + OutlinedButton( + onPressed: () => Navigator.pop(sheetContext), + child: const Text('Close'), + ), + ], + ), + ], + ), + ), + ); + }, + ); + } + + return GestureDetector( + onLongPress: kDebugMode ? showMiniDebugOverlay : null, + child: IconButton( + onPressed: () { + Navigator.push( + context, + MaterialPageRoute(builder: (_) => const SyncConflictsPage()), + ); + }, + icon: Stack( + clipBehavior: Clip.none, + children: [ + Icon(icon, color: iconColor), + if (badgeNumber > 0) + Positioned( + right: -6, + top: -6, + child: Container( + padding: + const EdgeInsets.symmetric(horizontal: 5, vertical: 2), + decoration: BoxDecoration( + color: Colors.redAccent, + borderRadius: BorderRadius.circular(12), + ), + constraints: + const BoxConstraints(minWidth: 18, minHeight: 16), + child: Text( + badgeNumber > 99 ? '99+' : '$badgeNumber', + textAlign: TextAlign.center, + style: const TextStyle( + color: Colors.white, + fontSize: 10, + fontWeight: FontWeight.bold, + ), + ), + ), + ), + ], + ), + tooltip: hasRuntimeError + ? 'Sync connection error' + : (hasConflicts + ? 'Sync conflicts' + : (queuedChanges > 0 + ? 'Queued sync changes' + : 'Everything synced')), + ), + ); + } + _sliverNoteSelectionAppBar() { - print((storage.selectedNotes - .map((e) => e.starred) - .toList() - .length - .toDouble() / - storage.selectedNotes.length.toDouble())); + print( + (storage.selectedNotes.map((e) => e.starred).toList().length.toDouble() / + storage.selectedNotes.length.toDouble()), + ); return SliverAppBar( pinned: true, leading: IconButton( - icon: Icon(Icons.clear), onPressed: () => clearSelection()), + icon: Icon(Icons.clear), + onPressed: () => clearSelection(), + ), title: Text(storage.selectedNotes.length.toString()), actions: [ IconButton( - icon: Icon(Icons.delete), - onPressed: () => discardAllSelectedNotes()), + icon: Icon(Icons.delete), + onPressed: () => discardAllSelectedNotes(), + ), IconButton( - icon: Icon(Icons.color_lens), - onPressed: () { - showColorPickerDialog(context, null, (c) { - colorAllSelectedNotes(c); - }); - }), + icon: Icon(Icons.color_lens), + onPressed: () { + showColorPickerDialog(context, null, (c) { + colorAllSelectedNotes(c); + }); + }, + ), IconButton( - icon: Icon((storage.selectedNotes + icon: Icon( + (storage.selectedNotes .where((e) => e.starred) .toList() .length @@ -242,20 +388,22 @@ class HomeContentState extends State storage.selectedNotes.length.toDouble()) < 0.5 ? Icons.star - : Icons.star_border), - onPressed: () { - if ((storage.selectedNotes - .where((e) => e.starred) - .toList() - .length - .toDouble() / - storage.selectedNotes.length.toDouble()) < - 0.5) { - starAllSelectedNotes(); - } else { - unstarAllSelectedNotes(); - } - }), + : Icons.star_border, + ), + onPressed: () { + if ((storage.selectedNotes + .where((e) => e.starred) + .toList() + .length + .toDouble() / + storage.selectedNotes.length.toDouble()) < + 0.5) { + starAllSelectedNotes(); + } else { + unstarAllSelectedNotes(); + } + }, + ), ], ); } @@ -263,17 +411,23 @@ class HomeContentState extends State _sliverAppBar() { return SliverAppBar( titleSpacing: 5.0, - actions: isSearching ? _searchActionButtons() : _listActionButtons(), + actions: [ + _syncStatusButton(), + ...(isSearching ? _searchActionButtons() : _listActionButtons()), + ], flexibleSpace: (filtersEnabled && isSearching) ? _filtersView() : (isFiltering ? _activeFiltersView() : Container()), leading: isSearching ? IconButton( - icon: Icon(Icons.arrow_back), onPressed: () => _clearSearch()) + icon: Icon(Icons.arrow_back), + onPressed: () => _clearSearch(), + ) : IconButton(icon: Icon(Icons.menu), onPressed: widget.onMenuPressed), title: Padding( - child: Center(child: _searchView()), - padding: EdgeInsets.only(left: 5)), + child: Center(child: _searchView()), + padding: EdgeInsets.only(left: 5), + ), expandedHeight: (isSearching && filtersEnabled) ? 370 : (isFiltering ? 100 : 0), floating: false, @@ -286,8 +440,10 @@ class HomeContentState extends State if (storage.isAnyNoteSelected()) { triggerSelectNote(note); } else { - Navigator.push(context, - MaterialPageRoute(builder: (context) => NoteEditor(note))); + Navigator.push( + context, + MaterialPageRoute(builder: (context) => NoteEditor(note)), + ); } } @@ -301,48 +457,82 @@ class HomeContentState extends State print("notes are starred"); List items = storage.filteredNotes .where((n) => !n.starred) - .map((n) => - NoteListItemModel(note: n, isSelected: storage.isSelected(n))) + .map( + (n) => + NoteListItemModel(note: n, isSelected: storage.isSelected(n)), + ) .toList(); List starrtedItems = storage.filteredNotes .where((n) => n.starred) - .map((n) => - NoteListItemModel(note: n, isSelected: storage.isSelected(n))) + .map( + (n) => + NoteListItemModel(note: n, isSelected: storage.isSelected(n)), + ) .toList(); noteList = [ SliverList( - delegate: SliverChildListDelegate([ - Padding( + delegate: SliverChildListDelegate([ + Padding( padding: EdgeInsets.only(left: 16, top: 16), - child: Row(children: [ - Text("Starred", style: Theme.of(context).textTheme.bodySmall), - Padding( + child: Row( + children: [ + Text("Starred", style: Theme.of(context).textTheme.bodySmall), + Padding( padding: EdgeInsets.only(left: 8), - child: Icon(Icons.star, size: 16)) - ])) - ])), - NoteList(true, storage.view, starrtedItems, onTap, onLongPress, - highlight: storage.search == "" ? null : storage.search.trim()), + child: Icon(Icons.star, size: 16), + ), + ], + ), + ), + ]), + ), + NoteList( + true, + storage.view, + starrtedItems, + onTap, + onLongPress, + highlight: storage.search == "" ? null : storage.search.trim(), + ), SliverList( - delegate: SliverChildListDelegate([ - Padding( + delegate: SliverChildListDelegate([ + Padding( padding: EdgeInsets.only(left: 16), - child: Text("Other", style: Theme.of(context).textTheme.bodySmall)) - ])), - NoteList(true, storage.view, items, onTap, onLongPress, - highlight: storage.search == "" ? null : storage.search.trim()) + child: Text( + "Other", + style: Theme.of(context).textTheme.bodySmall, + ), + ), + ]), + ), + NoteList( + true, + storage.view, + items, + onTap, + onLongPress, + highlight: storage.search == "" ? null : storage.search.trim(), + ), ]; } else { List items = storage.filteredNotes - .map((n) => - NoteListItemModel(note: n, isSelected: storage.isSelected(n))) + .map( + (n) => + NoteListItemModel(note: n, isSelected: storage.isSelected(n)), + ) .toList(); noteList = [ - NoteList(true, storage.view, items, onTap, onLongPress, - highlight: storage.search == "" ? null : storage.search) + NoteList( + true, + storage.view, + items, + onTap, + onLongPress, + highlight: storage.search == "" ? null : storage.search, + ), ]; } @@ -350,15 +540,14 @@ class HomeContentState extends State ? _sliverNoteSelectionAppBar() : _sliverAppBar(); - return CustomScrollView( - slivers: [appBar]..addAll(noteList), - ); + return CustomScrollView(slivers: [appBar]..addAll(noteList)); } _searchView() { return SearchTextView( - toggleIsSearching: _toggleIsSearching, - onChanged: searchNotes, - controller: _controller); + toggleIsSearching: _toggleIsSearching, + onChanged: searchNotes, + controller: _controller, + ); } } diff --git a/lib/local_storage.dart b/lib/local_storage.dart index c98805b..2ab4f52 100644 --- a/lib/local_storage.dart +++ b/lib/local_storage.dart @@ -5,6 +5,7 @@ import 'dart:io'; import 'package:path/path.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:sqflite/sqflite.dart'; +import 'package:uuid/uuid.dart'; import 'model.dart'; @@ -13,6 +14,9 @@ final String sectionTable = 'sections'; final String audioFileTable = 'audiofiles'; final String collectionTable = 'collections'; final String collectionMappingTable = 'collectionmapping'; +final String syncQueueTable = 'sync_queue'; +final String syncConflictTable = 'sync_conflicts'; +final String syncVersionTable = 'sync_versions'; class LocalStorage { LocalStorage._internal(); @@ -22,6 +26,8 @@ class LocalStorage { StreamController>.broadcast(); final StreamController> _collectionController = StreamController>.broadcast(); + final StreamController _syncStatusController = + StreamController.broadcast(); StreamController> get controller => _controller; StreamController> get collectionController => @@ -30,6 +36,8 @@ class LocalStorage { Stream> get stream => _controller.stream.asBroadcastStream(); Stream> get collectionStream => _collectionController.stream.asBroadcastStream(); + Stream get syncStatusStream => + _syncStatusController.stream.asBroadcastStream(); factory LocalStorage() => _singleton; @@ -38,7 +46,7 @@ class LocalStorage { Future getDatabase() async { return openDatabase( join(await getDatabasesPath(), 'sketchord.db'), - version: 2, + version: 3, onCreate: (db, version) async => createDatabase(db), onUpgrade: (db, oldVersion, newVersion) async => _ensureSchema(db), onOpen: (db) async => _ensureSchema(db), @@ -46,8 +54,7 @@ class LocalStorage { } Future createDatabase(Database db) async { - await db.execute( - '''CREATE TABLE $noteTable( + await db.execute('''CREATE TABLE $noteTable( id TEXT PRIMARY KEY, title TEXT, createdAt TEXT, @@ -65,8 +72,7 @@ class LocalStorage { scrollOffset REAL, starred INTEGER, discarded INTEGER - );''', - ); + );'''); await db.execute( 'CREATE TABLE $sectionTable(id TEXT PRIMARY KEY, noteId TEXT, title TEXT, content TEXT, idx INTEGER);', ); @@ -79,6 +85,35 @@ class LocalStorage { await db.execute( 'CREATE TABLE $collectionMappingTable(noteId TEXT, collectionId TEXT);', ); + await db.execute('''CREATE TABLE $syncQueueTable( + id TEXT PRIMARY KEY, + entityType TEXT, + entityId TEXT, + operation TEXT, + payload TEXT, + baseVersion INTEGER, + createdAt TEXT, + status TEXT, + retryCount INTEGER, + lastError TEXT + );'''); + await db.execute('''CREATE TABLE $syncConflictTable( + id TEXT PRIMARY KEY, + entityType TEXT, + entityId TEXT, + operation TEXT, + reason TEXT, + localPayload TEXT, + remotePayload TEXT, + createdAt TEXT, + resolvedAt TEXT + );'''); + await db.execute('''CREATE TABLE $syncVersionTable( + entityType TEXT, + entityId TEXT, + serverVersion INTEGER, + PRIMARY KEY(entityType, entityId) + );'''); } Future _ensureSchema(Database db) async { @@ -88,6 +123,15 @@ class LocalStorage { await db.execute( 'CREATE TABLE IF NOT EXISTS $collectionMappingTable(noteId TEXT, collectionId TEXT);', ); + await db.execute( + 'CREATE TABLE IF NOT EXISTS $syncQueueTable(id TEXT PRIMARY KEY, entityType TEXT, entityId TEXT, operation TEXT, payload TEXT, baseVersion INTEGER, createdAt TEXT, status TEXT, retryCount INTEGER, lastError TEXT);', + ); + await db.execute( + 'CREATE TABLE IF NOT EXISTS $syncConflictTable(id TEXT PRIMARY KEY, entityType TEXT, entityId TEXT, operation TEXT, reason TEXT, localPayload TEXT, remotePayload TEXT, createdAt TEXT, resolvedAt TEXT);', + ); + await db.execute( + 'CREATE TABLE IF NOT EXISTS $syncVersionTable(entityType TEXT, entityId TEXT, serverVersion INTEGER, PRIMARY KEY(entityType, entityId));', + ); if (!await _hasColumn(db, noteTable, 'length')) { await db.execute('ALTER TABLE $noteTable ADD length REAL;'); @@ -105,7 +149,250 @@ class LocalStorage { return res.any((row) => row['name'] == column); } - Future syncNote(Note note) async { + Future _getEntityBaseVersion( + Database db, + SyncEntityType entityType, + String entityId, + ) async { + final rows = await db.query( + syncVersionTable, + where: 'entityType = ? AND entityId = ?', + whereArgs: [entityType.name, entityId], + limit: 1, + ); + if (rows.isEmpty) return 0; + return (rows.first['serverVersion'] as num?)?.toInt() ?? 0; + } + + Future setEntityServerVersion({ + required SyncEntityType entityType, + required String entityId, + required int serverVersion, + }) async { + final db = await getDatabase(); + await db.insert( + syncVersionTable, + { + 'entityType': entityType.name, + 'entityId': entityId, + 'serverVersion': serverVersion, + }, + conflictAlgorithm: ConflictAlgorithm.replace); + } + + Future enqueueSyncChange({ + required SyncEntityType entityType, + required String entityId, + required SyncOperationType operation, + required Map payload, + }) async { + final db = await getDatabase(); + final now = serializeDateTime(DateTime.now()); + final baseVersion = await _getEntityBaseVersion(db, entityType, entityId); + final existingQueuedUpserts = await db.query( + syncQueueTable, + where: 'entityType = ? AND entityId = ? AND status = ? AND operation = ?', + whereArgs: [ + entityType.name, + entityId, + SyncQueueStatus.queued.name, + SyncOperationType.upsert.name, + ], + orderBy: 'createdAt ASC', + ); + + // Coalesce rapid repeated edits of the same entity into one queued upsert. + if (operation == SyncOperationType.upsert && + existingQueuedUpserts.isNotEmpty) { + final primary = Map.from(existingQueuedUpserts.first); + final primaryId = primary['id'] as String; + await db.update( + syncQueueTable, + { + 'payload': jsonEncode(payload), + 'createdAt': now, + 'lastError': null, + }, + where: 'id = ?', + whereArgs: [primaryId], + ); + for (int i = 1; i < existingQueuedUpserts.length; i++) { + final row = Map.from(existingQueuedUpserts[i]); + await db + .delete(syncQueueTable, where: 'id = ?', whereArgs: [row['id']]); + } + await _notifySyncStatusChanged(); + return; + } + + // A delete supersedes queued upserts for the same entity. + if (operation == SyncOperationType.delete || + operation == SyncOperationType.tombstone) { + for (final row in existingQueuedUpserts) { + await db + .delete(syncQueueTable, where: 'id = ?', whereArgs: [row['id']]); + } + } + + await db.insert( + syncQueueTable, + { + 'id': const Uuid().v4(), + 'entityType': entityType.name, + 'entityId': entityId, + 'operation': operation.name, + 'payload': jsonEncode(payload), + 'baseVersion': baseVersion, + 'createdAt': now, + 'status': SyncQueueStatus.queued.name, + 'retryCount': 0, + 'lastError': null, + }, + conflictAlgorithm: ConflictAlgorithm.replace, + ); + await _notifySyncStatusChanged(); + } + + Future markQueueItemSynced( + String queueId, { + int? newServerVersion, + SyncEntityType? entityType, + String? entityId, + }) async { + final db = await getDatabase(); + await db.delete(syncQueueTable, where: 'id = ?', whereArgs: [queueId]); + if (newServerVersion != null && entityType != null && entityId != null) { + await setEntityServerVersion( + entityType: entityType, + entityId: entityId, + serverVersion: newServerVersion, + ); + } + await _notifySyncStatusChanged(); + } + + Future markQueueItemRejected({ + required String queueId, + required String reason, + Map? remotePayload, + }) async { + final db = await getDatabase(); + final rows = await db.query( + syncQueueTable, + where: 'id = ?', + whereArgs: [queueId], + limit: 1, + ); + if (rows.isEmpty) return; + + final item = SyncQueueItem.fromJson(Map.from(rows.first)); + await db.update( + syncQueueTable, + { + 'status': SyncQueueStatus.rejected.name, + 'retryCount': item.retryCount + 1, + 'lastError': reason, + }, + where: 'id = ?', + whereArgs: [queueId], + ); + await db.insert( + syncConflictTable, + { + 'id': const Uuid().v4(), + 'entityType': item.entityType.name, + 'entityId': item.entityId, + 'operation': item.operation.name, + 'reason': reason, + 'localPayload': item.payload, + 'remotePayload': + remotePayload == null ? null : jsonEncode(remotePayload), + 'createdAt': serializeDateTime(DateTime.now()), + 'resolvedAt': null, + }, + conflictAlgorithm: ConflictAlgorithm.replace); + await _notifySyncStatusChanged(); + } + + Future> getQueuedSyncChanges() async { + final db = await getDatabase(); + final rows = await db.query( + syncQueueTable, + where: 'status = ?', + whereArgs: [SyncQueueStatus.queued.name], + orderBy: 'createdAt ASC', + ); + return rows + .map((row) => SyncQueueItem.fromJson(Map.from(row))) + .toList(); + } + + Future> getSyncConflicts({ + bool unresolvedOnly = true, + }) async { + final db = await getDatabase(); + final rows = await db.query( + syncConflictTable, + where: unresolvedOnly ? 'resolvedAt IS NULL' : null, + orderBy: 'createdAt DESC', + ); + return rows + .map((row) => SyncConflict.fromJson(Map.from(row))) + .toList(); + } + + Future resolveSyncConflict(String conflictId) async { + final db = await getDatabase(); + await db.update( + syncConflictTable, + {'resolvedAt': serializeDateTime(DateTime.now())}, + where: 'id = ?', + whereArgs: [conflictId], + ); + await _notifySyncStatusChanged(); + } + + Future resolveAllSyncConflicts() async { + final db = await getDatabase(); + final count = await db.update( + syncConflictTable, + {'resolvedAt': serializeDateTime(DateTime.now())}, + where: 'resolvedAt IS NULL', + ); + await _notifySyncStatusChanged(); + return count; + } + + Future getSyncStatusSummary() async { + final db = await getDatabase(); + final queued = Sqflite.firstIntValue( + await db.rawQuery( + 'SELECT COUNT(*) FROM $syncQueueTable WHERE status = ?', + [SyncQueueStatus.queued.name], + ), + ); + final conflicts = Sqflite.firstIntValue( + await db.rawQuery( + 'SELECT COUNT(*) FROM $syncConflictTable WHERE resolvedAt IS NULL', + ), + ); + return SyncStatusSummary( + queuedChanges: queued ?? 0, + unresolvedConflicts: conflicts ?? 0, + ); + } + + Future _notifySyncStatusChanged() async { + if (_syncStatusController.isClosed) return; + final summary = await getSyncStatusSummary(); + _syncStatusController.sink.add(summary); + } + + Future syncNote( + Note note, { + bool enqueueChange = true, + bool touchLastModified = true, + }) async { final db = await getDatabase(); await db.delete(sectionTable, where: 'noteId = ?', whereArgs: [note.id]); @@ -113,8 +400,11 @@ class LocalStorage { final sectionData = note.sections[i].toJson(); sectionData['idx'] = i; sectionData['noteId'] = note.id; - await db.insert(sectionTable, sectionData, - conflictAlgorithm: ConflictAlgorithm.replace); + await db.insert( + sectionTable, + sectionData, + conflictAlgorithm: ConflictAlgorithm.replace, + ); } await db.delete(audioFileTable, where: 'noteId = ?', whereArgs: [note.id]); @@ -122,66 +412,134 @@ class LocalStorage { final audioFileData = note.audioFiles[i].toJson(); audioFileData['idx'] = i; audioFileData['noteId'] = note.id; - await db.insert(audioFileTable, audioFileData, - conflictAlgorithm: ConflictAlgorithm.replace); + await db.insert( + audioFileTable, + audioFileData, + conflictAlgorithm: ConflictAlgorithm.replace, + ); } - note.lastModified = DateTime.now(); - final data = note.toJson()..remove('sections')..remove('audioFiles'); - final row = await db.insert(noteTable, data, - conflictAlgorithm: ConflictAlgorithm.replace); + if (touchLastModified) { + note.lastModified = DateTime.now(); + } + final data = note.toJson() + ..remove('sections') + ..remove('audioFiles'); + final row = await db.insert( + noteTable, + data, + conflictAlgorithm: ConflictAlgorithm.replace, + ); + if (enqueueChange) { + await enqueueSyncChange( + entityType: SyncEntityType.note, + entityId: note.id, + operation: SyncOperationType.upsert, + payload: note.toJson(), + ); + } _controller.sink.add(await getNotes()); return row; } - Future addAudioIdea(AudioFile f) async { + Future addAudioIdea( + AudioFile f, { + bool enqueueChange = true, + }) async { final db = await getDatabase(); final data = f.toJson(); data.remove('noteId'); data.remove('idx'); - return db.insert(audioFileTable, data, - conflictAlgorithm: ConflictAlgorithm.replace); + final row = await db.insert( + audioFileTable, + data, + conflictAlgorithm: ConflictAlgorithm.replace, + ); + if (enqueueChange) { + await enqueueSyncChange( + entityType: SyncEntityType.audioIdea, + entityId: f.id, + operation: SyncOperationType.upsert, + payload: f.toJson(), + ); + } + return row; } - Future syncAudioFile(AudioFile f) async { + Future syncAudioFile( + AudioFile f, { + bool enqueueChange = true, + }) async { final db = await getDatabase(); - return db.update(audioFileTable, f.toJson(), - where: 'id = ?', - whereArgs: [f.id], - conflictAlgorithm: ConflictAlgorithm.replace); + int row = await db.update( + audioFileTable, + f.toJson(), + where: 'id = ?', + whereArgs: [f.id], + conflictAlgorithm: ConflictAlgorithm.replace, + ); + if (row == 0) { + row = await db.insert( + audioFileTable, + f.toJson(), + conflictAlgorithm: ConflictAlgorithm.replace, + ); + } + if (enqueueChange) { + await enqueueSyncChange( + entityType: SyncEntityType.audioFile, + entityId: f.id, + operation: SyncOperationType.upsert, + payload: f.toJson(), + ); + } + return row; } Future> getSections(String noteId) async { - var maps = await (await getDatabase()) - .query(sectionTable, where: 'noteId = ?', whereArgs: [noteId]); + var maps = await (await getDatabase()).query( + sectionTable, + where: 'noteId = ?', + whereArgs: [noteId], + ); maps = maps.map((m) => Map.from(m)).toList(); maps.sort((s1, s2) => (s1['idx'] as int) - (s2['idx'] as int)); return maps.map((s) => Section.fromJson(s)).toList(); } Future> getAudioFiles(String noteId) async { - var maps = await (await getDatabase()) - .query(audioFileTable, where: 'noteId = ?', whereArgs: [noteId]); + var maps = await (await getDatabase()).query( + audioFileTable, + where: 'noteId = ?', + whereArgs: [noteId], + ); maps = maps.map((m) => Map.from(m)).toList(); maps.sort((s1, s2) => (s1['idx'] as int) - (s2['idx'] as int)); return maps.map((s) => AudioFile.fromJson(s)).toList(); } Future> getAudioIdeas({bool descending = true}) async { - var maps = - await (await getDatabase()).query(audioFileTable, where: 'noteId IS NULL'); + var maps = await (await getDatabase()).query( + audioFileTable, + where: 'noteId IS NULL', + ); maps = maps.map((m) => Map.from(m)).toList(); final files = maps.map((s) => AudioFile.fromJson(s)).toList(); - files.sort((a, b) => descending - ? b.createdAt.compareTo(a.createdAt) - : a.createdAt.compareTo(b.createdAt)); + files.sort( + (a, b) => descending + ? b.createdAt.compareTo(a.createdAt) + : a.createdAt.compareTo(b.createdAt), + ); return files; } Future getNoteById(String id) async { - final maps = - await (await getDatabase()).query(noteTable, where: 'id = ?', whereArgs: [id]); + final maps = await (await getDatabase()).query( + noteTable, + where: 'id = ?', + whereArgs: [id], + ); if (maps.isEmpty) return null; return getNote(Map.from(maps.first)); } @@ -207,52 +565,82 @@ class LocalStorage { final maps = await (await getDatabase()).query(collectionTable); final collections = []; for (final map in maps) { - final collection = NoteCollection.fromJson(Map.from(map)); + final collection = NoteCollection.fromJson( + Map.from(map), + ); collection.notes = await getNotesByCollectionId(collection.id); collections.add(collection); } return collections; } - Future syncCollection(NoteCollection collection) async { + Future syncCollection( + NoteCollection collection, { + bool enqueueChange = true, + bool touchLastModified = true, + }) async { final db = await getDatabase(); - collection.lastModified = DateTime.now(); + if (touchLastModified) { + collection.lastModified = DateTime.now(); + } final data = collection.toJson()..remove('notes'); - await db.insert(collectionTable, data, - conflictAlgorithm: ConflictAlgorithm.replace); + await db.insert( + collectionTable, + data, + conflictAlgorithm: ConflictAlgorithm.replace, + ); final existingNoteIds = await _getNoteIdsByCollectionId(collection.id, db); for (final note in collection.notes) { if (!existingNoteIds.contains(note.id)) { await db.insert( - collectionMappingTable, - {'noteId': note.id, 'collectionId': collection.id}, - conflictAlgorithm: ConflictAlgorithm.replace, - ); + collectionMappingTable, + { + 'noteId': note.id, + 'collectionId': collection.id, + }, + conflictAlgorithm: ConflictAlgorithm.replace); } else { existingNoteIds.remove(note.id); } } for (final noteId in existingNoteIds) { - await db.delete(collectionMappingTable, - where: 'collectionId = ? AND noteId = ?', - whereArgs: [collection.id, noteId]); + await db.delete( + collectionMappingTable, + where: 'collectionId = ? AND noteId = ?', + whereArgs: [collection.id, noteId], + ); + } + + if (enqueueChange) { + await enqueueSyncChange( + entityType: SyncEntityType.collection, + entityId: collection.id, + operation: SyncOperationType.upsert, + payload: collection.toJson(), + ); } _collectionController.sink.add(await getCollections()); } Future getNumCollectionsByNoteId(String noteId) async { - final maps = await (await getDatabase()).query(collectionMappingTable, - where: 'noteId = ?', whereArgs: [noteId]); + final maps = await (await getDatabase()).query( + collectionMappingTable, + where: 'noteId = ?', + whereArgs: [noteId], + ); return maps.length; } Future> getNotesByCollectionId(String collectionId) async { - final maps = await (await getDatabase()).query(collectionMappingTable, - where: 'collectionId = ?', whereArgs: [collectionId]); + final maps = await (await getDatabase()).query( + collectionMappingTable, + where: 'collectionId = ?', + whereArgs: [collectionId], + ); final notes = []; for (final map in maps) { final noteId = map['noteId'] as String?; @@ -264,63 +652,128 @@ class LocalStorage { } Future> _getNoteIdsByCollectionId( - String collectionId, Database db) async { - final maps = await db.query(collectionMappingTable, - where: 'collectionId = ?', whereArgs: [collectionId]); + String collectionId, + Database db, + ) async { + final maps = await db.query( + collectionMappingTable, + where: 'collectionId = ?', + whereArgs: [collectionId], + ); return maps .map((row) => row['noteId']) .whereType() .toList(growable: true); } - Future _deleteAudioFile(AudioFile audioFile) async { + Future _deleteAudioFile( + AudioFile audioFile, { + bool enqueueChange = true, + }) async { final db = await getDatabase(); await db.delete(audioFileTable, where: 'id = ?', whereArgs: [audioFile.id]); + if (enqueueChange) { + await enqueueSyncChange( + entityType: SyncEntityType.audioIdea, + entityId: audioFile.id, + operation: SyncOperationType.delete, + payload: {'id': audioFile.id}, + ); + } if (audioFile.file.existsSync()) { await audioFile.file.delete(); } return !audioFile.file.existsSync(); } - Future deleteAudioIdea(AudioFile audioFile) => _deleteAudioFile(audioFile); + Future deleteAudioIdea( + AudioFile audioFile, { + bool enqueueChange = true, + }) => + _deleteAudioFile(audioFile, enqueueChange: enqueueChange); - Future deleteNote(Note note) async { + Future deleteNote( + Note note, { + bool enqueueChange = true, + }) async { final db = await getDatabase(); await db.delete(noteTable, where: 'id = ?', whereArgs: [note.id]); - await db.delete(collectionMappingTable, where: 'noteId = ?', whereArgs: [note.id]); + await db.delete( + collectionMappingTable, + where: 'noteId = ?', + whereArgs: [note.id], + ); for (final f in note.audioFiles) { - await _deleteAudioFile(f); + await _deleteAudioFile(f, enqueueChange: false); + } + if (enqueueChange) { + await enqueueSyncChange( + entityType: SyncEntityType.note, + entityId: note.id, + operation: SyncOperationType.delete, + payload: {'id': note.id}, + ); } _controller.sink.add(await getNotes()); } - Future deleteCollection(NoteCollection collection) async { + Future deleteCollection( + NoteCollection collection, { + bool enqueueChange = true, + }) async { final db = await getDatabase(); - await db.delete(collectionTable, where: 'id = ?', whereArgs: [collection.id]); - await db.delete(collectionMappingTable, - where: 'collectionId = ?', whereArgs: [collection.id]); + await db.delete( + collectionTable, + where: 'id = ?', + whereArgs: [collection.id], + ); + await db.delete( + collectionMappingTable, + where: 'collectionId = ?', + whereArgs: [collection.id], + ); + if (enqueueChange) { + await enqueueSyncChange( + entityType: SyncEntityType.collection, + entityId: collection.id, + operation: SyncOperationType.delete, + payload: {'id': collection.id}, + ); + } _collectionController.sink.add(await getCollections()); } - Future _updateTable(String table, Map data, - {String where = 'id = ?'}) async { + Future _updateTable( + String table, + Map data, { + String where = 'id = ?', + }) async { final db = await getDatabase(); return db.update(table, data, where: where, whereArgs: [data['id']]); } - Future discardNote(Note note, {bool removeFromCollection = false}) async { + Future discardNote( + Note note, { + bool removeFromCollection = false, + }) async { note.discarded = true; await _updateNote(note); if (removeFromCollection) { final db = await getDatabase(); - await db.delete(collectionMappingTable, where: 'noteId = ?', whereArgs: [note.id]); + await db.delete( + collectionMappingTable, + where: 'noteId = ?', + whereArgs: [note.id], + ); } } Future _updateNote(Note note) async { note.lastModified = DateTime.now(); - final data = note.toJson()..remove('sections')..remove('audioFiles'); + final data = note.toJson() + ..remove('sections') + ..remove('audioFiles'); await _updateTable(noteTable, data); _controller.sink.add(await getNotes()); } @@ -354,9 +807,143 @@ class LocalStorage { return (await getNotes()).where((n) => n.discarded).toList(); } - Future syncSettings(Settings settings) async { + Future syncSettings( + Settings settings, { + bool enqueueChange = true, + }) async { final prefs = await SharedPreferences.getInstance(); - return prefs.setString('settings', jsonEncode(settings.toJson())); + final synced = await prefs.setString( + 'settings', + jsonEncode(settings.toJson()), + ); + if (synced && enqueueChange) { + await enqueueSyncChange( + entityType: SyncEntityType.settings, + entityId: 'settings', + operation: SyncOperationType.upsert, + payload: settings.toJson(), + ); + } + return synced; + } + + Future getSyncBackendUrl() async { + final prefs = await SharedPreferences.getInstance(); + return prefs.getString('syncBackendUrl') ?? 'http://192.168.178.52:8009'; + } + + Future setSyncBackendUrl(String url) async { + final prefs = await SharedPreferences.getInstance(); + await prefs.setString('syncBackendUrl', url); + } + + Future getSyncEnabled() async { + final prefs = await SharedPreferences.getInstance(); + return prefs.getBool('syncEnabled') ?? true; + } + + Future setSyncEnabled(bool enabled) async { + final prefs = await SharedPreferences.getInstance(); + await prefs.setBool('syncEnabled', enabled); + } + + Future getSyncPullCursor() async { + final prefs = await SharedPreferences.getInstance(); + return prefs.getInt('syncPullCursor') ?? 0; + } + + Future setSyncPullCursor(int seq) async { + final prefs = await SharedPreferences.getInstance(); + await prefs.setInt('syncPullCursor', seq); + } + + Future applyRemoteChange({ + required SyncEntityType entityType, + required String entityId, + required SyncOperationType operation, + required Map payload, + required int serverVersion, + }) async { + if (entityType == SyncEntityType.note) { + if (operation == SyncOperationType.delete || + operation == SyncOperationType.tombstone) { + final note = await getNoteById(entityId); + if (note != null) { + await deleteNote(note, enqueueChange: false); + } + } else { + final note = Note.fromJson(payload, entityId); + await syncNote(note, enqueueChange: false, touchLastModified: false); + } + await setEntityServerVersion( + entityType: entityType, + entityId: entityId, + serverVersion: serverVersion, + ); + return; + } + + if (entityType == SyncEntityType.collection) { + if (operation == SyncOperationType.delete || + operation == SyncOperationType.tombstone) { + NoteCollection? collection; + for (final c in await getCollections()) { + if (c.id == entityId) { + collection = c; + break; + } + } + if (collection != null) { + await deleteCollection(collection, enqueueChange: false); + } + } else { + final collection = NoteCollection.fromJson(payload); + await syncCollection( + collection, + enqueueChange: false, + touchLastModified: false, + ); + } + await setEntityServerVersion( + entityType: entityType, + entityId: entityId, + serverVersion: serverVersion, + ); + return; + } + + if (entityType == SyncEntityType.settings && + operation == SyncOperationType.upsert) { + final settings = Settings.fromJson(payload); + await syncSettings(settings, enqueueChange: false); + await setEntityServerVersion( + entityType: entityType, + entityId: entityId, + serverVersion: serverVersion, + ); + return; + } + + if (entityType == SyncEntityType.audioIdea || + entityType == SyncEntityType.audioFile) { + if (operation == SyncOperationType.delete || + operation == SyncOperationType.tombstone) { + final db = await getDatabase(); + await db.delete(audioFileTable, where: 'id = ?', whereArgs: [entityId]); + } else { + final f = AudioFile.fromJson(payload); + final updated = await syncAudioFile(f, enqueueChange: false); + if (updated == 0) { + await addAudioIdea(f, enqueueChange: false); + } + } + await setEntityServerVersion( + entityType: entityType, + entityId: entityId, + serverVersion: serverVersion, + ); + return; + } } Future getSettings() async { @@ -364,9 +951,10 @@ class LocalStorage { final data = prefs.getString('settings'); if (data == null || data.isEmpty) { return Settings( - theme: SettingsTheme.dark, - view: EditorView.single, - audioFormat: AudioFormat.wav); + theme: SettingsTheme.dark, + view: EditorView.single, + audioFormat: AudioFormat.wav, + ); } return Settings.fromJson(jsonDecode(data)); } diff --git a/lib/main.dart b/lib/main.dart index 509ac09..1652767 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,4 +1,3 @@ - import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:sound/editor_store.dart'; @@ -7,6 +6,9 @@ import 'package:sound/menu.dart'; import 'package:sound/model.dart'; import 'package:sound/recorder_store.dart'; import 'package:sound/storage.dart'; +import 'package:sound/sync_debug_store.dart'; +import 'package:sound/sync_engine.dart'; +import 'package:sound/sync_status_store.dart'; import 'settings_store.dart'; void main() { @@ -22,20 +24,21 @@ class App extends StatefulWidget { // This widget is the root of your application. final ThemeData dark = ThemeData.dark().copyWith( - primaryColor: mainColor, - textSelectionTheme: ThemeData().textSelectionTheme.copyWith( + primaryColor: mainColor, + textSelectionTheme: ThemeData().textSelectionTheme.copyWith( selectionColor: mainColor, cursorColor: mainColor, - selectionHandleColor: mainColor), - highlightColor: Colors.black54, - cardColor: Colors.grey.shade800, - appBarTheme: ThemeData.dark() - .appBarTheme - .copyWith(backgroundColor: appBarColor, titleTextStyle: ThemeData.dark().textTheme.titleLarge), - buttonTheme: - ThemeData.dark().buttonTheme.copyWith(buttonColor: mainColor), - chipTheme: ThemeData.dark().chipTheme.copyWith(selectedColor: mainColor), - sliderTheme: ThemeData.dark().sliderTheme.copyWith( + selectionHandleColor: mainColor, + ), + highlightColor: Colors.black54, + cardColor: Colors.grey.shade800, + appBarTheme: ThemeData.dark().appBarTheme.copyWith( + backgroundColor: appBarColor, + titleTextStyle: ThemeData.dark().textTheme.titleLarge, + ), + buttonTheme: ThemeData.dark().buttonTheme.copyWith(buttonColor: mainColor), + chipTheme: ThemeData.dark().chipTheme.copyWith(selectedColor: mainColor), + sliderTheme: ThemeData.dark().sliderTheme.copyWith( trackHeight: 5, showValueIndicator: ShowValueIndicator.onDrag, activeTrackColor: mainColor, @@ -45,24 +48,30 @@ class App extends StatefulWidget { valueIndicatorTextStyle: ThemeData.dark().textTheme.bodyMedium, //overlayColor: mainColor - inactiveTrackColor: Colors.white), - visualDensity: VisualDensity.adaptivePlatformDensity, - floatingActionButtonTheme: - FloatingActionButtonThemeData(backgroundColor: mainColor), tabBarTheme: TabBarThemeData(indicatorColor: mainColor)); + inactiveTrackColor: Colors.white, + ), + visualDensity: VisualDensity.adaptivePlatformDensity, + floatingActionButtonTheme: FloatingActionButtonThemeData( + backgroundColor: mainColor, + ), + tabBarTheme: TabBarThemeData(indicatorColor: mainColor), + ); final ThemeData light = ThemeData.light().copyWith( - primaryColor: mainColor, - textSelectionTheme: ThemeData().textSelectionTheme.copyWith( + primaryColor: mainColor, + textSelectionTheme: ThemeData().textSelectionTheme.copyWith( selectionColor: mainColor, cursorColor: mainColor, - selectionHandleColor: mainColor), - cardColor: Colors.grey.shade200, - appBarTheme: ThemeData.light().appBarTheme.copyWith( + selectionHandleColor: mainColor, + ), + cardColor: Colors.grey.shade200, + appBarTheme: ThemeData.light().appBarTheme.copyWith( backgroundColor: appBarColor, - titleTextStyle: ThemeData.light().textTheme.titleLarge), - chipTheme: ThemeData.light().chipTheme.copyWith(selectedColor: mainColor), - highlightColor: mainColor, - sliderTheme: ThemeData.light().sliderTheme.copyWith( + titleTextStyle: ThemeData.light().textTheme.titleLarge, + ), + chipTheme: ThemeData.light().chipTheme.copyWith(selectedColor: mainColor), + highlightColor: mainColor, + sliderTheme: ThemeData.light().sliderTheme.copyWith( trackHeight: 4, thumbColor: mainColor, showValueIndicator: ShowValueIndicator.onDrag, @@ -71,17 +80,20 @@ class App extends StatefulWidget { valueIndicatorColor: mainColor, activeTickMarkColor: mainColor, activeTrackColor: mainColor, // inactive loop area - inactiveTrackColor: appBarColor), - visualDensity: VisualDensity.adaptivePlatformDensity, - floatingActionButtonTheme: - FloatingActionButtonThemeData(backgroundColor: mainColor), tabBarTheme: TabBarThemeData(indicatorColor: mainColor)); + inactiveTrackColor: appBarColor, + ), + visualDensity: VisualDensity.adaptivePlatformDensity, + floatingActionButtonTheme: FloatingActionButtonThemeData( + backgroundColor: mainColor, + ), + tabBarTheme: TabBarThemeData(indicatorColor: mainColor), + ); @override State createState() => AppState(); } class AppState extends State { - @override void initState() { super.initState(); @@ -89,6 +101,8 @@ class AppState extends State { LocalStorage().getSettings().then((s) { updateSettings(s); }); + syncStatusStore.start(); + syncEngine.start(); // _intentDataStreamSubscription = ReceiveSharingIntent.getMediaStream() // .listen((List value) { @@ -112,6 +126,12 @@ class AppState extends State { // }); } + @override + void dispose() { + syncEngine.stop(); + super.dispose(); + } + @override Widget build(BuildContext context) { return MultiProvider( @@ -120,17 +140,21 @@ class AppState extends State { ChangeNotifierProvider.value(value: storageStore), ChangeNotifierProvider.value(value: noteEditorStore), ChangeNotifierProvider.value( - value: recorderBottomSheetStore), + value: recorderBottomSheetStore, + ), ChangeNotifierProvider.value( - value: playerPositionStore), + value: playerPositionStore, + ), ChangeNotifierProvider.value( - value: recorderPositionStore), + value: recorderPositionStore, + ), + ChangeNotifierProvider.value(value: syncStatusStore), + ChangeNotifierProvider.value(value: syncDebugStore), ], child: Consumer( builder: (context, store, _) => MaterialApp( title: 'SketChord', - theme: - store.theme == SettingsTheme.dark ? widget.dark : widget.light, + theme: store.theme == SettingsTheme.dark ? widget.dark : widget.light, home: Menu(), ), ), diff --git a/lib/model.dart b/lib/model.dart index eb28567..9e3bf74 100644 --- a/lib/model.dart +++ b/lib/model.dart @@ -46,19 +46,20 @@ class AudioFile { String? text, bool? starred, this.loopRange, - }) : id = id ?? const Uuid().v4(), - createdAt = createdAt ?? DateTime.now(), - lastModified = lastModified ?? DateTime.now(), - text = text ?? '', - starred = starred ?? false, - name = name ?? - path - .split('/') - .last - .replaceAll('.mp4', '') - .replaceAll('.m4a', '') - .replaceAll('.mp3', '') - .replaceAll('.wav', ''); + }) : id = id ?? const Uuid().v4(), + createdAt = createdAt ?? DateTime.now(), + lastModified = lastModified ?? DateTime.now(), + text = text ?? '', + starred = starred ?? false, + name = + name ?? + path + .split('/') + .last + .replaceAll('.mp4', '') + .replaceAll('.m4a', '') + .replaceAll('.mp3', '') + .replaceAll('.wav', ''); factory AudioFile.create({ required String path, @@ -83,7 +84,9 @@ class AudioFile { factory AudioFile.fromJson(Map map) { return AudioFile( createdAt: deserializeDateTime(map['createdAt']), - lastModified: deserializeDateTime(map['lastModified'] ?? map['createdAt']), + lastModified: deserializeDateTime( + map['lastModified'] ?? map['createdAt'], + ), duration: deserializeDuration(map['duration']), loopRange: deserializeRangeValues(map['loopRange']), id: map['id'], @@ -124,25 +127,22 @@ class Section { DateTime lastModified; DateTime createdAt; - Section({ - String? title, - String? content, - String? id, - }) : title = title ?? '', - content = content ?? '', - id = id ?? const Uuid().v4(), - lastModified = DateTime.now(), - createdAt = DateTime.now(); + Section({String? title, String? content, String? id}) + : title = title ?? '', + content = content ?? '', + id = id ?? const Uuid().v4(), + lastModified = DateTime.now(), + createdAt = DateTime.now(); factory Section.fromJson(Map map) { - return Section( - content: map['content'], - title: map['title'], - id: map['id'], - ); + return Section(content: map['content'], title: map['title'], id: map['id']); } - Map toJson() => {'title': title, 'content': content, 'id': id}; + Map toJson() => { + 'title': title, + 'content': content, + 'id': id, + }; bool get hasEmptyTitle => title.trim().isEmpty; @@ -237,12 +237,12 @@ class Note { this.scrollOffset = 1.0, this.starred = false, this.discarded = false, - }) : id = id ?? const Uuid().v4(), - title = title ?? '', - createdAt = createdAt ?? DateTime.now(), - lastModified = lastModified ?? DateTime.now(), - sections = sections ?? [], - audioFiles = audioFiles ?? []; + }) : id = id ?? const Uuid().v4(), + title = title ?? '', + createdAt = createdAt ?? DateTime.now(), + lastModified = lastModified ?? DateTime.now(), + sections = sections ?? [], + audioFiles = audioFiles ?? []; Map toJson() { return { @@ -292,8 +292,9 @@ class Note { sections: sectionsRaw == null ? [] : sectionsRaw.map((s) => Section.fromJson(s)).toList(), - audioFiles: - audioRaw == null ? [] : audioRaw.map((s) => AudioFile.fromJson(s)).toList(), + audioFiles: audioRaw == null + ? [] + : audioRaw.map((s) => AudioFile.fromJson(s)).toList(), ); } @@ -338,13 +339,13 @@ class NoteCollection { bool? starred, DateTime? createdAt, DateTime? lastModified, - }) : id = id ?? const Uuid().v4(), - notes = notes ?? [], - title = title ?? '', - description = description ?? '', - starred = starred ?? false, - createdAt = createdAt ?? DateTime.now(), - lastModified = lastModified ?? DateTime.now(); + }) : id = id ?? const Uuid().v4(), + notes = notes ?? [], + title = title ?? '', + description = description ?? '', + starred = starred ?? false, + createdAt = createdAt ?? DateTime.now(), + lastModified = lastModified ?? DateTime.now(); factory NoteCollection.empty() => NoteCollection(); @@ -355,9 +356,13 @@ class NoteCollection { notes: rawNotes == null ? [] : rawNotes - .map((n) => Note.fromJson( - Map.from(n), (n['id'] ?? '') as String)) - .toList(), + .map( + (n) => Note.fromJson( + Map.from(n), + (n['id'] ?? '') as String, + ), + ) + .toList(), title: json['title'] ?? '', description: json['description'] ?? '', starred: (json['starred'] ?? 0) == 1 || json['starred'] == true, @@ -378,7 +383,8 @@ class NoteCollection { }; } - List get activeNotes => notes.where((element) => !element.discarded).toList(); + List get activeNotes => + notes.where((element) => !element.discarded).toList(); int get length => notes.fold(0, (p, e) => p + (e.length ?? 0)); @@ -390,11 +396,145 @@ class NoteCollection { return '$hours:${minutes.toString().padLeft(2, '0')}:${seconds.toString().padLeft(2, '0')}'; } - bool get empty => title.trim().isEmpty && description.trim().isEmpty && notes.isEmpty; + bool get empty => + title.trim().isEmpty && description.trim().isEmpty && notes.isEmpty; +} + +enum SyncEntityType { note, audioIdea, audioFile, collection, settings } + +enum SyncOperationType { upsert, delete, tombstone } + +enum SyncQueueStatus { queued, syncing, rejected, synced } + +SyncEntityType deserializeSyncEntityType(String raw) { + return SyncEntityType.values.firstWhere( + (e) => e.name == raw, + orElse: () => SyncEntityType.note, + ); +} + +SyncOperationType deserializeSyncOperationType(String raw) { + return SyncOperationType.values.firstWhere( + (e) => e.name == raw, + orElse: () => SyncOperationType.upsert, + ); +} + +SyncQueueStatus deserializeSyncQueueStatus(String raw) { + return SyncQueueStatus.values.firstWhere( + (e) => e.name == raw, + orElse: () => SyncQueueStatus.queued, + ); +} + +class SyncQueueItem { + String id; + SyncEntityType entityType; + String entityId; + SyncOperationType operation; + String payload; + int baseVersion; + DateTime createdAt; + SyncQueueStatus status; + int retryCount; + String? lastError; + + SyncQueueItem({ + required this.id, + required this.entityType, + required this.entityId, + required this.operation, + required this.payload, + required this.baseVersion, + required this.createdAt, + required this.status, + required this.retryCount, + this.lastError, + }); + + factory SyncQueueItem.fromJson(Map json) { + return SyncQueueItem( + id: json['id'] as String, + entityType: deserializeSyncEntityType( + (json['entityType'] ?? '').toString(), + ), + entityId: (json['entityId'] ?? '') as String, + operation: deserializeSyncOperationType( + (json['operation'] ?? '').toString(), + ), + payload: (json['payload'] ?? '{}') as String, + baseVersion: (json['baseVersion'] as num?)?.toInt() ?? 0, + createdAt: deserializeDateTime(json['createdAt'] as String?), + status: deserializeSyncQueueStatus((json['status'] ?? '').toString()), + retryCount: (json['retryCount'] as num?)?.toInt() ?? 0, + lastError: json['lastError'] as String?, + ); + } +} + +class SyncConflict { + String id; + SyncEntityType entityType; + String entityId; + SyncOperationType operation; + String reason; + String localPayload; + String? remotePayload; + DateTime createdAt; + DateTime? resolvedAt; + + SyncConflict({ + required this.id, + required this.entityType, + required this.entityId, + required this.operation, + required this.reason, + required this.localPayload, + required this.remotePayload, + required this.createdAt, + this.resolvedAt, + }); + + bool get isResolved => resolvedAt != null; + + factory SyncConflict.fromJson(Map json) { + final resolvedAt = json['resolvedAt'] as String?; + return SyncConflict( + id: json['id'] as String, + entityType: deserializeSyncEntityType( + (json['entityType'] ?? '').toString(), + ), + entityId: (json['entityId'] ?? '') as String, + operation: deserializeSyncOperationType( + (json['operation'] ?? '').toString(), + ), + reason: (json['reason'] ?? 'Conflict rejected by backend') as String, + localPayload: (json['localPayload'] ?? '{}') as String, + remotePayload: json['remotePayload'] as String?, + createdAt: deserializeDateTime(json['createdAt'] as String?), + resolvedAt: (resolvedAt == null || resolvedAt.isEmpty) + ? null + : deserializeDateTime(resolvedAt), + ); + } +} + +class SyncStatusSummary { + final int queuedChanges; + final int unresolvedConflicts; + + const SyncStatusSummary({ + required this.queuedChanges, + required this.unresolvedConflicts, + }); + + bool get isFullySynced => queuedChanges == 0 && unresolvedConflicts == 0; } enum SettingsTheme { dark, light } + enum EditorView { single, double } + enum AudioFormat { aac, wav } class Settings { @@ -428,7 +568,9 @@ class Settings { view: json['view'] == 'single' ? EditorView.single : EditorView.double, name: json['name'], isInitialStart: json['isInitialStart'] ?? false, - audioFormat: json['audioFormat'] == 'aac' ? AudioFormat.aac : AudioFormat.wav, + audioFormat: json['audioFormat'] == 'aac' + ? AudioFormat.aac + : AudioFormat.wav, ); } } diff --git a/lib/settings.dart b/lib/settings.dart index fbd9427..a16597c 100644 --- a/lib/settings.dart +++ b/lib/settings.dart @@ -10,6 +10,8 @@ import 'local_storage.dart'; import 'model.dart'; import 'recorder_store.dart'; import 'settings_store.dart'; +import 'sync_debug_panel.dart'; +import 'sync_network.dart'; import 'utils.dart'; class Settings extends StatefulWidget { @@ -22,6 +24,24 @@ class Settings extends StatefulWidget { class SettingsState extends State { final GlobalKey _globalKey = GlobalKey(); + bool _syncEnabled = true; + String _syncBackendUrl = 'http://192.168.178.52:8009'; + + @override + void initState() { + super.initState(); + _loadSyncConfig(); + } + + Future _loadSyncConfig() async { + final enabled = await LocalStorage().getSyncEnabled(); + final backendUrl = await LocalStorage().getSyncBackendUrl(); + if (!mounted) return; + setState(() { + _syncEnabled = enabled; + _syncBackendUrl = backendUrl; + }); + } String _themeAsString(SettingsStore store) => store.theme == SettingsTheme.dark ? 'Dark' : 'Light'; @@ -37,8 +57,9 @@ class SettingsState extends State { store.audioFormat == AudioFormat.aac ? 'AAC' : 'WAV'; Future _toggleAudioFormat(SettingsStore store) async { - final newAudioFormat = - store.audioFormat == AudioFormat.aac ? AudioFormat.wav : AudioFormat.aac; + final newAudioFormat = store.audioFormat == AudioFormat.aac + ? AudioFormat.wav + : AudioFormat.aac; await setDefaultAudioFormat(newAudioFormat); setAudioFormat(newAudioFormat); } @@ -107,6 +128,63 @@ class SettingsState extends State { } } + Future _showBackendUrlDialog() async { + final controller = TextEditingController(text: _syncBackendUrl); + await showDialog( + context: context, + builder: (BuildContext context) { + return AlertDialog( + title: const Text('Sync Backend URL'), + content: TextField( + autofocus: true, + maxLines: 1, + minLines: 1, + controller: controller, + decoration: const InputDecoration( + hintText: 'http://127.0.0.1:8009', + ), + ), + actions: [ + TextButton( + child: const Text('Cancel'), + onPressed: () => Navigator.of(context).pop(), + ), + TextButton( + child: const Text('Apply'), + onPressed: () async { + final next = controller.text.trim(); + if (next.isNotEmpty) { + await LocalStorage().setSyncBackendUrl(next); + if (mounted) { + setState(() { + _syncBackendUrl = next; + }); + } + } + if (mounted) Navigator.of(context).pop(); + }, + ), + ], + ); + }, + ); + } + + Future _setLanBackendUrl() async { + final ip = await SyncNetwork.firstPrivateIpv4(); + if (ip == null) { + showSnack(_globalKey.currentState, 'No private IPv4 interface found'); + return; + } + final url = 'http://$ip:8009'; + await LocalStorage().setSyncBackendUrl(url); + if (!mounted) return; + setState(() { + _syncBackendUrl = url; + }); + showSnack(_globalKey.currentState, 'Sync backend set to $url'); + } + Widget _list(SettingsStore store) { final items = [ _wrapItem(Row( @@ -138,6 +216,69 @@ class SettingsState extends State { ), ], )), + _wrapItem(Row( + children: [ + const Expanded(child: Text('Sync Enabled:')), + Switch( + value: _syncEnabled, + onChanged: (v) async { + await LocalStorage().setSyncEnabled(v); + if (!mounted) return; + setState(() { + _syncEnabled = v; + }); + }, + ), + ], + )), + _wrapItem(Row( + children: [ + const Expanded(child: Text('Sync Backend:')), + Flexible( + child: ElevatedButton( + onPressed: _showBackendUrlDialog, + child: Align( + alignment: Alignment.centerRight, + child: Text( + _syncBackendUrl, + overflow: TextOverflow.ellipsis, + maxLines: 1, + textAlign: TextAlign.right, + ), + ), + ), + ), + ], + )), + _wrapItem( + Row( + children: [ + const Expanded(child: Text('Use LAN URL:')), + ElevatedButton( + onPressed: _setLanBackendUrl, + child: const Text('Auto-detect'), + ), + ], + ), + ), + _wrapItem( + Row( + children: [ + const Expanded(child: Text('Sync Debug:')), + ElevatedButton( + onPressed: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (_) => const SyncDebugPanel(), + ), + ); + }, + child: const Text('Open Panel'), + ), + ], + ), + ), const SizedBox(height: 10), ElevatedButton(onPressed: _onExport, child: const Text('Backup')), const SizedBox(height: 10), diff --git a/lib/sync_conflicts_page.dart b/lib/sync_conflicts_page.dart new file mode 100644 index 0000000..50b896e --- /dev/null +++ b/lib/sync_conflicts_page.dart @@ -0,0 +1,135 @@ +import 'dart:convert'; + +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; + +import 'model.dart'; +import 'sync_status_store.dart'; + +class SyncConflictsPage extends StatefulWidget { + const SyncConflictsPage({super.key}); + + @override + State createState() => _SyncConflictsPageState(); +} + +class _SyncConflictsPageState extends State { + @override + void initState() { + super.initState(); + syncStatusStore.refresh(); + } + + String _prettyJson(String rawJson) { + try { + final decoded = jsonDecode(rawJson); + return const JsonEncoder.withIndent(' ').convert(decoded); + } catch (_) { + return rawJson; + } + } + + Widget _statusHeader(SyncStatusStore store) { + final queueText = store.queuedChanges == 1 + ? '1 queued change' + : '${store.queuedChanges} queued changes'; + final conflictText = store.unresolvedConflicts == 1 + ? '1 unresolved conflict' + : '${store.unresolvedConflicts} unresolved conflicts'; + return Padding( + padding: const EdgeInsets.fromLTRB(16, 12, 16, 4), + child: Row( + children: [ + const Icon(Icons.sync_problem_outlined), + const SizedBox(width: 8), + Text('$queueText, $conflictText'), + ], + ), + ); + } + + Widget _conflictTile(SyncConflict conflict, SyncStatusStore store) { + return Card( + margin: const EdgeInsets.symmetric(horizontal: 12, vertical: 6), + child: Padding( + padding: const EdgeInsets.all(12), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + '${conflict.entityType.name} ${conflict.operation.name}', + style: Theme.of(context).textTheme.titleMedium, + ), + const SizedBox(height: 4), + Text( + conflict.reason, + style: Theme.of(context).textTheme.bodyMedium, + ), + const SizedBox(height: 6), + Text( + 'Entity: ${conflict.entityId}', + style: Theme.of(context).textTheme.bodySmall, + ), + const SizedBox(height: 10), + ExpansionTile( + tilePadding: EdgeInsets.zero, + title: const Text('Queued payload'), + children: [ + Container( + width: double.infinity, + padding: const EdgeInsets.all(10), + color: Theme.of(context).cardColor, + child: SelectableText(_prettyJson(conflict.localPayload)), + ), + ], + ), + const SizedBox(height: 8), + Align( + alignment: Alignment.centerRight, + child: ElevatedButton.icon( + onPressed: () => store.resolveConflict(conflict.id), + icon: const Icon(Icons.check), + label: const Text('Mark resolved'), + ), + ), + ], + ), + ), + ); + } + + @override + Widget build(BuildContext context) { + final store = context.watch(); + final conflicts = store.conflicts; + + return Scaffold( + appBar: AppBar( + title: const Text('Sync Conflicts'), + actions: [ + if (conflicts.isNotEmpty) + IconButton( + icon: const Icon(Icons.done_all), + tooltip: 'Resolve all', + onPressed: () => store.resolveAllConflicts(), + ), + IconButton(icon: const Icon(Icons.refresh), onPressed: store.refresh), + ], + ), + body: Column( + children: [ + _statusHeader(store), + Expanded( + child: conflicts.isEmpty + ? const Center(child: Text('No unresolved conflicts')) + : ListView.builder( + itemCount: conflicts.length, + itemBuilder: (context, index) => + _conflictTile(conflicts[index], store), + ), + ), + ], + ), + ); + } +} diff --git a/lib/sync_debug_panel.dart b/lib/sync_debug_panel.dart new file mode 100644 index 0000000..4c79829 --- /dev/null +++ b/lib/sync_debug_panel.dart @@ -0,0 +1,109 @@ +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; + +import 'local_storage.dart'; +import 'sync_debug_store.dart'; +import 'sync_status_store.dart'; + +class SyncDebugPanel extends StatefulWidget { + const SyncDebugPanel({super.key}); + + @override + State createState() => _SyncDebugPanelState(); +} + +class _SyncDebugPanelState extends State { + String _backendUrl = ''; + bool _syncEnabled = true; + + @override + void initState() { + super.initState(); + _loadConfig(); + } + + Future _loadConfig() async { + final url = await LocalStorage().getSyncBackendUrl(); + final enabled = await LocalStorage().getSyncEnabled(); + if (!mounted) return; + setState(() { + _backendUrl = url; + _syncEnabled = enabled; + }); + } + + String _fmt(DateTime? dt) { + if (dt == null) return '-'; + return dt.toIso8601String(); + } + + Widget _row(String label, String value) { + return Padding( + padding: const EdgeInsets.symmetric(vertical: 6), + child: Row( + children: [ + SizedBox(width: 170, child: Text(label)), + Expanded( + child: Text( + value, + style: const TextStyle(fontFamily: 'monospace'), + ), + ), + ], + ), + ); + } + + @override + Widget build(BuildContext context) { + final debugStore = context.watch(); + final syncStatus = context.watch(); + + return Scaffold( + appBar: AppBar( + title: const Text('Sync Debug'), + ), + body: ListView( + padding: const EdgeInsets.all(16), + children: [ + Text('Runtime', style: Theme.of(context).textTheme.titleMedium), + const SizedBox(height: 8), + _row('Sync enabled', _syncEnabled ? 'true' : 'false'), + _row('Backend URL', _backendUrl), + _row('Currently syncing', debugStore.isSyncing ? 'true' : 'false'), + _row('Queued changes', '${syncStatus.queuedChanges}'), + _row('Unresolved conflicts', '${syncStatus.unresolvedConflicts}'), + _row('Last upload count', '${debugStore.lastUploadCount}'), + _row('Last pull count', '${debugStore.lastPullCount}'), + _row('Last attempt', _fmt(debugStore.lastAttemptAt)), + _row('Last success', _fmt(debugStore.lastSuccessAt)), + _row('Last error', debugStore.lastError ?? '-'), + const SizedBox(height: 16), + Wrap( + spacing: 10, + runSpacing: 10, + children: [ + ElevatedButton.icon( + onPressed: () async { + await debugStore.syncNow(); + await syncStatus.refresh(); + await _loadConfig(); + }, + icon: const Icon(Icons.sync), + label: const Text('Sync now'), + ), + OutlinedButton.icon( + onPressed: () async { + await syncStatus.refresh(); + await _loadConfig(); + }, + icon: const Icon(Icons.refresh), + label: const Text('Refresh panel'), + ), + ], + ), + ], + ), + ); + } +} diff --git a/lib/sync_debug_store.dart b/lib/sync_debug_store.dart new file mode 100644 index 0000000..130300d --- /dev/null +++ b/lib/sync_debug_store.dart @@ -0,0 +1,50 @@ +import 'package:flutter/foundation.dart'; + +class SyncDebugStore extends ChangeNotifier { + DateTime? _lastAttemptAt; + DateTime? _lastSuccessAt; + String? _lastError; + bool _isSyncing = false; + int _lastUploadCount = 0; + int _lastPullCount = 0; + Future Function()? _syncTrigger; + + DateTime? get lastAttemptAt => _lastAttemptAt; + DateTime? get lastSuccessAt => _lastSuccessAt; + String? get lastError => _lastError; + bool get isSyncing => _isSyncing; + int get lastUploadCount => _lastUploadCount; + int get lastPullCount => _lastPullCount; + + void setSyncTrigger(Future Function() trigger) { + _syncTrigger = trigger; + } + + void markStarted() { + _isSyncing = true; + _lastAttemptAt = DateTime.now(); + notifyListeners(); + } + + void markSucceeded({required int uploaded, required int pulled}) { + _isSyncing = false; + _lastSuccessAt = DateTime.now(); + _lastError = null; + _lastUploadCount = uploaded; + _lastPullCount = pulled; + notifyListeners(); + } + + void markFailed(String error) { + _isSyncing = false; + _lastError = error; + notifyListeners(); + } + + Future syncNow() async { + if (_syncTrigger == null) return; + await _syncTrigger!.call(); + } +} + +final SyncDebugStore syncDebugStore = SyncDebugStore(); diff --git a/lib/sync_engine.dart b/lib/sync_engine.dart new file mode 100644 index 0000000..12b839d --- /dev/null +++ b/lib/sync_engine.dart @@ -0,0 +1,224 @@ +import 'dart:async'; +import 'dart:convert'; +import 'dart:io'; + +import 'local_storage.dart'; +import 'model.dart'; +import 'sync_debug_store.dart'; +import 'sync_network.dart'; + +class SyncEngine { + Timer? _timer; + bool _isSyncing = false; + + Future start() async { + syncDebugStore.setSyncTrigger(runOnce); + await runOnce(); + _timer?.cancel(); + _timer = Timer.periodic(const Duration(seconds: 6), (_) async { + await runOnce(); + }); + } + + Future runOnce() async { + if (_isSyncing) return; + _isSyncing = true; + syncDebugStore.markStarted(); + int uploaded = 0; + int pulled = 0; + try { + final enabled = await LocalStorage().getSyncEnabled(); + if (!enabled) { + syncDebugStore.markSucceeded(uploaded: 0, pulled: 0); + return; + } + + final baseUrl = await _resolvedBackendUrl(); + uploaded = await _uploadQueued(baseUrl); + pulled = await _pullChanges(baseUrl); + syncDebugStore.markSucceeded(uploaded: uploaded, pulled: pulled); + } catch (e) { + syncDebugStore.markFailed(e.toString()); + // Keep sync loop alive; queue items stay queued for next attempt. + } finally { + _isSyncing = false; + } + } + + Future _resolvedBackendUrl() async { + final configured = await LocalStorage().getSyncBackendUrl(); + Uri uri; + try { + uri = Uri.parse(configured); + } catch (_) { + throw Exception('Invalid sync backend URL: $configured'); + } + + if (uri.host != '0.0.0.0') { + return configured; + } + + // 0.0.0.0 is a bind address, not a client destination. + if (Platform.isAndroid || Platform.isIOS) { + throw Exception( + 'Sync backend URL uses 0.0.0.0. On mobile use your desktop LAN IP like http://192.168.x.x:8009', + ); + } + + final loopback = uri.replace(host: '127.0.0.1').toString(); + final lanIp = await SyncNetwork.firstPrivateIpv4(); + final resolved = + lanIp == null ? loopback : uri.replace(host: lanIp).toString(); + await LocalStorage().setSyncBackendUrl(resolved); + return resolved; + } + + Future stop() async { + _timer?.cancel(); + _timer = null; + } + + Future _uploadQueued(String baseUrl) async { + final queued = await LocalStorage().getQueuedSyncChanges(); + if (queued.isEmpty) return 0; + final source = await _clientSource(); + + final mutations = queued + .map( + (item) => { + 'op_id': item.id, + 'entity_type': item.entityType.name, + 'entity_id': item.entityId, + 'operation': item.operation.name, + 'base_version': item.baseVersion, + 'payload': jsonDecode(item.payload), + 'client_ts': serializeDateTime(item.createdAt), + 'source': source, + }, + ) + .toList(); + + final response = await _postJson( + '$baseUrl/v1/sync/upload', + {'mutations': mutations}, + ); + final results = (response['results'] as List? ?? []) + .map((e) => Map.from(e as Map)) + .toList(); + + for (final result in results) { + final opId = result['op_id']?.toString() ?? ''; + final status = result['status']?.toString() ?? ''; + final entityTypeRaw = result['entity_type']?.toString() ?? ''; + final entityId = result['entity_id']?.toString() ?? ''; + final serverVersion = (result['server_version'] as num?)?.toInt(); + + if (status == 'applied' || status == 'merged' || status == 'duplicate') { + await LocalStorage().markQueueItemSynced( + opId, + newServerVersion: serverVersion, + entityType: deserializeSyncEntityType(entityTypeRaw), + entityId: entityId, + ); + } else if (status == 'rejected') { + final message = + result['message']?.toString() ?? 'Mutation rejected by backend'; + final remotePayload = + (result['remote_payload'] as Map?)?.cast(); + await LocalStorage().markQueueItemRejected( + queueId: opId, + reason: message, + remotePayload: remotePayload, + ); + } + } + return results.length; + } + + Future _pullChanges(String baseUrl) async { + final sinceSeq = await LocalStorage().getSyncPullCursor(); + + final response = + await _getJson('$baseUrl/v1/sync/pull?since_seq=$sinceSeq'); + final changes = (response['changes'] as List? ?? []) + .map((e) => Map.from(e as Map)) + .toList(); + + for (final change in changes) { + final entityType = deserializeSyncEntityType( + change['entity_type']?.toString() ?? '', + ); + final entityId = change['entity_id']?.toString() ?? ''; + final operation = deserializeSyncOperationType( + change['operation']?.toString() ?? '', + ); + final version = (change['version'] as num?)?.toInt() ?? 0; + final payload = + (change['payload'] as Map?)?.cast() ?? {}; + await LocalStorage().applyRemoteChange( + entityType: entityType, + entityId: entityId, + operation: operation, + payload: payload, + serverVersion: version, + ); + } + final nextSeq = (response['next_seq'] as num?)?.toInt() ?? sinceSeq; + if (nextSeq > sinceSeq) { + await LocalStorage().setSyncPullCursor(nextSeq); + } + return changes.length; + } + + Future> _postJson( + String url, + Map body, + ) async { + final client = HttpClient(); + try { + final request = await client.postUrl(Uri.parse(url)); + request.headers.contentType = ContentType.json; + request.write(jsonEncode(body)); + final response = await request.close(); + final payload = await utf8.decoder.bind(response).join(); + if (response.statusCode >= 400) { + throw HttpException('Sync upload failed (${response.statusCode})'); + } + return jsonDecode(payload) as Map; + } finally { + client.close(force: true); + } + } + + Future> _getJson(String url) async { + final client = HttpClient(); + try { + final request = await client.getUrl(Uri.parse(url)); + final response = await request.close(); + final payload = await utf8.decoder.bind(response).join(); + if (response.statusCode >= 400) { + throw HttpException('Sync pull failed (${response.statusCode})'); + } + return jsonDecode(payload) as Map; + } finally { + client.close(force: true); + } + } + + Future _clientSource() async { + final settings = await LocalStorage().getSettings(); + final userName = (settings.name ?? '').trim(); + String appLabel; + if (Platform.isMacOS || Platform.isWindows || Platform.isLinux) { + appLabel = 'desktop-${Platform.operatingSystem}'; + } else if (Platform.isAndroid || Platform.isIOS) { + appLabel = 'mobile-${Platform.operatingSystem}'; + } else { + appLabel = Platform.operatingSystem; + } + if (userName.isEmpty) return appLabel; + return '$appLabel:$userName'; + } +} + +final SyncEngine syncEngine = SyncEngine(); diff --git a/lib/sync_network.dart b/lib/sync_network.dart new file mode 100644 index 0000000..f6b580d --- /dev/null +++ b/lib/sync_network.dart @@ -0,0 +1,28 @@ +import 'dart:io'; + +class SyncNetwork { + static Future firstPrivateIpv4() async { + final interfaces = await NetworkInterface.list( + includeLoopback: false, + type: InternetAddressType.IPv4, + ); + for (final iface in interfaces) { + for (final addr in iface.addresses) { + final ip = addr.address; + if (_isPrivateIpv4(ip)) return ip; + } + } + return null; + } + + static bool _isPrivateIpv4(String ip) { + final parts = ip.split('.'); + if (parts.length != 4) return false; + final a = int.tryParse(parts[0]) ?? -1; + final b = int.tryParse(parts[1]) ?? -1; + if (a == 10) return true; + if (a == 172 && b >= 16 && b <= 31) return true; + if (a == 192 && b == 168) return true; + return false; + } +} diff --git a/lib/sync_status_store.dart b/lib/sync_status_store.dart new file mode 100644 index 0000000..4f7459c --- /dev/null +++ b/lib/sync_status_store.dart @@ -0,0 +1,59 @@ +import 'dart:async'; + +import 'package:flutter/foundation.dart'; + +import 'local_storage.dart'; +import 'model.dart'; + +class SyncStatusStore extends ChangeNotifier { + SyncStatusSummary _summary = const SyncStatusSummary( + queuedChanges: 0, + unresolvedConflicts: 0, + ); + List _conflicts = []; + StreamSubscription? _subscription; + bool _started = false; + + SyncStatusSummary get summary => _summary; + int get queuedChanges => _summary.queuedChanges; + int get unresolvedConflicts => _summary.unresolvedConflicts; + bool get isFullySynced => _summary.isFullySynced; + List get conflicts => _conflicts; + + Future start() async { + if (_started) return; + _started = true; + + _subscription = LocalStorage().syncStatusStream.listen((summary) { + _summary = summary; + notifyListeners(); + }); + + await refresh(); + } + + Future refresh() async { + _summary = await LocalStorage().getSyncStatusSummary(); + _conflicts = await LocalStorage().getSyncConflicts(unresolvedOnly: true); + notifyListeners(); + } + + Future resolveConflict(String conflictId) async { + await LocalStorage().resolveSyncConflict(conflictId); + await refresh(); + } + + Future resolveAllConflicts() async { + final count = await LocalStorage().resolveAllSyncConflicts(); + await refresh(); + return count; + } + + @override + void dispose() { + _subscription?.cancel(); + super.dispose(); + } +} + +final SyncStatusStore syncStatusStore = SyncStatusStore(); diff --git a/macos/Runner/DebugProfile.entitlements b/macos/Runner/DebugProfile.entitlements index 834e188..6b346ea 100644 --- a/macos/Runner/DebugProfile.entitlements +++ b/macos/Runner/DebugProfile.entitlements @@ -10,5 +10,7 @@ com.apple.security.network.server + com.apple.security.network.client + diff --git a/macos/Runner/Release.entitlements b/macos/Runner/Release.entitlements index f29279b..afafa97 100644 --- a/macos/Runner/Release.entitlements +++ b/macos/Runner/Release.entitlements @@ -6,5 +6,7 @@ com.apple.security.device.audio-input + com.apple.security.network.client + From 0b07c0a9c5cd40c3799aca0fdfef18677a02f7e3 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 1 Mar 2026 12:31:50 +0100 Subject: [PATCH 142/146] Fix PyInstaller spec entrypoint path resolution --- backend/pyinstaller/sketchord_sync_backend.spec | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/backend/pyinstaller/sketchord_sync_backend.spec b/backend/pyinstaller/sketchord_sync_backend.spec index 7c39305..f0b302b 100644 --- a/backend/pyinstaller/sketchord_sync_backend.spec +++ b/backend/pyinstaller/sketchord_sync_backend.spec @@ -1,14 +1,19 @@ # -*- mode: python ; coding: utf-8 -*- +from pathlib import Path + from PyInstaller.utils.hooks import collect_submodules hiddenimports = [] hiddenimports += collect_submodules("uvicorn") +PROJECT_ROOT = Path(__file__).resolve().parents[1] +SRC_ROOT = PROJECT_ROOT / "src" +ENTRYPOINT = SRC_ROOT / "sketchord_sync_backend" / "__main__.py" a = Analysis( - ["src/sketchord_sync_backend/__main__.py"], - pathex=["src"], + [str(ENTRYPOINT)], + pathex=[str(SRC_ROOT)], binaries=[], datas=[], hiddenimports=hiddenimports, From 0da985dbd43c281a1db85bef59b367f742e4c539 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 1 Mar 2026 12:33:38 +0100 Subject: [PATCH 143/146] Fix Linux CI deps for audioplayers gstreamer build --- .github/workflows/release-main.yml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release-main.yml b/.github/workflows/release-main.yml index 73560c5..9d43378 100644 --- a/.github/workflows/release-main.yml +++ b/.github/workflows/release-main.yml @@ -54,7 +54,15 @@ jobs: if: matrix.target == 'linux' run: | sudo apt-get update - sudo apt-get install -y clang cmake ninja-build pkg-config libgtk-3-dev liblzma-dev + sudo apt-get install -y \ + clang \ + cmake \ + ninja-build \ + pkg-config \ + libgtk-3-dev \ + liblzma-dev \ + libgstreamer1.0-dev \ + libgstreamer-plugins-base1.0-dev - name: Enable Linux platform if: matrix.target == 'linux' From 8da394f8060717ca97855c0747a2f2c13fb6e2c2 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 1 Mar 2026 12:36:00 +0100 Subject: [PATCH 144/146] Harden backend PyInstaller build with absolute entrypoint --- backend/scripts/build_pyinstaller.sh | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/backend/scripts/build_pyinstaller.sh b/backend/scripts/build_pyinstaller.sh index dbcf805..78c127e 100755 --- a/backend/scripts/build_pyinstaller.sh +++ b/backend/scripts/build_pyinstaller.sh @@ -9,6 +9,19 @@ cd "${BACKEND_DIR}" python -m pip install --upgrade pip python -m pip install -r requirements.txt pyinstaller -pyinstaller --clean --noconfirm pyinstaller/sketchord_sync_backend.spec +ENTRYPOINT="${BACKEND_DIR}/src/sketchord_sync_backend/__main__.py" +if [ ! -f "${ENTRYPOINT}" ]; then + echo "Entrypoint not found: ${ENTRYPOINT}" >&2 + exit 1 +fi + +pyinstaller \ + --clean \ + --noconfirm \ + --onefile \ + --name sketchord-sync-backend \ + --paths "${BACKEND_DIR}/src" \ + --collect-submodules uvicorn \ + "${ENTRYPOINT}" echo "Built backend executable at: ${BACKEND_DIR}/dist/sketchord-sync-backend" From b8243f1747a532e3db2b86fdd7f3af8b89134c29 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 1 Mar 2026 12:59:49 +0100 Subject: [PATCH 145/146] Fix Android CI build for prod flavor APK output --- .github/workflows/release-main.yml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-main.yml b/.github/workflows/release-main.yml index 9d43378..a95f627 100644 --- a/.github/workflows/release-main.yml +++ b/.github/workflows/release-main.yml @@ -72,7 +72,7 @@ jobs: - name: Build Android APK if: matrix.target == 'android' - run: flutter build apk --release + run: flutter build apk --release --flavor prod --no-pub - name: Build Linux if: matrix.target == 'linux' @@ -92,7 +92,13 @@ jobs: set -euo pipefail mkdir -p out if [ "${{ matrix.target }}" = "android" ]; then - cp build/app/outputs/flutter-apk/app-release.apk out/sketchord-android-release.apk + APK_PATH="$(find build/app/outputs/flutter-apk -maxdepth 1 -type f -name '*prod-release.apk' | head -n 1)" + if [ -z "${APK_PATH}" ]; then + echo "Could not find prod release APK in build/app/outputs/flutter-apk" >&2 + ls -la build/app/outputs/flutter-apk || true + exit 1 + fi + cp "${APK_PATH}" out/sketchord-android-prod-release.apk elif [ "${{ matrix.target }}" = "linux" ]; then tar -czf out/sketchord-linux-release.tar.gz -C build/linux/x64/release bundle elif [ "${{ matrix.target }}" = "macos" ]; then From 11f7b7199d154811dc8987167a9a4c98caa29651 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 1 Mar 2026 13:43:04 +0100 Subject: [PATCH 146/146] Add CI caching and concurrency cancellation --- .github/workflows/release-main.yml | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/.github/workflows/release-main.yml b/.github/workflows/release-main.yml index a95f627..7657c3d 100644 --- a/.github/workflows/release-main.yml +++ b/.github/workflows/release-main.yml @@ -10,6 +10,10 @@ on: permissions: contents: write +concurrency: + group: release-${{ github.ref }} + cancel-in-progress: true + jobs: build_flutter: name: Flutter ${{ matrix.target }} @@ -41,11 +45,28 @@ jobs: with: distribution: temurin java-version: '17' + cache: gradle + + - name: Setup Gradle cache (Android) + if: matrix.target == 'android' + uses: gradle/actions/setup-gradle@v4 - name: Setup Flutter uses: subosito/flutter-action@v2 with: channel: stable + cache: true + + - name: Cache pub dependencies + uses: actions/cache@v4 + with: + path: | + ~/.pub-cache + .dart_tool + key: ${{ runner.os }}-${{ matrix.target }}-pub-${{ hashFiles('pubspec.lock') }} + restore-keys: | + ${{ runner.os }}-${{ matrix.target }}-pub- + ${{ runner.os }}-pub- - name: Flutter pub get run: flutter pub get @@ -132,6 +153,9 @@ jobs: uses: actions/setup-python@v5 with: python-version: '3.11' + cache: pip + cache-dependency-path: | + backend/requirements.txt - name: Build backend executable shell: bash

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 diff --git a/ios/Runner/Assets.xcassets/AppIcon-prod.appiconset/AppIcon-prod-40x40@3x.png b/ios/Runner/Assets.xcassets/AppIcon-prod.appiconset/AppIcon-prod-40x40@3x.png index 996002f3138f83e3bc0ab0b7d9670483d43e9288..4a5d3ff36eea1c846382e8b65b8ff5b581e60bbb 100644 GIT binary patch literal 6191 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 Vb;yR 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 G`tN_v&Nzku diff --git a/ios/Runner/Assets.xcassets/AppIcon-prod.appiconset/AppIcon-prod-60x60@2x.png b/ios/Runner/Assets.xcassets/AppIcon-prod.appiconset/AppIcon-prod-60x60@2x.png index 996002f3138f83e3bc0ab0b7d9670483d43e9288..4a5d3ff36eea1c846382e8b65b8ff5b581e60bbb 100644 GIT binary patch literal 6191 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 Vb;yR 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 G`tN_v&Nzku diff --git a/ios/Runner/Assets.xcassets/AppIcon-prod.appiconset/AppIcon-prod-60x60@3x.png b/ios/Runner/Assets.xcassets/AppIcon-prod.appiconset/AppIcon-prod-60x60@3x.png index 18124bfda962e58fd874502bd9773bbf71a940ed..decd30a8bbff36f0a12f117926899c01047064e7 100644 GIT binary patch literal 8219 zcmb8UbyOQs8z)RDP`o(B-L1I0yBCT}i@OyG(%=q-;*#R-?(PW?+>1A8Dejy1`}XYF zJ@5Xrb515XbM8!L?(@vgZnTz$A{II+IsyU$ma>wZ4*a|6KOa;S_+A{0!h?YDCd^(| zR!dn{mfFq3)yCfGD*}RVPGGXQ(x4Riu(@QB4jZ-)4(_;CE_+mrkON_i7R@|*wMd4^ z1F|~l4+3Jv{^sAmN39n6hd&#uXU88cnt_p-e3*T?i!-H#@g(KK?L)*yxft0MH$K$$st`oM6V_%G1Y$GtIM6 z7bO@~D#($0DdC>_lRo?|$9D>ZfhXx<>T@6OIcq679Y>mZCFY)L$m~UqQCyr=Nwu9k)=?<`p*D_m6^8Yu;=uX+|V8kGt$(R`;&Vo#w7 z=Je@mH9Q}LiL}De$1g%(`_Em#1AAfF1j-1eTrJPsh+#h8Z8lnZ6P-K#5Rvk}vsItg z3WQ{8LXVv}e2}i3-x4o5t8c#L{1)<^$&`m)5q;*07`^Y2Bv2RoPcQO-ql;^GV2%U= z$q}pfTXJ&5Liq`^TiL4RFI>>K_FZ+&34Mv9iI zGvm6A4Ef8LB&GI1?xwP1)*5E5Qp0YBBK!BjxwO87{vja?L=>-HNxE|Xs!vAt1_50n z`I!{Pk3s>EmGivk+@`1!o*4>XX-rmi1-p7ko>#^D7 z3hdXzA<#i27n^kjL zTfvEo?$jALd=hhye@ji0aFiJ{)JnQ>F7euz`uT(~-k1ZG-LYx;EtkOMCbsp44@lAV z=yz6t2sdI3)?x#UiHV6D48go#B_C<*mUH<2O`y#JjI}l+UdXpg*=t&##gKw{+;0Q7%D|F50#lumCf%6#UA7so#=?R$yxox9hYjb#2!x?-$N6+y1L$Y zTaAsU=HT)Tt)p`XGY!u@eyTBnnRoeKsHKjz5)cxKgB1*H;>PrIzp#T*4Dcu zQOgLp>E)Cx2|FL@>{6qGS9<~<@$YUIF@fz?Jee9oU$Kk9xfY)X{0?6mC* zIE(+C{i-HCvtMs`;0AN~;m+Yc5D2{K>FF6J+0?|-lX|2+K)W-TO%LN9`R47dUt`of zv9Y>3fvoQ3<)vj@Z`EznzZlDGA+slIanH;x$x9mFDz&U@=a7^|O=*tyK;)Ux(jp*C z=)7PdGxHm@rD^o@5Mn@S*pYA=0=BU(5N+@3dg{r_%F;aX3E&PQa-g943F3U6-ts%lRW?!# zga6CNcQ$?GS_65-Dodg0VTB)j+lj2_L`WTE%xS=?2RLe|MofQf_SOvlv_N7{L zO}gz=2bPSt+!V(!7)+6I8uP4^A^ezg^h~N;LsmY;8-^06V0~w)Q;y9WZU$M?Nw`=( z_SyVBus5EPnr4D~$?O}!qVBCr1}_7rWp;s1TVWqkJ8`i8(7`QRk(M&Wndzx5Sf zS3>Enb1#wJ5QKl>AGV0oxy;WVFY{m5Iej*&J~z5V__E4l2a>QH;NX}cv*wRlG`_#R zxzXVz*SG7Df{9ZYZ@0Pc$}NT08&wyFhlkg|!FnS?Xp=CGP8}?g@bSDj8IXLqdz-7I zNu`!|DMQLTMz_-JxMcqD_*ffDVchPq{|#^WGg?GsWMa_Wc4Xvmg8bgIT`|smw_3ID z*mpE(d}ir$b+@wL;lyT2E8yH!}Na=%zsnPe;-K&wYqE^5&W3m>NM2XzuutVK4E8L>$KkN@@r81 zKINPGOh8gDLHgP%-|Y+Nf{?Il}{>hik*7)f~c)X98~k zPrI=yneDGgyg-3$aAdccYXzI^>Cwpvdp|!i?e-Jbz_0C+P;YPVvxf(N)e85%c2P1? z(y>`TMv01_d#klU*OlV6Jr54+CgMe&WYBiJS8V6yx?lI#OXk4>KM}+!r={%eVaQL9 z&d9s4!OJ^RcPL1|G_G5Oy6vAF>5=z~70y_Io%6H+EQw6_P0kCnl1#ef{M&4|O+?fX zo3EYZ*rV%8mP29RP=ZzVN9Zur24cyix&}pou(+!yIT-sdFNv!eS!dVo>rc24V$*5_ zKXJ`?rIJg`g%C7pS*Oy!Og?C6%0wJSUPgOaayQ>7dAhm^3VdC7_2nkr=_`h)zLcj7!$+l&;5X~Roi=6qM%XziQezL~2 z^F=-?vlwg6Y8#R(Dh_9EYnw%n4(i-DMVH+cB85lqluAj8uktB_pDs%IW6Tz3xQS>XD%4n5+V7j>;qmWznToTuQcBhC!mtOx7@m@m?4RZFxez z%z~n_x;lP!YkmDm^7{Jv^_O-NL8Mp>ZEmFX+{(;M9RLfFoq` z0U}t3Bay`HocmOK-C6XtyV`L*wTtXsm}0`XQUD-=9334!B0u1)U0ERebUQ=#$D}7*@@X1Sk!!H6K+#~-^DX;AHYr5ptx7-1oX!>d2_ zel_9N) zurXD^g%qu*5eN2!4vXWjXYR_j4w}>Prjv;~G{^+7(3``g{-X{Z_Lpu>Ry+yv4clGs zSG>}s6^5C&U|u&nyqk&8Xi7x!G2VJh4)Y!WE~J>#?}&CuZXRdNeNWSf)6+f*0qTbi zE4rAzvVvlWhIlD-x51?{gHS6LjGpTWX1B955>ICDghkBv9g_pjw8!!#x~}ONk%8RV z$*goJ%dz(Dh{dyZb#(Rsx7MZO;(jq+oKHD^-*wI;jNEi_sG3qCcbLMMvUVi#2y!AA zbWlIx3`koo4YVEgkRlR>6QEQ9RDv;)y`rBLUM0;p!4(eDKVKr}l^!k$uxGt;-dpWJ zCe>MG!W9md@*@0#c|em%$w#_BYRhm;+ZNmcTvmYsku~)H77IniJ6VAxPpf!Jkku#k zpZ-Qlo~*PulkwX#XhzbKgN?G_AH z1bEMQqaFdAL#4S{`*_!VEQ`6hQJK89W)b&to^J{d4rp@c%{V(t@wf(ri&E0kI#Zuc zX1$mk(u$f?n-7rel)f)Gm@*3{IKXw0_N*`(S#rr=FXzLyE99XMfj}=%U`EI!^d#Fk)_FF zBR|6z#kkU!c9AXU+Jg_oewK*gSb5tS1*Ka*h{0o<+x*zfB1e8Zgqj6a4oxXq4K1e- zU*AJ>R}ahJHKNky^o>xfDw+%fy$SqunUd$d+oe7BigaCoOgun<{Qh1^TU*=kN=VYY zXg7p~IU%_>86v;@?Zbt}a!jZfrK|`YStd(<1FPNk2=j>37B4mS<{BC!|u_iI+2t7^sv&<8$a(+wJoNS05nD zH&)Zfjzzo`vgr59jUE#Csn-egXlI!>zT^y+@-xNp@$oZRqD^@|P7HgjD!(wweC1Yp z;OMqRMM}CFI?d-D94ShsRWSP@F?L>*$n$0Q{{H^ajS4T`aG#gj!<8S0OjEqc=X8}V z%5xn7phskIb#rrO(i;>A7vqsP(|O`+mycVoL8LX@BW7=n*Fyj>oE>Mk^7?gHQSf}c zw7R4qxMXR_ ze?GD8=HTGq+YCP-LRPJ;>QBckL}^3TGBaa1-SMZnoq>-xxxRfQ#g4wdcYhLtpLTa~=%R%z zqa}ren1w$Jk=;*D@P3h*8HmpWV>Bg%0Wl5P)0#|DlKl|g)HIPVsmfkI{G zGWUeiE`-Sw+7?i0rC%TyzG5!5OR5EV>`Z1X&|G%x6(E}Q?zX1vI3HGl1cG*cv@rYr z!eQ2gHa?Oc2{7&NTcPIAhv^%GgtH^~;XuAOBd%1PN$B<(w!yqlu zXfZe~5EJ^4{m$q=@X14rVXZq=Nd4lD5mC^Tbp$t6BlUDm9&A(5@BaP!w;FCI&9)hh z#H}kDv}i1s1nEr4FP2b4B~6+;2xv}_L%Fhu^$aE3_0+^1MvhNs0wuq9%J1t_`J#r} zQB!j!pjQAvV+~HwrwzGtq=@_o$FDO-J3G*X&8K`0Hb3|cfNd^Mn;7{e(qEa%dcTC} z8FZ{818e5m4ndD*jAga8uZN0MflZEcCF*)=vEo~L9gX`^es1ptz^bTEPB z`?Z1RuLBHP%+U08*Q^RIudXp2UQO#9ZBc1`e0VHkyzc=L#kQG$h&b&C(KI*;y-n>} zP_YzZO!cWP$+*-aZ%Rr^th!KzKSN6};6frdRJE{)F$$&0q@ibgJaWdY#gq3# z+gtkw+OJ`;LAL`_79-IR{XN$%9^6E zn}wQ8%qPf2=q_h!tf#j(GFe9(emwu%1CE%LV4F#w^Z;@-R1qN?!yB0^%;ZQsKO&W} z#QH$4wsTdd#$rw$(%m%TqJv4lvBV-lx#$mODDQ7exasUUVoP!Gac$|4sx1jz;PW58 zcMM1*8~}Sr-j8dJ%&`+n(P3;YFuK-66F7WOA^i;i6P`yGl+eux2R5v{> zO~dzMnD`txRv;op-KA5x;E$7U?XNA%+c7O0LP^fnf6qHKU<_x4ov)K=6oC8vbf(S? z7t#$m=jC+w4ST@irA3;YpLD?^?JEjACBhy^ljM3TlwodVljQj0_}%NDiY2}O=|cnp z@egOTwFmL1DW+Ffn?_+6L1jZjLwFgr&ha!_>OYFMGa8fhx;$yFcV{#Yz&*SvRHJh# zr%Gshf*d=;7Y)Aucl-Un80P=;0;TQk_o~SkGnol6EO?4K01rn!1+qCH{2`;e!mIQ1 zd7-Vufyhh)__KT3ARI6b0{i#LrX0e~ul?=mM%UlD)z-x#i2dChr3^Sx zGdHJdA2gLd&ae>G*VS!2UobGw74iGGCnVUOETt4c^Wk47w?@1#Q)pKl${`h{jL8mB zcU4)LP`IaEwD3keuO<>)GI6$*3;4OT1{m#OKT(EcSX1;9$j~?ChSj~d%vNx5A4VLy z-gA+{=T_YDX#XdFbNarfZJ4!Us>o7i1|{^nM05p54J9H2U;7D1!ZL$^Eteek&miXd zX_?%8@ zIFFivCY=pF*vZSwdlMC*LdgFl`~DYSZfgJa-ZyJyc!Gf;_bj*fJuNLwIZE)}YSD`H z6&1=atH5xBxFcEM5ErH`Nz=VNRzmzJ(`2y*TI|lm;ge1gOJUziLYw=Vqskvp|IQts z5_$`FA#=@N#(%g~B33^YS#|x4SVT!rA#Om6$>gC=&Ik@UC2KyLjsuYt;0s(5E>G(f zjJ9;BE!SBN3T4HEqf2{wUX)~I-&QkF9%m=AhPYZ+66z7~_9IhhBDCDJj$b3RP%ck5 zu^TV*;!a`ctG3mnPu0^gXCB6q({k4i-+U6-Nj?Uqc}az;Y~_HA*E?x_rhOkzTVL;> zs$9>V6YgZZb+k6LOUStd4T&^=$^xn2F8VeP@NaxBdbN~i)dJz17qtf1TahW^*o?O)S_O^UXi(b#oervEGU1>zmMZHzSI%+!hVWdv+cy6W zAn_SkQ&rW4MwmM}fc5HONxe7#h3fRq!A>~2xbn$X69caF^z^ibm97(LkD!V@rt%Cv zwaY?;xCECMiq$0j=%5etS=yEJ-Ftm8Ap74FO+`#LQCsKcaRJSRa%`&Cq*2Wu4yi`G zt&abaoccU|SCZZp^bY>&xiN6jb_ia%0<+I%NtbQ%F(KmvQ4AWq@};Duzn|z-)Yo&r z4n^Y!tgfx4N0BF(R_R4!$23~nA9m{t?E-mdNBz1AI%!R zj1PKn6-{iF<_C$aIWz}FK$8H}iJbE;A3yXgx4B!-_fZ!yP}vK!e{tP7#$e8EgkFP< zkhL)320`x*=OUPp&Jz=o)E5Z@212@k!s z4V}PB@LX>ZF?~{g@YB6YHD29nR&rDh0iV-0C`%&Ox)s;MlhgVpxt41LtSUX-Y-LJPZvA6(sPMDxauu1>To>Lp69% ze4iY;CFr`T7W^gAU8)PPjEye%Pxa(w3Hhf%c9wX6&+kmzJioTCE|Z1gwULGlH2Cvl zUeVIogQiWDH8sT5w&8K1>J52?ZYbczi!!+O_t+rPHD%8BO0E=nG~>k)|EXj>buSM`|Hr@QPZj_@QyXF6a+9v$t$PO9d-xiz`0`XeJZD2J_|)N?F`_-B zk60eNvF|bKgU7&yWz4Wm9&sl>YPI_W!;TF7=@(`)rEH-vvl1~PtoWqoZ1pCV9``cX zYAto2nMDDDE@Ghki{E-GCi6EC!ohf4%uk1FGSfbcB)u-pkn%Pj`W-{0l_vW>ad{C< z1cx_SU%K(Pzkq>TyUDoNK}v@C$j#R0D2>Ij3XpauH%}TZycnupf4Un+PPIU7=kFEq&y^XZ;|CPz z0xLp#(Je{CKd=f7Jc{Wg7%5UnMl*>AUI+Z1mqc>xjIHH-aSu)~6SQHMk)h9fhcm;n zN}spdfIIlm-=UlOcGG=RCxu)2amZugpYR}RhG_b5_WrB{pB5*{qM@_ZH(UFDy?&i{ zGwk`JK2`jymQ`t$s+W035gR#Obz>e`gs*>oVg5ouUmQa;@{_Rm9qRx%=H{Q&Gs8U3 zS2Y#`Oe|3{?GUu#>#(QZQ|Ic(t?&$z1ms+vgiAi0aIX->ao4Uynle`;l>Cr4o!d3D zAyBPp2QDr@lq)A>@_8rZiA?ASQVNRkd_F5`hYQV4bj z9KOiZ)JROIBW7@4Zv%gqmpr>0IC2);t+``yW&{C&O+`gs_N@=%aiG5k$-6n1?cN7c zN)N`B9(u7XbPhaZ6$C`WDc5v5IkPXTt^azSt}ZWB!Dop&ulL4uFG9zz5y{C%4@nDW zLW~TeFnNPI+Qku}t{BnuY_Inj7}JU>gX87W-y3ApuWJULo`Q_wRUOp_9;}tKvP2v><=~_LAGkh9%d%bg%E8 zrygR}@$vC;SHq?T6soq_;}HBEsR~$AQ;8((>x*SvU|d-K1`JH57;!cE0wjiuJ&$j7rA@ajyn7+u~htF9lN=j zyG*wMD3ih3K8Z`mnnUB`<1+uARXDh4Mn{pRGPq6sK5hJp&|$mOpM&zD7V0p-_jBZt zFnsv9xQ>-9gE<)LN4MKBkrEph9Pz^%@V}TIA}Tv4kH#Tx3sUb+A1D^!PQM8wP zldFMD_<|m91FJ4&EL3e1k(&Ij4n!&w{XrP2Ruv_xw}w z4(_znbo}x0t)vF_S8g6QHj1GaobP)f2*OFv=JL-6dw(i32uoYdi00xf4)a8znCckE zY7hn#VsyXKHBtWA`FZn)vp)Q&Lg8n-ckkX|Jrj|tr6O4NqXyvM_%Q6!P-a4R4Cgvm zd2?VPM`M0kHo^h|CQEf6M-z{|9z>FEcSQu12aeakDbh%HaLhEg?}x}n%Bq7^44`0I zDP=m}q)taVW@{T8tBNyMaX5EkFi#>bw6KVaKd@}$|8B6j=*b!b4p#;aPwzw?l0dPZ z(Dm`1$q{u=(8?0nNAcToQHrA=oZdoDjxMe9h>p0w6G0|tf$!Y2NRhf3}*PiO| z@Nl^#*O%1P)Y&`gklef13HyjA-I>|h{+Rj5NG4?zLfO?$C(EtwXN~P`?zWvT&kwnz zq@=-$xp3lVhM%t~(IDYu_OmXX*K;yScg);Z(UGg3o}MXWoQ9tk_C08cxCM+m{jTBM z8I^;_UabG%Ds$p1^(a2eL^^4y?dI;MV_dcc%}JG3 z1+zBD;84HBSsFBvT9iM2=I1*73Ci2O4;$JJjmE{Axnhk@hjZ20N(t1y*!?HC%v!?W zng8n2R<~3A!!K^?D1(M5c_l zd4Tn3H>l(2{<(0eR99CQjmxaVC(y{qh$U#0+Yrkt3GDCjbbp;cTpi1Y6-i_~A|Pzp z|HTYYmOr<~G$WU&r1m0EUx&!GCibjp9uAIs7=}aS7_E$)nRPjrgI~K3!LL19<7S&t z4dcB|^dznBjK59gLlCn-b8B;6bEyi{0CFl!h9-0vq<$bhBST9k8}Fpm@AhotJg3D- z%Nf65v4lj<8J`}iaLwXg&^GV?r-0{I9?bp*0bFG_J~EPZ;?`Q~%HjA+o@zM*L*ar_ z^G+W7Qu4DR*Tp8qaW{#aA+hnewpx6Cdisrs)39zfp4N`KpwZ!priEdws4m8PaAh@Y zdU{%_Hwn1Vt6Tn%0i(kS>z$|N;hQl|Q<}_3*ucPmTxCTCiyPLs*XwrI%^im6ipiaw z9WgyUy-r*_J|@1*fDjn`(?NfnW-H-^mw1Amh_@2&{s;?W_fkK`@AzMBW#r9X*9U)C z72~N$tD7%qFiPn?babZHA0Hnha=dOvqhOV*2Il77ANs!#2Hv?pS)aDVXLqr}D&Igq z@BcKe?vxbQ_-+uDS%68_`IkGwHEmpHmGvpYP3d$gB_ zY#HI#EG%Z{l2K+|sGF(r^m7c55J$b0<~0sYrADFgu0$(PX}G7DLX}MnGi!p(IXH8fi7$4Uvbso z_-WX4T3IpqdoNa{XAPzs)DQsMEY%1(M~(F0`V?`)xneVO4nKS&O%fB=vMP6CAyQ z&OcD#eHH(Q5P9IpQc-abb?s1ALO6BO`;)q){|#rSOzK?pH?@qs&qVv5y-u3He1Y_m zaT$96`Wtlorl#W}bLqG=9%(B-tO;`52YNxA_8tZW!R36Pd93#zJ_W;Gp(rDYe_HPm z?U}R$Z;l@=)Svbb6)gGvd)0Guy!6!18(MafoM=0{r1D|6m#CCp08!F5n7S-{SE97l zCO=SrLgKaYhVIblX!~a?2UF9PwywYj#Y9@kMG(iAuL~gTNHmAOTI>-m(XD|u+V>~m z`>!b=de2~LXF*@$UshRtvFy#GyXrqD@lmuE@`Im!Tfd=H0J00Ly)M|2v^y9aYMsh0 z`ZC4@NQB#@Bphe&1Uuf)X$O}Sa0`bkQn=e^w#3;ce7OtsIvFYLe&5E5za_Ii(>-DF?-71`r_ga0~wIxvUT27hH{|>i85~ zZp!*>Pi#CqtOiXX>F>=Z$Hr1kh2wVvq=6Q_TC9{vTO>r#F|+?@U}a@x-W`R8X|L`E z4yy^$(N{r~Utk_~Y&2fd)zf2M!7k3({iK2OBe@EnkH0uz9;jHhY5jIIes?8RRaFu$ z==Fn~qB#s(ecX%I0gY5bRP?TPanbnOg!#?f>})_@YU)-q8O5&Ry6Bs;>**NMH>Gi&Y0;~3RjRo$ z3^>YXp9$>cW3&z{zy{PD{jL3X$*h)6t*oU*e$y6Y?QCn?g2+FkXj-2HCAfT8dwK4b z21-L=FQT({L}!96^>VFsX`8wZurg^6z>>|)&TfBIY+&$aR3ipiAc zcTldR6D2OeYRwq9kHr#xlLqBONzi-1$rx2A^l2xclH-kl5DQrdM9x7kcgFpfEo+Y! z8|-EXaT1R$`9XO~MG09JV8ue7)%VyKrl+F48G6d;wp+nyU!MOmB}!b}(Y@UMw*O+{ zvFh^OyL|=!AX%jgR~(azss0eJ50k4D0gPAG7sa8gmB}mXNZy?KND~nmV0kcGt_Rb5 z`PR^Ih2bkfYKBmh(jMwAa-y4pj|>a#2;6notjqbYJqApdsHCuJ=CqLVoC&|S@_#OA zD{Di$3##&DIbSxuw^o6K7KW$SLAJKG9;>^$x(pN)P$Ob7N=VE`hlXr9*xAdm7_py{ z2C1p>7aW_$De^jFs1(|Mwc_(RN=Kq4{tI;>D1Qj8Ei#c=Inq>9(`%3I;885~wHk~o zM=wA2iO!ZBY3|$jRQSADSy`#{X%mm-PZ5o^R6U?@o%C)l(aPqL|5+L6j!bEYS9|X2 z*`h`Mcod$Vak3S!M7PJ;dM{jtti};5GzE3Lo_@xr%}EuBiNX1a%uoKDSW9ARVeb23 zHvK~o7x6~f#lx53F`dPJM}s)$4Z1}u+Rc8_WKvZw+NzeWlfXm*r~u>#MLZ)KM-6OALSTD5t;y$~B(< z%~7TvM>4Xijc4h)Dd7#DQ2b>-pdc33TwX^<2e+BBu*>SQIx&ZRub)$-VS39_NQ`AVw`m)z zw6wXhtus&y zK2UOs1PZ@SokWXV+4i+p(bvc*_U>^&X>Hq!PJosk8 z=0#suchfUskXYqyf02TwbylCPd;&3#o2h5y2ew@Ywq38(OKfv-iID|k6BCL0ii(&k z%+}_q=A&6Wa_PIRl?et@1;5!}>Gf~+X|K}0jERU1%R3Kg zPjnZkPu`i#q3;Go@Lz*PyU%juMQb*egVzuDEH0wG)@cK;rb2usCM-_o|7!w%-AbXI zP-^G&K{fUY?)emR~vzwySp;%ujUQG#4fx7K)^OpvVthWlw8gNm`q!51$_g5{C?6 z6Y`I|9vl-0%VoQG$N@VLi5==lz_d&t4V-t1&V?&GL`1~2WFf)rL{9XL z&O|Sp4QOP4{zRK(a=k5$fClZ{&f6GtODQuIPuYXTyvIRPz_WOkFl4jgYr* z-!A`>Eges8dp!YN8vKD$%G8jB)#-b=bG@7Af1)FBp_ik`&ke|jrFA65Szm|mr0+2#v=rGo&9k@bN>(v>ei!mcdMBV-}lJw*Lm>;bCKxZOmhRj@a>` zA>|k}7PV^Gle9f_`qjp1rSBF)$f)+YKx)T`@}~jUaj9meq|k^A)2 zRM^{UL+al5*yP+2(oTyF@AHVcGh)-h6?r%^VqtRt%J_WAE^c>e>EMTHtG?o2_MtCw zB}?4%vZ{%biL2>hhX{uqlxw|vDVoCm7 za73=FuYX}>txrHMQgD!!m7M}yfy7dB>W^dQ@va%FP;!WcnHg<0Ii6ief|<{0Cwv)D z*QYglWt*V8+;dg9h#!|Ay}P@y@gh=^(c#KU(SJTCm_;aHjxsrqI+JM8Y8;_(I6}5S zL8bO^z9t_JY;e)7HEb66YF-ACo!lzlxd)d1`)}i%~@L@v2jo z$-b!SM-gpx9{bbATMI75z3!8e!s~#8|9E$I=YDp{ns*6c8R_V{;7I?)@Oizb!Z^~~ zM6W6DuHGek znn;m&(PLuJKQtIJ*P9%7B{MQB-JnCdsE6EJPn(9qnEt^6vd!B*R)NZBO;+PC*&72> z2R<^fmFH#jpc;)(bn~ncHYCXM-4oEqj>nJ`b<8E?&4Nk#eLo(yOwi%gw>aIghEQUd z9dpysOlQ39iVvT{n}oh)bK04G?=0XjX&b2%y{7JfpT{)lqkug5{*u^C^##jRd3 zy2As~V^&cM@GR#$ksAKjJ! zIwYOKNPO}t>S5PDnVe4>dU<*Iz=$u@IjxPQM?ghd;KC+$q6}@oawf_uDwG6c@vmt= z_vn|+h|W1T6RV{5)4hoGyu9uH7dD)Tl{0&H7h{112JqK>0pc)wjLX^Gr~cMNsr&Ca zzrbvrA=Xw&Eo+1EuTCqgs$NS^*l)%Q|8;CqZN=8^_WYed^U%=L2uaP(ziQE6(El0> z0N3qRAXf!_s%mN~Ea_J#uR|e8x9iwE9WW91oiUI$xBqyyu#2&RLPU%b3i_O94XV0= z?Od#BgNbdpSu4-bW8L5S*RZciNoTwBX8y+(etvCASNvo6bcb#8SfvdA1!iL&0Y*Z( zBO@vLZ_~Aauwc`lPhk?XXy3~P{@7o~U+HN(X$)t_&>%I|)tz43_lWUDKQ0hN@-z4z z7t7gtCGI0^XdZ1yl`2wDrL^FEX_@dHX(U!O#+*fJ>?&z+P|?l1)b>qkoIgLar{%Q4C6Tsp=b{z=nIC$}W8 zBB};Cm8`RtSv^Ff?Orz=E!9&zK`x|bmb~go&KvKNJHvsBywsZI?Cun7d!>Jj7xgdj zQ8<;cx%At&sb4fP=uEE#d`U0d_en=+Ws(-OyJ55iIeO<)?wH5LI>PH1Vyn%V+B{xg z;jKy^1WF!Z(IZuboWTQU!O&#OztzJ;#Y_5TZ+a zAC&a1#%+O=)&fmS`^JVOTTo?J>tw$@lJ-=lmH&Jre%c}D>>Y^A826 zW-Ci`C4v9!_TC#n0OFz? zelZRVlw@~swKPg$1SP|qn|})k2z*&7qo``u&=HOMFF>Br6#7ThUD)=!aQTO?#m^{h zeN8ay^ox$6ByqL^+_C$zGkj0`qQ~zo4xm{^5XfEe-Mc^PP&Kjs zp}36o6JSsjj4v1nN`lt-_w~fVR&vJx7EL$w*s}OQpJ##yb(hmvlea#3elAoQJFA9S z{Z25IlS|k{LSKKI6ZbaatDu|}D=#YpqX!|o?W;7y#SqxvznPyCWqYlWd|M(DA6l1) zg}yp~LK`5;g_7*-`>z$5T-t}ZE~Z~a5*zbk?*I%inhgGePA-4soKjF+TDl`$*h5o5 z*Rf1dvo6)0F|zTAEgpK@nUVS-Vqto~wL{oF(fti^(V~fm}5>XD5>*F{Z z7uUDyyA4$c_^pD%0M1p?15iJWhF#wG+%OHY*lqK!UEnf2{4lC#u?VH4q?8kp@_VBg zCQkVk3PX3w)Oq{%3Q>)pIPM0Y>tmKxm#P}J#djJk{+XY2g2B&^DfFVa$6q~hwohA5 zMG5W&q$W07-m{d?v?N&O`iDkk6+WXW8-2Z6hVNq+``b=k?m68QWiSY%m13+?;J}uG z_-rPqjpe6A1Eqnq{`czY%8A~y^zXHP<+Te%se=ezZiuB9IT@Mr$mFDXf3#A&pr|?<7sm-^|H7 z<$hOR>HGv{Z@WG;f4N6eUi`>4!kQm&aSf2hI@&%yBk_|BEps$PZ$O!Y3&x7D&VUI^ zP^OU6Vsrf+dGJK~$nz-_;s#`bJQ1)Ku{QMjle!SG|3m9bSipt93jDmW+ zu*?wyTwR3Znm53>$?ozlRz*e&=$|rrYa(3+{`ooo2A9aj_Kk z9bH||l~7SpUo+wikB!9*V9S7l>y|196Y1!XKl#g}~wWBFQ@arp#@MY|XjB2=Z$WQ5BH}ofyhZa7H%k;h@3swQeuNW92 z$6JHe>N2HlU2XW-usX&oaD4(h5kq~eKLr0*D6C4ZEZJxxu5hNG%-0SVP;RnPRsn}g zf;DkI>|B;&go9^(RNXEk=+2gfJs7@KC?r$DQ(BleZZVz&3|DC|QPu*NF<)Wo5iR0K zTFE2gNb?h`E7{IjC&-uKngg$aHb5n41S;wHq*z6{!wTvZ2p4Jo1gxzwaO57{LAY!o+a2o z|8jBgr&7zfT3@RZB`2gG6y>Y11X7{{Ff zh&pFaM~qOVMX(9k_*wt>SVd%v z)vxj{ZOxjhMD&#d$GN zMUz{Yktc{&duDn%&(YEGkut1`4_OcFpGqLLUb_0lt<^;3Rzh9cHq%>#8d=hstVdU0 z|ArCoVyrtGuFlgYh%;IIMPGf06J9)-9a*kbbSUxwD?S$Iquhhtto9;Wo|xxI z&>pN%oT2`JFWg+gJNzj z6H(s7aB;G#gCh3GACzQec4+Y52D=mu&OokeN}uznO=WU5^n#U*(MDw@9L0yI^c<0% zpOlh*S9|VaS!MU^SIu(_=fMJ0b{o%657=eu&`r;83R5+oU^{P(qSnMFWGd|Xny#)q zq|rr;H5bpU^9EE>?hHh-6rN{LB8e7D>Mgpyhp^R>UtD?wXkFaZz%RB(S!EypRb!Q$#?Ib~;JbvU zE6yM-{TtJSM5cox*5>40migSw0zb?{?A7MqzCGxR#ug9bB@y+DTC4|B$hU=rJ22A$ z<+l^&uiHC2ZBxpB0*3hUgBqMy+7>g+{MZYSUNO|yTC@CQ6maLiVRUYA-DvjFE8B($u_R8q6>cT99yA?eN!0f6tg$a`--# zTu#U(Ovffewqo?xB~tx&I>6$|^Vg$5F<*mTsX{_G!pT7Rg}OyBHtP|}B7-)8>iE2- zI)DlrkAsWIvJw{#bHl85?1*pNO!62|cPFf}M=MY$ zG-hQow5k?pg5-}ccwr>#p3hD*J3fk>7 z@qi(#qVrX@{v0L^&=o48-X{%s-e2uYMd8y08E>6x4(M8B&G0XWF#>>XRdGN7lOFWS zGAkvF{ZWp`v~4z8wdgOsK26H0jMjV6k0Ys{L4I8Y!zlp8>I0-bb;&hw=+2%9i2wZA;%UZHng2lCCntzCHkcwVVufx zjTHs5wBjIE$=oBOoM5yfMHsFo57R=KyPF$ZzW2uLXQ0;6D*r4R*pBzKK9_0c-j`HV z95|P(nC}jpS9`Ao!kdX%)G2z{>ub^DKhc8#xn(IJj~j61K1(wV`LOyge}TM9mP>HI z^S0a>OWYNgM~{vVnx>rKz}-JM7-aK#4Tq24Tg-2sg9c;_DzTsfqay>TJH`Z8BzI!e z?PZh!r%B_^Zx$a5(g;yzaKxk;!P{P5Ho>;uu)Fnh;kB#x^0Y`5{{VUqDk1O+$NM7< z+S)@0wm;N>mGjGkA;l6@(3LEPh@Xre-=CoXwWP%5R~rshoffWN!x^6gMa2St$qWJ2 zg(Eh{`EOuD(N`fm0@V>0G{US%Ul)o7;OF=5#lKQsxXM}j`2ktO@4M-;mTNouKLy+E zX2p7W`uSt(<_NPN0ge_-FhI9rBcLpcW27f5Q4vvB@^_?a{4@{&t;;03U|g)VG1 zZ$=ez)@FzfCe>-^Uu<-60p{~9EkA$4+$-Mm2w7z82|=iJZ;raV8!u|1tN=Pk8g-E^SNL;MN{ai`CGuJ@ zU1pBs@9q-kfq~Khj^j6K{FxEebJYyNvQrhXXSi0O*>sLCgbp?tu zxctV@a2ILzzq{C;by)L$AdH#8$I27=obxie5-IWASyHlPB9E9F2}Co5a=Q;N!3UCd zh`(;!#B$$>;1!kKp!mOFZJjnG-Dd3!O|Fz`WDg~eQkp@I$+(@`nSg02gMchWq-;2_ z1IQRAW)l$5_i~lgI`hpbHJC9M`(Hdgs9KFsEuS0|M}KKaeQKMGhn)$Snn%!KC%V=I zpb4wirTdOS$!UK_txE)%9D#u>ZXqgm{3BHY{Cy!j(ik7wR$`@1@1yw>{ioXf<50mL zqS@z_fh-18z}0=>Y_!*OIXw@c_nS)YWt+U?mvnC*lv4A%jN(ym1+Et_vw&8qZOGWs zlK8$RL~D|hAIXD488RUpm^b7Xr3om%B(;Frs~bT2Rc(iyO>^qC!`wC<-iYDwC#v}U zn9o+{-*?dUDx0CCTPI=!9cu;)r+SQ`$zkFii_HvOF(%13zXs}&-vcGGXz45T>;+NO X49{e_Nna7z>xrPEpeg?YY!UiD@n+L@ diff --git a/ios/Runner/Assets.xcassets/AppIcon-prod.appiconset/AppIcon-prod-76x76@1x.png b/ios/Runner/Assets.xcassets/AppIcon-prod.appiconset/AppIcon-prod-76x76@1x.png index 1dafe6a11bf89fc232db14ab54e91fa31301e6a6..ea52eb8826f1dfd776b9e855ff1aac97f0af1b86 100644 GIT binary patch delta 4228 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 literal 9513 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 b8~o>gUM{k{M(n^}py1?XzsOWe83+9z!Ukd? diff --git a/ios/Runner/Assets.xcassets/AppIcon-prod.appiconset/AppIcon-prod-83.5x83.5@2x.png b/ios/Runner/Assets.xcassets/AppIcon-prod.appiconset/AppIcon-prod-83.5x83.5@2x.png index a19739e536ab2904f2af56ebafdebb2593a98631..e285f53f8c9e9bcbc9ff1754c81be53fc7d6cf02 100644 GIT binary patch literal 7694 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®GFg9f`2z;>3#jm!f_hiHo6|DcS^H9#L0hiC;j((t=B@3t$-0{Em&;;X^>IM zh5%%snoCVhjVWvj;5jllM()1Liwzp!S!#rYWy?0cIkqTu0r0|LMtvi4}$a6wvE zesI;oGO>hWEGS-cFcaj=j`X-Civmpc-%zmc0LQW*@C<3VRD1}bR-7B^_anl<6o|%Z{F9@qPBl&9z9*eP zqTRRfPQW>C329S%%S%D3*y*0BR94=kO?_HvfIC(C!*0|c^qulDv=2XxnLSOugE%5$ zvm-@+9fyWsql_-In`%D37+94vJ$G*jkTYo44o`9hzy}Nbvp@ljfJLQplrK0v7yLXC z+0@iDh4)We$QozWtPNOy4w=IufA5ey>cZuZvd+)vG-M7jgbXGAEwL+g#C{}?5wK8E zKf_AI6%XHPp6GXE!%w&jLVB$*Q=;0IC>~dXL;l+PFI814Gt^9Db1`Q`MN+%ip7jfbEFR~MQ(Kvs*=lb0EbMVz)M;&?&O~L}AFl^-%OG-_4MGEJpmtj3#223auO2dQi z6AdNh!1Q_}rEGY|)iKIX48n)Y?(|f_pnGzM6HF-4jbheB^o4Zb!3L+_ard>*)MO9G z8)qm!uR`8m#H+$`cI^N^@|BUkD3CG?EHlbSRyc7{z!q$Sw?{p zBoJ_bR`8vFi3-l(866y67|D&|!2_R=B+MhR%9}`{=cz#(L}}ZN`j1)#gvB@#APB?w z!umZrr~Te9pmuEm<{^tY8Ne(0gXaez@#bir^j@6uCfME~qU7v}l5s*v%zK}T>z-+` X2mBkNP;`Xa=S5RiP?xWLZ2|p1xB;~p literal 9780 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 d^1ZVcTs$+({gl*iz`wx|ppuFb6=H_|{|6 Date: Sun, 3 Oct 2021 14:58:14 +0200 Subject: [PATCH 112/146] Fix buggy scrolling --- lib/note_viewer.dart | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/lib/note_viewer.dart b/lib/note_viewer.dart index 45c322a..0589d1a 100644 --- a/lib/note_viewer.dart +++ b/lib/note_viewer.dart @@ -215,6 +215,7 @@ class _NoteViewerState extends State _updateScrollOffset() async { note.scrollOffset = offset; + print("scroll offset: $offset"); await LocalStorage().syncNoteAttr(note, "scrollOffset"); } @@ -275,6 +276,8 @@ class _NoteViewerState extends State List actions = []; if (widget.showZoomPlayback && !isPlaying) { + // check scroll range + //double maxScroll = _scollController.position.maxScrollExtent; actions.addAll([ IconButton( icon: Icon(Icons.play_arrow), @@ -285,16 +288,21 @@ class _NoteViewerState extends State isPlaying = true; }); Future.microtask(() async { - bool atEdge = false; - while (!atEdge && isPlaying) { + int microseconds = 0; + + do { + microseconds = (10000 ~/ offset).toInt(); + //print("waiting $microseconds"); try { await _scollController.animateTo( - _scollController.offset + offset, - duration: Duration(milliseconds: 50), + _scollController.offset + 0.5, + duration: Duration(microseconds: microseconds), curve: Curves.ease); - atEdge = _scollController.position.atEdge; - } catch (e) {} - } + } catch (e) { + print("execption: $e"); + break; + } + } while (!_scollController.position.atEdge && isPlaying); setState(() { isPlaying = false; }); From f7822cbd6d82781ecde25d4e79aec5b27ff5ccfc Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 3 Oct 2021 14:58:31 +0200 Subject: [PATCH 113/146] Do not create a new note every update --- lib/local_storage.dart | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/lib/local_storage.dart b/lib/local_storage.dart index 3ca3f21..27743e1 100644 --- a/lib/local_storage.dart +++ b/lib/local_storage.dart @@ -151,6 +151,7 @@ class LocalStorage { int id = await db.insert(sectionTable, sectionData, conflictAlgorithm: ConflictAlgorithm.replace); + print("insert section ${note.sections[i].title} => $id"); } @@ -171,8 +172,20 @@ class LocalStorage { data.remove('sections'); data.remove('audioFiles'); - int row = await db.insert(noteTable, data, - conflictAlgorithm: ConflictAlgorithm.replace); + // check if note already exists + List noteQuery = await db.query(noteTable, + where: "id = ?", whereArgs: [note.id], limit: 1); + int row; + + if (noteQuery.length == 1) { + row = await db.update(noteTable, data, + where: "id = ?", + whereArgs: [note.id], + conflictAlgorithm: ConflictAlgorithm.replace); + } else { + row = await db.insert(noteTable, data, + conflictAlgorithm: ConflictAlgorithm.replace); + } print("Done Syncing ${note.id} in row $row"); _controller.sink.add(await getNotes()); From 46640cbb6172aae991c1c397371890a5c45fc7a5 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 3 Oct 2021 14:58:42 +0200 Subject: [PATCH 114/146] Set default font size to 10 --- lib/model.dart | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/model.dart b/lib/model.dart index 97bd19b..6b7c949 100644 --- a/lib/model.dart +++ b/lib/model.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; import 'package:flutter_audio_recorder/flutter_audio_recorder.dart'; -import 'package:sound/note_views/appbar.dart'; import 'package:sound/utils.dart'; import 'package:uuid/uuid.dart'; import 'dart:io'; @@ -445,7 +444,7 @@ class Settings { sortBy: SortBy.created, sortDirection: SortDirection.down, name: null, - sectionContentFontSize: 9, + sectionContentFontSize: 10, noteListType: NoteListType.double, editorView: EditorView.tabs); } From 09959ac1769ba11d1e5ef3b2356561f87f7cf6bd Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 3 Oct 2021 14:59:00 +0200 Subject: [PATCH 115/146] Add initial import dialog to dev settings --- lib/settings.dart | 16 ++++++++++++++++ lib/utils.dart | 7 +++++++ 2 files changed, 23 insertions(+) diff --git a/lib/settings.dart b/lib/settings.dart index e15c458..8823539 100644 --- a/lib/settings.dart +++ b/lib/settings.dart @@ -1,3 +1,4 @@ +import 'package:flutter/foundation.dart'; import 'package:flutter_audio_recorder/flutter_audio_recorder.dart'; import 'package:flutter_flux/flutter_flux.dart'; import 'package:flutter/material.dart'; @@ -237,6 +238,20 @@ class SettingsState extends State with StoreWatcherMixin { } } + _initialImportItem() { + if (!isDebug()) { + return Container(); + } else { + return ElevatedButton( + onPressed: () { + showInitialImportDialog(context, (_) { + print("done importing..."); + }); + }, + child: Text("Show Initial Import Dialog")); + } + } + _list() { var items = [ _setName(), @@ -244,6 +259,7 @@ class SettingsState extends State with StoreWatcherMixin { _audioFormatItem(), _editorViewItem(), _changeContentSectionTextSize(), + _initialImportItem(), SizedBox(height: 10), ElevatedButton(child: Text("Backup"), onPressed: _onBackup), SizedBox(height: 10), diff --git a/lib/utils.dart b/lib/utils.dart index a572f8d..0e5b1b1 100644 --- a/lib/utils.dart +++ b/lib/utils.dart @@ -185,3 +185,10 @@ String resolveRichContent(String data) { } return resolved.join("\n"); } + +bool isDebug() { + const flavor = String.fromEnvironment('app.flavor'); + print("flavor: $flavor"); + if (flavor == 'dev') return true; + return !kReleaseMode; +} From 07fbcaeaf05f506ed090a1c25786639170185514 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 3 Oct 2021 16:43:14 +0200 Subject: [PATCH 116/146] Add title to zip export --- lib/export.dart | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/export.dart b/lib/export.dart index f8bc8f7..9a4d87a 100644 --- a/lib/export.dart +++ b/lib/export.dart @@ -245,7 +245,8 @@ class Exporter { static Future zip(List notes, {List collections, String title}) async { return await Backup().exportZip(notes, - collections: collections, filename: getFilename(notes, 'zip')); + collections: collections, + filename: getFilename(notes, 'zip', title: title)); } static Future exportShare(List notes, ExportType t, From 71fb4693c4ffa091b782ff107aa198590a295d1b Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 3 Oct 2021 16:59:33 +0200 Subject: [PATCH 117/146] Add share as icon --- lib/note_editor.dart | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/lib/note_editor.dart b/lib/note_editor.dart index 0466739..0c61c91 100644 --- a/lib/note_editor.dart +++ b/lib/note_editor.dart @@ -83,10 +83,9 @@ class NoteEditorState extends State RecorderBottomSheetStore recorderStore; NoteEditorStore store; GlobalKey _globalKey = GlobalKey(); - List popupMenuActions = ["export", "share", "copy", "add", 'delete']; + List popupMenuActions = ["export", "copy", "add", 'delete']; List popupMenuActionsLong = [ "Export", - "Share", "Copy", "Add to Set", "Delete" @@ -488,6 +487,21 @@ class NoteEditorState extends State }, ); + var colorPicker = Stack(alignment: Alignment.center, children: [ + IconButton( + icon: Icon(Icons.color_lens), + onPressed: () => + showColorPickerDialog(context, store.note.color, changeColor)), + Positioned( + bottom: 17, + right: 14, + child: Container( + decoration: BoxDecoration( + color: store.note.color, + borderRadius: BorderRadius.circular(10)), + height: 10, + width: 10)), + ]); // actions List actions = [ // IconButton( @@ -497,21 +511,7 @@ class NoteEditorState extends State icon: Icon((store.note.starred) ? Icons.star : Icons.star_border), onPressed: toggleStarred), IconButton(icon: icon, onPressed: _onFloatingActionButtonPress), - Stack(alignment: Alignment.center, children: [ - IconButton( - icon: Icon(Icons.color_lens), - onPressed: () => - showColorPickerDialog(context, store.note.color, changeColor)), - Positioned( - bottom: 17, - right: 14, - child: Container( - decoration: BoxDecoration( - color: store.note.color, - borderRadius: BorderRadius.circular(10)), - height: 10, - width: 10)), - ]), + IconButton(icon: Icon(Icons.share), onPressed: _sharePdf), IconButton( icon: Icon(Icons.play_circle_filled), onPressed: () { From 1cd4a100efdf37a08740f210321a52905e3b854f Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 3 Oct 2021 18:26:54 +0200 Subject: [PATCH 118/146] Add note collection delete/export as popup menu --- lib/collections.dart | 52 +++++++++++++++++++++++++-- lib/dialogs/confirmation_dialogs.dart | 10 ++++++ 2 files changed, 60 insertions(+), 2 deletions(-) diff --git a/lib/collections.dart b/lib/collections.dart index a8f8fbd..d3f129e 100644 --- a/lib/collections.dart +++ b/lib/collections.dart @@ -3,7 +3,9 @@ import 'package:flutter_flux/flutter_flux.dart'; import 'package:sound/collection_editor_store.dart'; import 'package:sound/db.dart'; import 'package:sound/dialogs/choose_note_dialog.dart'; +import 'package:sound/dialogs/confirmation_dialogs.dart'; import 'package:sound/dialogs/export_dialog.dart'; +import 'package:sound/export.dart'; import 'package:sound/local_storage.dart'; import 'package:sound/model.dart'; import 'package:sound/collections_store.dart'; @@ -268,6 +270,33 @@ class _CollectionEditorState extends State collections: [store.collection], title: title); } + _onSharePDF() async { + String title = + (store.collection.title.trim() == "" ? null : store.collection.title); + await Exporter.exportShare(store.collection.notes, ExportType.PDF, + title: title); + } + + _onDelete() { + showNoteCollectionDeleteDialog(context, store.collection, () async { + await LocalStorage().deleteCollection(store.collection); + Navigator.of(context).pop(); + }); + } + + _runPopupAction(String action) { + switch (action) { + case "delete": + _onDelete(); + break; + case "export": + _onExport(); + break; + default: + break; + } + } + @override Widget build(BuildContext context) { var notes = []; @@ -328,7 +357,8 @@ class _CollectionEditorState extends State ))); List actions = [ - IconButton(icon: Icon(Icons.share), onPressed: _onExport), + IconButton(icon: Icon(Icons.share), onPressed: _onSharePDF), + //IconButton(icon: Icon(Icons.share), onPressed: _onExport), IconButton(icon: Icon(Icons.play_circle), onPressed: _onPlay), IconButton( icon: @@ -336,6 +366,24 @@ class _CollectionEditorState extends State onPressed: toggleCollectionStarred), ]; + List popupMenuActions = ["export", "delete"]; + List popupMenuActionsLong = [ + "Export", + "Delete", + ]; + + PopupMenuButton popup = PopupMenuButton( + onSelected: _runPopupAction, + itemBuilder: (context) { + return popupMenuActions.map>((String action) { + int index = popupMenuActions.indexOf(action); + + return PopupMenuItem( + value: action, child: Text(popupMenuActionsLong[index])); + }).toList(); + }, + ); + return WillPopScope( onWillPop: () async { if (store.collection.empty) { @@ -358,7 +406,7 @@ class _CollectionEditorState extends State ), appBar: AppBar( //backgroundColor: store.note.color, - actions: actions, + actions: actions..add(popup), title: Text("Edit Set"), ), body: Container(child: Stack(children: stackChildren))), diff --git a/lib/dialogs/confirmation_dialogs.dart b/lib/dialogs/confirmation_dialogs.dart index 8d38e49..ffcf7db 100644 --- a/lib/dialogs/confirmation_dialogs.dart +++ b/lib/dialogs/confirmation_dialogs.dart @@ -13,6 +13,16 @@ showDeleteDialog(BuildContext context, Note note, Function onDelete) async { "Note is part of a collection. When removing this note it will be automatically removed from its collections. \n Are you sure you want to delete this note?"; } + _deleteDialog(context, message, onDelete); +} + +showNoteCollectionDeleteDialog( + BuildContext context, NoteCollection c, Function onDelete) async { + String message = "Are you sure you want to delete this collection?"; + _deleteDialog(context, message, onDelete); +} + +_deleteDialog(BuildContext context, String message, Function onDelete) { showDialog( context: context, builder: (context) { From 6bd30a6cff29ddc3f97883ec745a4ecd60f462a8 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 3 Oct 2021 21:12:29 +0200 Subject: [PATCH 119/146] Fix app bar icon color --- lib/main.dart | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 9f989bc..c9443ca 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -103,9 +103,11 @@ class AppState extends State with StoreWatcherMixin { highlightColor: Colors.black54, cardColor: Colors.grey.shade800, selectedRowColor: mainColor, + //iconTheme: ThemeData.dark().iconTheme.copyWith(color: Colors.white), appBarTheme: ThemeData.dark().appBarTheme.copyWith( - brightness: Brightness.dark, + brightness: Brightness.light, color: appBarColor, + foregroundColor: Colors.white, textTheme: ThemeData.dark().textTheme //titleTextStyle: ThemeData.dark() // .appBarTheme @@ -185,7 +187,7 @@ class AppState extends State with StoreWatcherMixin { )); return MaterialApp( - //debugShowCheckedModeBanner: false, + debugShowCheckedModeBanner: false, title: 'SketChord', theme: store.theme == SettingsTheme.dark ? dark : light, home: Menu()); From 01ae649f8e2049362d5d1abc1fe1f78477b0c01b Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 3 Oct 2021 21:12:47 +0200 Subject: [PATCH 120/146] Add .gradle to gitignore --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 98e71d9..9cf5c93 100644 --- a/.gitignore +++ b/.gitignore @@ -47,4 +47,5 @@ settings.json backend/data/ backend/data.json -android/app/google-services.json \ No newline at end of file +android/app/google-services.json +.gradle/ \ No newline at end of file From 10e3a090cbcd5ad63e7d43c14886e4fa49670569 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 19 Dec 2021 11:55:48 +0100 Subject: [PATCH 121/146] Build bundle with prod --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ffe8e77..e210411 100644 --- a/README.md +++ b/README.md @@ -9,4 +9,4 @@ flutter run --flavor dev # Create Release 1. Change Version -2. Build bundle `flutter build appbundle` \ No newline at end of file +2. Build bundle `flutter build appbundle --flavor prod` \ No newline at end of file From 56fdd52f30766ba4ac3af348c197942e8706bfff Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 19 Dec 2021 11:55:55 +0100 Subject: [PATCH 122/146] Update vrsion --- pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pubspec.yaml b/pubspec.yaml index f2fe520..0156a26 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -15,7 +15,7 @@ publish_to: "none" # Remove this line if you wish to publish to pub.dev # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. # Read more about iOS versioning at # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html -version: 1.1.1 +version: 1.1.1+3 environment: sdk: ">=2.7.0 <3.0.0" From 3689ce824e09c72bb466621350786275d29942a6 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 19 Dec 2021 15:19:18 +0100 Subject: [PATCH 123/146] Add text to audioFile --- lib/local_storage.dart | 39 ++++++++++++++++++++++++++++++++++++++- lib/model.dart | 12 ++++++++---- 2 files changed, 46 insertions(+), 5 deletions(-) diff --git a/lib/local_storage.dart b/lib/local_storage.dart index 27743e1..351b63d 100644 --- a/lib/local_storage.dart +++ b/lib/local_storage.dart @@ -47,6 +47,14 @@ final migrations = { 4: { 3: [ "ALTER TABLE $noteTable DROP COLUMN length", + ], + 5: [ + "ALTER TABLE $audioFileTable ADD text TEXT", + ] + }, + 5: { + 4: [ + "ALTER TABLE $audioFileTable DROP COLUMN text", ] } }; @@ -117,7 +125,7 @@ class LocalStorage { }, // Set the version. This executes the onCreate function and provides a // path to perform database upgrades and downgrades. - version: 4); + version: 5); } Future createDatabase(Database db) async { @@ -192,6 +200,14 @@ class LocalStorage { return row; } + Future addAudioIdea(AudioFile f) async { + Database db = await getDatabase(); + + Map autdioFileData = f.toJson(); + return await db.insert(audioFileTable, autdioFileData, + conflictAlgorithm: ConflictAlgorithm.replace); + } + Future> getSections(String noteId) async { List> maps = await (await getDatabase()) .query(sectionTable, where: 'noteId = ?', whereArgs: [noteId]); @@ -215,6 +231,16 @@ class LocalStorage { return maps.map((s) => AudioFile.fromJson(s)).toList(); } + Future> getAudioIdeas() async { + List> maps = await (await getDatabase()) + .query(audioFileTable, where: 'noteId IS NULL', whereArgs: []); + if (maps == null) return []; + + // copy maps to sort them properly + maps = maps.map((m) => Map.from(m)).toList(); + return maps.map((s) => AudioFile.fromJson(s)).toList(); + } + Future parseNote(Map data) async { String noteId = data['id']; if (noteId == null) return null; @@ -366,12 +392,23 @@ class LocalStorage { } Future _deleteAudioFile(AudioFile audioFile) async { + var db = await getDatabase(); + await db.delete( + audioFileTable, + where: 'id = ?', + whereArgs: [audioFile.id], + ); + if (audioFile.file.existsSync()) { FileSystemEntity e = await audioFile.file.delete(); } return !audioFile.file.existsSync(); } + Future deleteAudioIdea(AudioFile audioFile) async { + return _deleteAudioFile(audioFile); + } + Future deleteNote(Note note) async { final db = await getDatabase(); diff --git a/lib/model.dart b/lib/model.dart index 6b7c949..ba403cf 100644 --- a/lib/model.dart +++ b/lib/model.dart @@ -23,7 +23,7 @@ String serializeRangeValues(RangeValues v) { } class AudioFile { - String path, id, name; + String path, id, name, text; DateTime createdAt, lastModified; RangeValues loopRange; @@ -40,7 +40,8 @@ class AudioFile { this.createdAt, this.lastModified, this.name, - this.loopRange}) { + this.loopRange, + this.text}) { //print("creating audio file with ${this.name} ${this.id}"); if (id == null) id = Uuid().v4().toString(); if (createdAt == null) createdAt = DateTime.now(); @@ -57,14 +58,15 @@ class AudioFile { } factory AudioFile.create( - {String path, Duration duration, String id, String name}) { + {String path, Duration duration, String id, String name, String text}) { return AudioFile( createdAt: DateTime.now(), lastModified: DateTime.now(), path: path, duration: duration, id: id, - name: name); + name: name, + text: text); } factory AudioFile.fromJson(Map map) { @@ -73,6 +75,7 @@ class AudioFile { lastModified: deserializeDateTime(map["lastModified"]), duration: deserializeDuration(map["duration"]), loopRange: deserializeRangeValues(map['loopRange']), + text: (map.containsKey("text") ? map['text'] : ""), id: map["id"], name: map['name'], path: map["path"]); @@ -86,6 +89,7 @@ class AudioFile { "id": id, "path": path, "name": name, + "text": text, "duration": serializeDuration(duration) }; } From 10c5580e88b0bda98882349635b919c8f588782d Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 19 Dec 2021 15:19:29 +0100 Subject: [PATCH 124/146] Fix always showing import message --- lib/intent_receive.dart | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/intent_receive.dart b/lib/intent_receive.dart index 4d86384..85e6aa2 100644 --- a/lib/intent_receive.dart +++ b/lib/intent_receive.dart @@ -29,7 +29,9 @@ setupIntentReceivers(BuildContext context) { (f) => audioExtensions.any((e) => f.path.toLowerCase().endsWith(e))); if (_validFiles.length == 0) { - showDataInvalidSnack(context); + if (value.length > 0) { + showDataInvalidSnack(context); + } return; } From 9ee941f109242443275f7a07ed971b432bb3e38f Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 19 Dec 2021 15:19:55 +0100 Subject: [PATCH 125/146] Add background color to showSnack --- lib/utils.dart | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/utils.dart b/lib/utils.dart index 0e5b1b1..f982f02 100644 --- a/lib/utils.dart +++ b/lib/utils.dart @@ -42,7 +42,7 @@ List itemsByFrequency(List input) => [ ..update(letter, (value) => value + 1, ifAbsent: () => 1)) .entries .toList() - ..sort((e1, e2) => e2.value.compareTo(e1.value))) + ..sort((e1, e2) => e2.value.compareTo(e1.value))) .map((e) => e.key) ]; @@ -114,8 +114,9 @@ showSnack(ScaffoldState state, String message, } showSnackByContext(BuildContext context, String message, - {Duration duration = defaultDuration}) { + {Duration duration = defaultDuration, Color backgroundColor}) { var snackbar = SnackBar( + backgroundColor: backgroundColor, content: Text(message, style: Theme.of(context).appBarTheme.textTheme.bodyText1), duration: duration); From a4550f06cf6ab0305727233e62c86c7d9f3b753b Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 19 Dec 2021 15:20:30 +0100 Subject: [PATCH 126/146] Add max selectable to search --- lib/note_search_view.dart | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/lib/note_search_view.dart b/lib/note_search_view.dart index 1d806c2..cd6e18b 100644 --- a/lib/note_search_view.dart +++ b/lib/note_search_view.dart @@ -25,7 +25,10 @@ import 'db.dart'; class NoteSearchViewLoader extends StatelessWidget { final NoteCollection collection; final ValueChanged> onAddNotes; - const NoteSearchViewLoader({this.collection, this.onAddNotes, Key key}) + final int maxSelectable; + + const NoteSearchViewLoader( + {this.collection, this.onAddNotes, this.maxSelectable = -1, Key key}) : super(key: key); @override @@ -46,7 +49,9 @@ class NoteSearchViewLoader extends StatelessWidget { }).toList()); return _NoteSearchView( - collection: collection, onAddNotes: onAddNotes); + collection: collection, + onAddNotes: onAddNotes, + maxSelectable: maxSelectable); } }, future: LocalStorage().getActiveNotes()); @@ -57,8 +62,8 @@ class NoteSearchViewLoader extends StatelessWidget { class _NoteSearchView extends StatefulWidget { final NoteCollection collection; final ValueChanged> onAddNotes; // function that will be called - - _NoteSearchView({this.collection, this.onAddNotes}); + final int maxSelectable; + _NoteSearchView({this.collection, this.onAddNotes, this.maxSelectable = -1}); @override State createState() { @@ -195,11 +200,17 @@ class _NoteSearchViewState extends State<_NoteSearchView> _sliver() { onTap(Note note) { - triggerSelectNote(note); + if (widget.maxSelectable == -1 || + (storage.selectedNotes.length < widget.maxSelectable)) { + triggerSelectNote(note); + } } onLongPress(Note note) { - triggerSelectNote(note); + if (widget.maxSelectable == -1 || + (storage.selectedNotes.length < widget.maxSelectable)) { + triggerSelectNote(note); + } } List noteList = []; From c5f2df5f6adb1bdf600d8dff58e98c7a01a54928 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 19 Dec 2021 15:21:00 +0100 Subject: [PATCH 127/146] Add initial audio list draft --- lib/audio_list.dart | 212 +++++++++++++++++++++++++++ lib/audio_list_store.dart | 26 ++++ lib/dialogs/audio_action_dialog.dart | 67 ++++++++- lib/editor_views/audio.dart | 27 ++-- lib/menu.dart | 6 +- 5 files changed, 323 insertions(+), 15 deletions(-) create mode 100644 lib/audio_list.dart create mode 100644 lib/audio_list_store.dart diff --git a/lib/audio_list.dart b/lib/audio_list.dart new file mode 100644 index 0000000..3ce6b33 --- /dev/null +++ b/lib/audio_list.dart @@ -0,0 +1,212 @@ +import 'package:audioplayers/audioplayers.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_flux/flutter_flux.dart'; +import 'package:sound/audio_list_store.dart'; +import 'package:sound/dialogs/audio_action_dialog.dart'; +import 'package:sound/dialogs/import_dialog.dart'; +import 'package:sound/dialogs/permissions_dialog.dart'; +import 'package:sound/editor_views/audio.dart'; +import 'package:sound/file_manager.dart'; +import 'package:sound/local_storage.dart'; +import 'package:sound/model.dart'; +import 'package:sound/recorder_bottom_sheet.dart'; +import 'package:sound/recorder_store.dart'; +import 'package:sound/share.dart'; +import 'package:sound/utils.dart'; + +class AudioList extends StatefulWidget { + final Function onMenuPressed; + AudioList(this.onMenuPressed); + + @override + State createState() { + return AudioListState(); + } +} + +class AudioListState extends State + with StoreWatcherMixin { + GlobalKey _globalKey = GlobalKey(); + AudioListStore store; + RecorderBottomSheetStore recorderStore; + + @override + void initState() { + super.initState(); + store = listenToStore(audioListToken); + recorderStore = listenToStore(recorderBottomSheetStoreToken); + + recordingFinished.clearListeners(); + recordingFinished.listen((f) async { + print("recording finished ${f.path} with duration ${f.duration}"); + + final player = AudioPlayer(); + await player.setUrl(f.path); + + return Future.delayed( + const Duration(milliseconds: 200), + () async { + f.duration = Duration(milliseconds: await player.getDuration()); + addAudioIdea(f); + }, + ); + }); + + audioRecordingPermissionDenied.listen((_) { + showHasNoPermissionsDialog(context); + }); + } + + @override + void dispose() { + recordingFinished.clearListeners(); + audioRecordingPermissionDenied.clearListeners(); + //store.dispose(); + //recorderStore.dispose(); + super.dispose(); + } + + _onMenu() { + if (recorderStore.state == RecorderState.RECORDING) { + showSnackByContext(_globalKey.currentContext, + "You cannot open the menu while you are still recording", + backgroundColor: Theme.of(_globalKey.currentContext).errorColor); + return; + } else { + stopAction(); + } + + widget.onMenuPressed(); + } + + showRecordingButton() { + return (recorderStore.state == RecorderState.RECORDING) || + (recorderStore.state == RecorderState.STOP); + } + + _onDelete(AudioFile f) { + deleteAudioIdea(f); + } + + _onMove(AudioFile f) { + showMoveToNoteDialog(context, () { + setState(() {}); + Navigator.of(context).pop(); + }, f); + } + + _onShare(AudioFile f) { + shareFile(f.path); + } + + @override + Widget build(BuildContext context) { + return ScaffoldMessenger( + child: Scaffold( + key: _globalKey, + appBar: AppBar( + leading: IconButton( + icon: Icon(Icons.menu), + onPressed: _onMenu, + ), + title: Text("Ideas")), + bottomSheet: showRecordingButton() + ? null + : RecorderBottomSheet(key: Key("idea-bottom-sheet"), showTitle: true), + floatingActionButton: showRecordingButton() + ? FloatingActionButton( + child: (recorderStore.state == RecorderState.RECORDING) + ? Icon(Icons.stop) + : Icon(Icons.mic), + backgroundColor: (recorderStore.state == RecorderState.RECORDING) + ? Theme.of(context).errorColor + : null, + onPressed: () { + if (recorderStore.state == RecorderState.STOP) { + startRecordingAction(); + } else if (recorderStore.state == RecorderState.RECORDING) { + stopAction(); + } + }) + : null, + body: Container( + padding: EdgeInsets.all(8), + child: FutureBuilder>( + initialData: [], + future: LocalStorage().getAudioIdeas(), + builder: (context, AsyncSnapshot> snap) { + return ListView.builder( + itemCount: snap.data.length, + itemBuilder: (context, index) { + AudioFile f = snap.data[index]; + + return AudioFileView( + index: index, + globalKey: _globalKey, + file: snap.data[index], + onDelete: () => _onDelete(f), + onDuplicate: null, + onMove: () => _onMove(f), + onShare: () => _onShare(f)); + }); + })), + )); + } +} + + +/* + + items[TabType.audio].add(AudioFileView( + file: f, + index: index, + onDuplicate: () async { + AudioFile copy = await FileManager().copyToNew(f); + addAudioFile(copy); + }, + onDelete: () => _onAudioFileDelete(f, index), + onMove: () { + showImportDialog(context, "Copy audio to", () async { + // new audio file + + AudioFile copy = await FileManager().copyToNew(f); + Future.delayed(Duration(milliseconds: 200), () { + showSnack(_globalKey.currentState, + "The audio file as copiedr to a new note"); + }); + Note note = Note.empty(); + note.audioFiles.add(copy); + + // manual sync + LocalStorage().syncNote(note); + return note; + }, (Note note) async { + AudioFile copy = await FileManager().copyToNew(f); + + Future.delayed(Duration(milliseconds: 200), () { + showSnack(_globalKey.currentState, + "The audio file as copied to a ${note.title}"); + }); + + if (note.id == widget.note.id) { + copy.name += " - copy"; + addAudioFile(copy); + } else { + // manual sync + note.audioFiles.add(copy); + LocalStorage().syncNote(note); + } + + return note; + }, + openNote: false, + syncNote: + false, // do not sync note, because otherwise this component gets updated twice + importButtonText: "Copy", + ignoreNoteId: store.note.id, + newButtonText: "Copy as NEW"); + }, + onShare: () => shareFile(f.path), + globalKey: _globalKey)); + }); +*/ \ No newline at end of file diff --git a/lib/audio_list_store.dart b/lib/audio_list_store.dart new file mode 100644 index 0000000..93a3891 --- /dev/null +++ b/lib/audio_list_store.dart @@ -0,0 +1,26 @@ +import 'package:flutter_flux/flutter_flux.dart' show Action, Store, StoreToken; +import 'package:sound/local_storage.dart'; +import 'package:sound/model.dart'; + +class AudioListStore extends Store { + // default values + + AudioListStore() { + // init listener + addAudioIdea.listen((AudioFile f) async { + int row = await LocalStorage().addAudioIdea(f); + print("Added audio file row $row"); + trigger(); + }); + + deleteAudioIdea.listen((AudioFile f) async { + await LocalStorage().deleteAudioIdea(f); + trigger(); + }); + } +} + +Action addAudioIdea = Action(); +Action deleteAudioIdea = Action(); + +StoreToken audioListToken = StoreToken(AudioListStore()); diff --git a/lib/dialogs/audio_action_dialog.dart b/lib/dialogs/audio_action_dialog.dart index c1f2479..852a65d 100644 --- a/lib/dialogs/audio_action_dialog.dart +++ b/lib/dialogs/audio_action_dialog.dart @@ -1,4 +1,9 @@ import 'package:flutter/material.dart'; +import 'package:sound/file_manager.dart'; +import 'package:sound/local_storage.dart'; +import 'package:sound/model.dart'; +import 'package:sound/note_editor.dart'; +import 'package:sound/note_search_view.dart'; class AudioAction { final IconData icon; @@ -8,10 +13,26 @@ class AudioAction { AudioAction(this.id, this.icon, this.description); } -showAudioActionDialog(BuildContext context, List actions, +enum AudioActionEnum { share, move, duplicate, copy, move_to_new, search } + +var enum2Action = { + AudioActionEnum.duplicate: + AudioAction(AudioActionEnum.duplicate.index, Icons.copy, "Duplicate"), + AudioActionEnum.move: + AudioAction(AudioActionEnum.move.index, Icons.move_to_inbox, "Move"), + AudioActionEnum.move_to_new: AudioAction( + AudioActionEnum.move_to_new.index, Icons.new_label, "Move to New"), + AudioActionEnum.search: + AudioAction(AudioActionEnum.search.index, Icons.search, "Search"), + AudioActionEnum.share: + AudioAction(AudioActionEnum.share.index, Icons.share, "Share"), +}; + +showAudioActionDialog(BuildContext context, List actionEnums, ValueChanged onActionPressed) { // actions are an icon with a descrition unterneath it + var actions = actionEnums.map((x) => enum2Action[x]).toList(); showDialog( context: context, builder: (context) { @@ -38,3 +59,47 @@ showAudioActionDialog(BuildContext context, List actions, ); }); } + +showMoveToNoteDialog(BuildContext context, Function onDone, AudioFile f) { + // actions are an icon with a descrition unterneath it + onMoveToNew() async { + // create a new note + Note note = Note.empty(); + note.audioFiles.add(f); + + // manual sync + await LocalStorage().syncNote(note); + // open the note + onDone(); + + Navigator.of(context) + .push(new MaterialPageRoute(builder: (context) => NoteEditor(note))); + } + + onSearch() { + Navigator.push( + context, + new MaterialPageRoute( + builder: (context) => NoteSearchViewLoader( + collection: NoteCollection.empty(), + onAddNotes: (List notes) { + print("selected notes: ${notes.map((e) => e.title)}"); + onDone(); + }, + ))).then((value) { + onDone(); + }); + } + + var id2action = { + AudioActionEnum.move_to_new.index: onMoveToNew, + AudioActionEnum.search.index: onSearch, + }; + var order = [ + AudioActionEnum.move_to_new, + AudioActionEnum.search, + ]; + showAudioActionDialog(context, order, (value) { + id2action[value.id](); + }); +} diff --git a/lib/editor_views/audio.dart b/lib/editor_views/audio.dart index ff94d73..5d45cbd 100644 --- a/lib/editor_views/audio.dart +++ b/lib/editor_views/audio.dart @@ -120,20 +120,21 @@ class AudioFileView extends StatelessWidget { if (d == DismissDirection.startToEnd) { return true; } else { - showAudioActionDialog(context, [ - AudioAction(0, Icons.share, "Share"), - AudioAction(1, Icons.move_to_inbox, "Move"), - AudioAction(2, Icons.copy, "Duplicate"), - ], (action) { - Navigator.of(context).pop(); + var id2action = { + AudioActionEnum.share.index: onShare, + AudioActionEnum.move.index: onMove, + }; + var order = [ + AudioActionEnum.share, + AudioActionEnum.move, + ]; - if (action.id == 0) { - // shareFile(file.path); - onShare(); - } else if (action.id == 1) { - onMove(); - } else if (action.id == 2) { - onDuplicate(); + showAudioActionDialog(context, order, (action) { + Navigator.of(context).pop(); + if (id2action.containsKey(action.id)) { + if (id2action[action.id] != null) { + id2action[action.id](); + } } }); // shareFile(file.path); diff --git a/lib/menu.dart b/lib/menu.dart index e6aa363..a03b4bb 100644 --- a/lib/menu.dart +++ b/lib/menu.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:sound/audio_list.dart'; import 'package:sound/home.dart'; import 'package:sound/intent_receive.dart'; import 'package:sound/collections.dart'; @@ -14,7 +15,7 @@ class Menu extends StatefulWidget { } } -enum MenuItem { HOME, SETTINGS, TRASH, SETS } +enum MenuItem { HOME, SETTINGS, TRASH, SETS, AUDIO } class MenuOption { MenuItem item; @@ -36,6 +37,7 @@ class _MenuState extends State

V;#F~d;V6BUo+-U7_v9nN(wcnVF9^K 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¥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 z zQ0Y}tS+oYVc6b*8?En_$TXt{-^Sdx&9;G@mO5>*UF200ox>YD#k^da^+8DI}$uHqi z1BxOMO^07?2~QI>3kHaWN5WzTXTq*ob*%sG{zJ!Z*bChD5BApOZeur5-!T|vMBH#J zbdnSCv)7f(nkY)n+)-Xt%3^-D*2}8A%V8r0^DB0pR)#QVidikFAj)!uGM^5_T z=ILX2$;S^obzzaeKX;YwUP~UGEH{svxL02v|IgHAOS#jFtLJ686#rMxfE|Bo9l9`4izHW+`Gt zh-eS@u5f;dE!deV@bT&1R37soub9X^QvVU-20bRAC}mVTIV>XlM(&d2(jmeMsh=Mk z36E*X{{37_j#6&q7S&05hgFa4IY0MX)iFA9PVs=IiAMk3ddRp#@{@u<9Y<#9XiPt^oYhF5J88?2P$=v8=~fBXvhF5N1EXw zEFCnr$kSl5268fn{vDk9hI*Oyx~R@hLEuUQs4UHSx$O_V_)hNMKq;1Bvo5R#p>mJR zc##OnUfweG#1|mzzvU9U=YdwaU$NBM4eZWUV{>=Zf{eK}&n-p26cZkV)R+Z7!hp&! zyI|6w1SPENG-_B7<4%K=@BrV_O#Y((UCitTqp1Q(tqzlB^_y4y_=n;yP4U-T`(I%9 zVHGB<$^Dw9k7K=*;>LP$5eW#OlyKcNESiEhl7hQ1xG1cF(^lo5=4M=V&prIR;+_3s zu8mb;EjDmQ?o8olkhroCQ!ECZ&Qy$<&c#J0$*hCjT=(w&4C>0!KPT_6OYg6((P3mb zdd?8%Lu?~jpQ!)Y1#`~1;EoIKs7v2_Z~FZEsX=$PQ1UZD2P;8P zZ3Ph}L1ZXc>zocV&#SAlO6H8aV>R`fKz-O9chyGAD`|y+gfLUBXK}wE=&^!GHpk8b z1ZxfGC|bo;sIEaHoLW>fvrsfM6P5i;wGdM!Ve< zLKeqp3y0Zu*2_e-LJKu?okvkSpUI>lMDa?k)M6<(bksA5L#A5fIAIu2xiKf$d>s?k zoOgz~rgdGQn6>k#Z%{g$GS2&r=U2_{{}NXr<`OUvUgo> znhCaB#4+v@;UXU}A024k>}& ziG!;B2uTE4gxPl_lHlOMscFWY*U^t;wUrBXglG`3!}3KRi&_y)lyEvkB;LqHFAQU0 zFU?(d*2n!@*_>r({y1}GMK5Y`sq7dj`Eg3vcspDyrFB|*Ec`y_BiXVy}0w@ zTQ6F7;u`h>dt*joa#di8*MR#BGMU%$<9MZmr8#qtU>NvvC&1;=JfuEjOzfA60Y4C# z$)MBh=ASBXrMXd}8N9$}(;D^q;v)4{@}aE#5CgcY{fE#ffnx>}l5U2+boBiFD{sA$ zCGfBrU;G+8}isO06jUi=|K`UK(j=MBm_OL+%Z0 z<4nz2<<3+I-gOS@?H|_s40U94l$JyML;eL9CEhEtdL$IZ5-}!<;ydV|JC1FqJ%9)x z2Hn9CNa3axjc`Of29LiR-7D$+-gi5D(c$gg5BU!#v+#t^)XncIqc{t{g#67R)HR z#a?`}cRxP*8=o9aB1V^a93MMpO_TKYx^)O!4%|HOgm9a%4IGQVfP;4ww=VMk*n#K+ z+3_gOFrYvpZ-1$tLgTQ)xZ9>SHcpz{&^WcCaq{HG#%a^gv2YLW<9NPfL3m(~;6|Fn z0E4NxRO7)=d;a+jU|*4rHKLj(5Gd7Zg;M&d$Ag;BzbZvqgT>~PiDdW}HaC~CjBuo8STG3>cL)MZ|Lo9s8ccwX< zrTR*b^!5bv2owWYOH9S)S;0u4bVR1PseCcU$<(>@C8ciENKBIU3$JRe*c>KQO6;T) z0W|!0b+!?p*K>@3UqO*M3!qs;VTvn}WmLhATs{9BBl-ZeOGyrduJEmk&Io=(OTVEF zSrFO6`z*zv*)Bmrx`RmSG8C%-wp~agNmjkoZHDzS4hakvTbYJ$vfnGC_mOI`-}K^K zy$d5|DN+P^=4QyI=`Vb%dfBx#SENK7G!6Nq5TY);_D}~=I(z=dmFK;Tmzqz|C=_j~ zs=lD1EPVxDlP~tefk|wE&{>cJSMJaoVMgQVXdFLgCFW9&(1Cun*ioLu+gPL6CDq><7>P}WLf|v=(fZ0x^I#kW{KmW~vjRTW- zm-ragEYGhge06e77iz-?*ZiOVCO-W^&9j<4JVDnfBsFPvOj9N3G*#>qwcF#r`G535 zJjnj4z8}{lB=BBfCTY-ot*N3)zW?ffg_hi=;WW~u0Ye8&FU6zMD4d+06x)*#kP6=? z6q6&HAh}^MW)nm8T%83P{BGJ|M2BOhL4jnOs(nT3hC%OK}!1#W{2- zCu`IGf%oTWqS2n@he{KjrkZ^vT~E7(?)2~ffByP4v+({rKj`}LZow$MM*N_=`+NV3 zy)Xr98}oY>^=MV>m~it#;E@{2G|Ne{r#r-~d%KmF)FMjnaL@k2M z8BtGYx^#IdVlr}RxKt@!Qo6NNE0?lT6tJSS4#$`3ivI~~;2s_ww&&3CG|*SLjuK1- zLs4Jaw%mp;FxeKiDF}3KwE<3<*@j=oKVuD{1$YC`N}mtPEKLJ@ai9qqj})>?;V^pc zRH7^nEf4W@h*?6RP+Mp|P&hRqMYd%_N}?i*$uy}HVo@sdRr>t%*Hr6+|EgZ6DhD+U z7!A{eevcRvii@cTaT)2?F+2%hL|u~9?g}} z8%A#(EsoC9pnfSWP9LJuA-73t6)(Z+dAg>V8*-+g%_BaBJ(t(!Bw_z&zX@EUAH!my zI_@V)x@t0*)^ZDWO|9@MzQ0znO5*ehT@#i}5Su1Ul89Y2qoLS^Mt>ClPNur%$z+;& zpb#f>8>EyiW{;KJWy91zHx*N>HP9Xy$b$QTo7cG4yN>}l#4WowxO?0ZYNBy}C`zvH zq_#$qXY~-+WRd*uy|VcOkMf<;qCCw&t4861f~1W4T%Zx=`!4r$n%WUY`P>r!R=-xp zNLSqINs0XruK^EU?KKsbAY>2ATO2sD(_qa)IUZ5scmeoBYqrTd!OJyXhnJ&KTW#3T z25k^X9+N@uCSVkgXxO1|!B`@rpkT6{ewQpGen@M$g4rw!>irfsnl9JiO*Xv;j=OWW zDDLvZX-BP&cV#*w_Z}pt+>@q8<`e-q!iL488$k-Bvpny+DHB9KZ|}Q>&^B4+aCPI+ zd|5>y!`KKH9$}0;=mKIm8S#_xv%Y`zq^ozVxBjbg%k3jFxs~i?d(pg&&5!#1UDwZ@ za7IH}*_qMGNlwd^=WKXv^QNBv(>en!aPHI{sqV*r(mJF!q&D?>cIK}K zNc|&)#$9v;<8YMnJraLbT;mj9;kw4A$99d~GIrb8p0V1oL)S%TeMmn3Q&$u!NQY=W zpxJAA2`((wd{3CZgR@a|*qef9WH*dDGKveMnyenkgjOYbPPSFSh>%vyTFr)AYg*^G zE^pn|+S97Fw6?WwQD16W>9m9Os?5Y=Uf+m+)Hv`-zbt&xzesC=GZf>jZbZG#hs8rJ ztgD5|Ep06wEnO{3TDGAtYv20W+f;NsWiFQYOqKBgzA=(x_7!|3R8@*4%*Gj6__j+Ni%W-{Yp#8rl zjpcs-e7f8f#%k5L76nDaSxa?IbyszF^}%Y5T-{dPfp3;nZ>io^-BYcv9$GuEDGPLd zeTdFALQty+OLk%_j3z?Mp);~!RU;f6ePr~p(c0YudzIGFM0EU0d-s$D+4k<1G1+#d zz6lROd`mJn)ZPXyBhGJM+`b%IMzY}hB~Un@wQJhx64b^g+CI=O^fbf=Iwg5N)CkvM zS58zc_#Alz+c0ALh~5#$Mj(6e7sW85+3uqY00S@<7(G2;(Q;zZl9uk4EntuaJfV-t ze*|^W6!f_GlD2Y)FEzqA%~qk}dHRUh{1`;nZxuOK3hv-1ZP6}pMrB8S74Vn|oH!}NCW1AsobG$MaD$S)D`^B1J9^bOkA3U#3UG;p?S z6xMoQ$&4CV*xXZTbJvf-11OAb4hmyaA7~Y8S~s+E+TcsD#XoD!Z}5Cu8PWDzDO;;j zHm&Z)=bu+eS)im9mn*AVJWoX}Q4yC+O7Yw1S1X(i`X!LX=*W|AyJAtvcN+BySMm+o z;f_JOD)mZsJ+D%(KsXCsiMn%%ba32;Uk7GJPSMU4{|y%U-u#(BL>+Nl#UXM7qAlc} z3N>;KuOaK82B#B*DBQz8@?P??cuYD6p9{$j%!g{US;tg=@PuM3EzN&0=2-G1eQ@&R z2j_h-Oy>AMcrPxH-rG>PVgd6M)hmw5Q4W~^Z1IzC1l5IPZj<)A!|pb%-YvXw2<#HX z;#C=)C2t(9ZE9cu#fv24)O)70^$)K=_8deJbwkc1bSmgd!^_KQiUr>oq7fN z_Yb@Klkc~xbi@0T^!{Yw{Y1OrcTmFO+U43FoH|5SVDVImOSDZwn(_u!a#gr$eH8@5 zSBj&m%4BM1dAYY7M^0%NmBr@42B1Ai)Wk}k%W(rPLdPg!lcy4v)E(?6SjY`Wy0K0OdnSL^8L=R#2%{SRsFR?dtWk zAB6Tf)-Ji*+e=H;#gq=ETj^0GWoWUXyTgfFt~oqND@5cDLcZkVUw1UthE?6uK>M|U zcmdA?6gqXk<~He;sVn4nS$>7|v$zS%BnbDb74xJ?QafEo2d&dlSO>HztV8#w%G}&0 z=o`A0{4Pri)E$|>mZ@c>6>2Q*zdAdrFBVi+Ale|7cda0#^7?AKVs31-Sm-hox(uao z86e5Y+aZ2ObJO@PsTEi8hr+HD#OH)|pwUz*W=D2;74GS;O023X9ByZoFpVm^P4%J5 zw#xaH;`&Nv!K;qSZIwNhno3Yxb+}le!~6f`+WDO&k=*!W;ku7WYK(--G1e7Z65~QF zX1BNVcsJTr*T^;!)b+UitPl6z}-2DH5P-U z=R#bLb0E4nvLI0YN}yx@v3Cn&b7x8Q(zP5@S@D@k?PUxYplbZRQT$KrzyId{Ni+Xn z$3MpoTq@OTkMRcevnk%&AZ~!<%^)T-UAP7(g#zvX9Ya$in=~D83Gw4g6U=0ojrfZWMNbVm6|f z?7$pDTNlM_tqP(NRQ0#Rc|NR^ua)NFVszkd(BEZ5Czi+~%9u&nh%&l9qExrwMY0?Z zCSSHAvN*!GMS3EKBcDYEBAN)JrhTP$QoUJe!&fW5nnz^K3es5SZnT5VH!n6H#w2^m zVosYofDt5Z!*|?VkUG$_Dy``mMDB#*Rgost9sK{ld&=)1%?E?$3NhkiK*yoHR^eRH z-v9gmPkd&7)m~J{D@4e_Hrgb;8z8i#1zClgr7z z-#zfUQi2!uGDM0hz2!ciH5iB`j7d~%?1+S8KLg0738O#_f)yaOMyaw~NP7H^Kx8-n zS}}&h!C)YfjL}eX`MG3L@Omv66<@S7CDa0V`Rg5+l!?9aEO0oCM$2A+-D=U?MY-!j z7ms|fmufsHpPj)lCp>37=?^G?L|@2x9&Kv|v@J!CsBNbZKcbDJ)=7ocvKJKDB9lEh zsxBF+&m@!C#tfjF0Y2z-p=JuT=@Q^-n>wKc%~0Cf}Y&)qfk*GH}H9~y3wke zHr3P2yc1fT7B_~o9hw|uHJe`=JKw(PJ7=^XZ&Bu*|50b(qz~MyE*}$0&Ogs)dV12v z+YXX^7^JSV2n8{yG$3w00cv}NJJqSkitG<$J(5$WBY>Y0ujnAkq5|XvP*z0rjiExs z>~RVXl#J^&ZnuD$e?;4&A_IDF99Ao)l*l_A4wTZ!I|M(Y_Bbky`3A|{X;cIh2!}c= zm1@JuCZrg`Ya;6MKpp^$qks|>O1dNw$j+X~+1T1CfBSPd>vmh(>oT&b#y7FGgTYe)DkEusk_22KR>A-`e5izoka`O7+W6oj=b`psCvGZ9f4=*S3S$u6jMA3 z#5{8H8H8=Y83g_Qk#{+VKC7AiDOV(fX@5TkB^e@cK1(c(Od#a}NxGAPPkvbb^Zsw% zd3x-xR(uZkR|?NNJz1FyL*YxsGcvmUQQp~-qqgS-rEkCpP>s-ZPV?;zRf~jC z=Yo07dN-O>@t|>|Tey@SGBpSSUd*rK{NmVkF@9P3P38Qt+UII{bM3@h4mj&ALQpXC z-2ndEqQrb@TN`j@ZBd6%8L99`bv4>L)E(=MiCC|IA>d4C^rNy`G5ECA&Pd#$H`8~v z;=_6-=)=@cEMwj!3Q5omw3J%@QBU002Mqi7P%%TD2!O_>FT|j)=<7d0H~{FWKuIRa zk`#`{V9U4_)nb@1q1Mu&j*x1MGbqSR5)QyOI>)6Db&6l|xT9zqU&-p5=G#kl`K+x) zw`zax_FZv$$9SPfTzX44|Gc&_Qs*OvIq&O!b6Sfy)w2Q(Kza>SE)$xVOndq_3PSbS z01+6P`&A`F;rPb;8$WIoS7kP4`0Dh1Y0j%{)qHJgQ|g`6C#mBpjZSvSe034i6gdF- zmLP(2!3To7K{<<3Mp;u{A%;TsQbBF>4uESZN0r~MYi?uAOr>hh~dro2Ex2Su|-p9nc)sXe^q~G+eJ~sf{7+*<(3iIcyOr_t~Ll zKgq@d=meN_1(>5U>AeDfzzkv$^}v8jND%ZPcaY~4m4&N+NbnOk(7#4cRP0x1?f)j* z7}}Kxvth8UUwTdZbG!ZV;a&YfYk_ah&`x_%YfRKXYme$0ySU|{jnJSduMrN zmYx+)Ad=mVymKrZ+Ys9tlh%`+hBBb;vZ0I~3zmtRxnTi6*nb_O}dc%#5mcxNKhcC<(>x^<_Zt+_Fm8zF(7IzN zX^4!A@W9AOtyI(EkA`$Ut+u$t7#L-b`$_<&gY)20N?0$Db}|*(cs#$q)7anafMx(S zhuVlUl8A_=NG5K!G`2PNG#*BvM$^_fzj1w|C^WLh#xq6}@sQo?#U}226Nm=t{zjk7 zQdE2Q_V>Mv-o##&&aMnv^wOPuN4>v)(@QiT{;yeW)FbhPKU6_aT~gX;X&g^6>}UFp zz{m^GB$2%KhdxvvF6*yt3@} z2N(bPPor=CC7Td7|G{8wtR9s+!BRJy`|o{W+X$egx|Z`BR?I6l<*sMrcw6o!_Tw`c zEQIezD>t3X{&Me6_U_I7;OSW9wl~g6o)Hb?UODHCOKv>2xoIxLAsBcbrNO(wJwi?T zWRH-7W}IMmX2+-Iq%KO`mwG&>#jA=p7K_w7KGyxR`z`keZmobGa($333|<>t z6BO4*+1lu)=#x>g$Y8aU2f{q0F{tb<4|Ru$Yfj4njH1*SOX7Z~&Zd=&#;_DeWgY&@ z6$)6y!|2cv*=OPa3RbJjON?<7$}P7jcC+=ci5)h5X5xYghK@+c26NO@4H{xEi_45JFme8&UcDIo8uatcg=kOWy1pxUH$ICd1bOO>&Xqwub+6u%t?mXPyB@6@cQK357{{VgvrL7gYB)J z`uZgH#(mpvYMNSm^ZM$JA3y(MOL$`YBZl#lK=nIO(H{ZT6Tk%2LpQ?{gSYn^r5Reo zd#Y~El5TG16FF~=O^or@im4S`3{|8ncrOA)wV~Q{t!UCZNKpBqpLbKclHyg|X0zfC zXU%4t6w*dg(9&99!$>C8)3lIpZev!_W=;G*|C6%GcXOV#TIAdn%+MQs5mHN1L=z6B9Pil_)69$6J)CH`Hm;z14XdgQ9!K`fBF zrvnRQ;{#I$(LZuW^-$>-JfkNqp^;X61OJ0Oghy~h2=yf{^wPxp-zZV22p{Q*gr-3= zPP0!V6-uE+0r`kq*c^R|>y^xo6l9Igt8rD_+VzFJ&~GxV&^zsifD5 z;h6nYQYj816_I5)QHUhZ5=rtDDH)_l_*8oI5}Vym0jwN0#XGJH=O|m@(;1a>Ln)MLAY0_WbDaE^1%c1nbL|D03QIoSl~Lg%&kAETvuarN?Qv<+G-l4@*m8g z+YaD(AXgS!{6`vHGBqj11c0M&ytA8NE z!A-PR=ap{0nLR8v($-cRlu5rPVV{w6P#Bl;%@%m-e9wsucCY943vSF^)4C({*ZHH* zLihWN(@lHaN3#jG=P&a9f*ohXOEN_+GsxMw@7?4)9a>Ed$RgrdiM7o1ltaE!sf)x zA~HG$PZc;qg(0eeUohHTFnnO+pCYmex`M2qygAC}z}E_!9cKh34z_1ReDlOi)>c30WYsNa!j*FgfgpFF*`?}&nsrYuzHSlw^e%R} z>RAO?0yqS@2a4vrAKiC@0SatwZiZ9~xfjJWuK!S;?ySA6mN(T-sO4{0v$AUTb_F{( zd1;c*EnQg3XZsfTxX$jv#FS=nqR8J0eh>t1psONTAvOlb2e~Hb2*!hAMX=1jJ%aEf39iNLaL!ie2hIoNjV>DazA$?j84P33S@oO#4xI=L$0U)HsVl~K2 zbO~bKzNyz&2IGgRQ9cYHLv+j67)8BNwPpH2z4zet4hkyjV5J!4R(Qk#?|!Vz#t(@VfJ zex;}b$X`5+$ypdpjUns1L>f5oQyTe=0J4WHX`nEw*rZGQd%b`r^{PGJ7&ri{0bn%N z41fH(+%|M^&$y2Lo{h@A$Y0MLViov|3Ave4CC(-x<^5E-Z63dv^MsMT?FG2eLO(wz zd`Xz^4a1pXGh-LT`1lx`QGQ-IA6L#gQ zD!33m?_XMnsZ!u>!C&ZHno*-n1@%JOWpKLM$$l)Vcy#1r6yL(k%I@#|>4V#E?*87d zM^D+*|64Kg=Sfp{jhnS+;_L_RpEJ4R?0YxO8bA7%cWk=v_Sb&0{zv-E#EC6e-*xNL zjj?3I&F3xq@v5#X7I)p={oSQYyTHNNz$==cBR-L37b~NkVOwR^DdXY3I;N|0)$u)b ztgrUXS}xU=)bdSEcD;DJ_<$&0FS6Uky&|tJDt5W6+^Mpp*Hc-ESA_6$v!}AeQ|b12 zUB$^FgRU%PsPq6A&R<=lVUXrlO^hkXFZxi>la!s<~CWtHh!ze-$@W znS@k@FR=;_ zT{OERF@Y&ghD3j_LJi@)jIop)F4f1)ro)&y1iUOD(Z~SJ67>dEwfw5L|7G;|l7no` zK*#T&dbAFNFF40)5EW^lIslu%RiS7%{^Z@_C|5PhAY<~ln66Bupj>pC0w`{Sv}m&Z zfQp8B@x^)1H)))jJ5kg=_2w(*j*)p&f1kE(%I$YdRlw3;-a-hN;*H=dxxSs3t(tf7 zC1>5f;-2%ay6QZ*y+RO??XlQ{1ycGMDzgo)7qtSRbUD zN;P^|D!}p~8IHMX(ZS(cWSi!9Ho+rgG!W)0E(wa*rLmV>yyVRrFT6aRT(oEx`*i0e zxqr_&8kL(S-sHv5hpOLPx4dD*C3El1s)v9M!c&RtZD)4P9D}+(m=K`UEufTNh%-S6 zT^?oUMcDYr9CT@T+4vGn2OVMM&45n^q_fXPw>^dFmIT@M;E^B?28&A_vb#9tG;2$d zMj7w9$isD>=RI8SNyEh9haI0e1{@+8J!#eG89>ZWbhzyS+JnCQ9;7bZW7vbqxkc9& zad*+HP?2G|24U$X@^)FH$ZWdYh1Xl@JB!S8axc1XWd5!zLKJ5ErCe^ z-dZ{pfXY`@tf=6o3LhS5whuQ0QV5ZlNjez`+#B`#b>)tf-)=&D zAH_QgSHiI@4-ICwY8**#{ICmfPGJ|PE{z(OsCS*TA7LWy&ztf66s*UYR=?DUy^6C$ zaHVv}frLv2KkzT|8Lfio8$I4ugKORhih|RTZ zAz)ni2$|K&X}`@Bu^6@Hcxfam2jd-pxTZ=K$r4H9=>SSrG!|5?aD613ilyDG2mMEf z-D1ey=I(IMN9z$qy?|v!`;hGPcZs_DiL}^t^hD7{ct~W(fx!5qLQSWrTO6M0AaTEu zjUr8VdirVfFcQxmo`u@^-Q4lvd8d{kA~y_AK5_F`e_#uTC!G+x%gs=8PD$Y=r7EVT znNU2Jjw8+F^4lz;Kfz3)ls>F20*bm&UgC=vBax&;f@)E`KjG7v~^IiatdLY;5R51l)V8t0sr7wTtk zog{(yKt3sioi!TxTN|N~YXpTA?GYLV4k{b5vz};UnUQCVvB>G0Q?qdx zJHF&Km*sl)Tz<=GuH)MmuY+F+P|P2X?$`+L5uW6xsiQ`nWYq`fADMdg_LDB;A6Ul* zc$X)Rvf{0amfyT^GhE8$3(4MF0~x^}BYdp>S&zFULf~~D@3ch-cm9a73j0z0X~M;x zbM12-a*2O*F^|V9%N8qu4dZTWiQ8?JEta^~Q{we{fI4U?5pMM`mnZ4D#v?X(STP{a z#1++?Sb3MV+q%Ju!Mi}ow#pu-WOuu?Ud3WJdSy!q zH7$Or5bIRX$H&~yxxa9WkGYw_?Qu6FeC}ahi`(Uq0ezuGbP{`j3jwD!elmu9026}J zFc@H7yw%y?M|d4%K_GkrsdCVZLxi8GIuQN>iJ-iQX=|IRB0t_F_YrcnglAdbr_WDj zpa_}p4f%sf;UwGPLa>a)hVe3!dvN)#UF@k(a*NoUrNbl(4_%)-N3-|D3v7FCS^ofH zh$nz9cn^32fJ4P53pR_9$V#_ni(3>hs8_MT>ZcRHY1FjEfuW(zY21z)UIJh$ZB>W{ zAO@YbA63i$o?(~OxvO*7wP^N!^#|G&t8+87E7kM;m@)@g=WG3JU)7;1E>)FO#j3=H zig6V@5vp)W&VawNOc&FpE#9blm5I{05@o$n7Ii}z)L7yjX?7qzkmjh^u8=Fj6{10d z(7R8eK}3oj^=OK3gO6|UZTB7Vi9TOlZQk%GM9L^U^X7c$T-*~SaQl(Fg@JN#|6uwS zVvi2qH|}#V2@7th8CY`r@*^ZDPixI+R}Le>cM5seT}ZhGb`2$D=MSR{-(1MA_TR^M z9NRqg&i;3#L_Yi4{~{=M2hPz1P%JK7zefl`QBFq@<{B$o3xGd9F327WvW+3;3?)LG znCUC=2Xr27%;F}U8MnkOvBNQbFvbqXj-Xa5>2t-Af~9Oojhg}?8oiqYQUA+Cge!;| zLK_i*91J1>0rf5Y#%82Rfk;FT-8$tztr=;;@LNZcGxy=H!L;XhhTrlkBsFsn^}iq` z3YpHF87B*SL(OhRFzfCurNKqMn3Jrs06nBt(=0S8#9QN2 z0mW*tpsVDFQUmkM?haIEC411})%r2AT<5CxD-M&#Y*GLPWU|G9kf(TJS*dg|kr^6F zWM=%>M~6Ldqr)C9cw|qFM}$!gD&d3=%T*3pYl9ZVV8RmC8czQ(lOk`iA}R8a!bFM^t0%mqK0fsDxRxWTWFAM~(ed9ob=9yr-u{V&t; zQd4W{o~k=Z8Js`LFb?Jyzs00bPt{;%@$6wlID1$|F}HY_At5Eye4@}ch~doiO6#>g zc5MUGG&!1PHNDj&EvsV~r}9eq+vR*kIWxw+ab(M4i(>gP8XTj#nN@49mQ~vnjVH&H z2Bftb{Qi~xd;O34MJKk?IR9+Fw93EH|D0c(fav74Ac}0MTwJ-l5*e{dY_+702F58( zlo6u@tZd(I@3kW-W_S2yQ-i<8QyEKnVl6nMEhB4UQ6)+#u&5o97@2b02ugts74MKq zc53RY03)oX!I1lcAwgL$b2*nq)-u~q7rE(Am} z?*b@%|KP|mOdNX`q+HtHmmhSJ$G2A}Tfs0n?Knpn!@ms5y&D=E$wCyr9!9K8?$5bT ze#=(mHvQq@ig2`g=i8Vi9UE>cvWIh>yo}|JD~;LquX9DY^FcepU8iiRPq<&XpvgMH zI@h|}DqZ7dRL(WajX_T?cU-oX$g-6zj|*K)<8rv-Ewa%ZsqE9 zGu;ybc5Q4;j1o?>%NLY?Q7&rBo#l!0L*p)(WT29s378o;&R=Az(Hn#Qq^>khFa;aX4nI0( zk<)UUETZPwXmmHns|8(L5o(bhuB}#^-it5{a%=VW>fUOxda_LN4Lb(M5N1aoGVmGI z+CBOvl}3}rPTnL1-a3yi#V;?-8+X`Wqm*y9zkEhYd&b~;oza^O=!LCT$ikcaN%$CWkWL}J! z&$HD6#t(}nUTiByyejBdxW%beOR3L+O&WE?2}#?MW+sh+;IvH!pMj4su(YAdZ!)>{ z#)#e#cY}4F4)+%KHiE*jxYKx|7?sB2{>;tw?z-~WDMi$x1*TIWV)ZUDvkx_jc@E+{ zfW@kw|3=`7WHB5XJW|vlUt^)hu1|{$4Ds!>=#|E=vTg49yMB8Mjl_C+=|gk#3>wom z?f(1}tUD*S7WlJt?ar8& zxW?!3akGf(XuGz^uUIW8jLydnt72)tQmV5wgBMQX#Rw;Bb~gImCb68QoUyoI>CkV{ zZ^MKc$%2G`kN$xEuwJ9WQ|k32GqH4#^#l(D4+q6iur1gToF9~e`PiXa%ih5laL^y0L}LLR&hZB2f( zAf!-_fwK~fg_1ExZQ30R6}J_46pO{k#MdDe|K`!7YW#tcH>f>2id;MZE2wgD@KDs& z;1v~Es37HJo8&itzLg+frKb)t85{^%z?f%)Nipe!O6Mzo{C`$=->~u+Mm@3<9~-93 z-iTq4`NObkaP(vTAS{`->8`(hvFXu=Hy)G2KkTAOkarOI#TyHgADJ)_H0}hAM+l!O zx0}MCie1*DU9Q$!%ip0eR=~q$(PCmwtuE{cWpxJTbh}&4B(O}m7nk(}f$SGvyY&hGMU6Sq2 zZq4cpVzxCHvnp1ynjKIg)>MqLWrvH!ljL4HRLY|2l%su^yF?1b);!$vAT`p5T~2!C zD2zP(Mk?=n&@rIOu+ylYho=qO3umGPn#AQu5&h*OgxpHZ1hEojH2s?DNNtc0QTsjH)mg(Pejmg(eJxv1o~fTBp>U@NWQ! zBQGtLEH!LfO%H%ls{I+Aj5H+|oL$cCPSJpQ0aRVxOm5~VeB!ER*4(%~&f;-Q7KtrK z=fRdnu`z&IS(v;wvgS3RR<7kCvDW#T!>m;cl`QsbH)fx6N4ii#O}?U91E!WdK>rip zp!$b1j`+6piagthX@k)UunkPZBMuO3a=gyFL8q4LSsR^&ipl(`sfSrWRst~+(_ILb zo6v{Pzkbo&i?*0oezj-Sw-#UA8 zX2y{0!hEx?W$En9hV#uPuun9m%0^C^xzo>5)92oO>(tqhUbCR-_kw##X!@hdZ6$i> zWL=v5EzK@YU#BYf<0-ZvwJgOi4qO-Dx&YHRd)Y>mIvPBNPYj~5#9Knz#4CHdyrQg$ zlN57PgotDnEHr0`CjD%%i8jn&DwE5Uvgu`AWg4N3>BO=!lhg0hk)kiN#dINU>8;C{=q?Dg zPPXjRmEDGIDxdma@83q^ZN-@#dFjSJdg9tgAHMfL3!;t9xntFz`_~eS_;!+SXOX>y zNI$;`QDxZu!c@iWKoK3g8Oe98rO0TCOR`{zBbieKd9xE9E~*z5%j2f)NqVx7 zetNeL1}nviR0|c^;6WKe!S5l{Wh4UL?dlC7%&cCz^yz^wpHeMH@&{Fegw8jzXX1A3 zkeHBDF4pn;IMF&b>DQE;u;3xd{nq^uKG* z$QCX6{_p1A|H$>1VMnq(*PYAL@3Fz{?|*q zgC{@(%>0N31|tQ%BU;NkSWDUeMa~^QtE6gGG+nbe(IRxM21`(c%Hh)ydKFwYop*Mg zXFs1btEp>i&mn(~{3II%F1s9Zs0x;H4Ln!J*fs2bV+3LbN5>2HH|-zVWpuZ8#@&Xb z$uc!EFR~c%2y+l}!xXDb;)G7UoMhC)mm8CH-bw_kB$tNhm27g6)45~`lnepbaugLr zSgCBl9o2A-2B@)7%7xWR*4NW^WxWjb~2Rloz~1l$4#8pzVkG(+-0@?`#Udf zJ+@^Pb+NuKe{*f!cdp`XgWHKo$3T+_VxC#)uatxS=?=|Ps3QgZ%9?D!oC%?j>&?uE znZINV!FWxaXXl|udU2h z8@$2j7I_=0xy;cO4yHMhjs}P9aAxY#H>K}R^Fn$;nk#8ekxm&J{ z4tnxERtGon)s(z&&Zb(Y$-6|Z9tzWm@DCrpf$_4e1a>FtvzcAUJfP`{a-Liy5HQNyl< z>_z?yWw+QRhX@PwgB>tyDX^*!!yRC;E>_ndH`mE*NJwL!`B@L;n;Zxn49Kp7k;4&i zVIt1ms`+tb>skli*pZx6u#)m&$J@EpZRKtyVD&vA$KVRI%ONzk3ntr;5$6sTZjP{s zA@($0QjqX#!mkS{!NCrRZI)OAJhCegAt!-mkW7XUu<&7?Nv0lCFZw_qFsVu0<;bZ; zs8j^pRt?q!4~7Ip#BXB_=E!(7P7sf z=s$+;%6z7=+xW0?k5Ms_SK!&QmIobz{5t*Qcs+Uw3~Jw`Ccp(i3izOUKzXMm2wfW3 zmfz*MW9<)S&;0(eUH_T8Abr`(`)&*IpRc|4?9=c5%k1pGxvww&uK4i|I@_Drjr@C{ zPYk_i0l3bIGMp%bK%1Zpz&{S|a0aLj@vuJH=_|Y*W3R`48{^|*?3oyQApAs_KVsZ# zeBCHNV0^;J?Z%j~-YDA?e-eLeaj~G^6?GcT=?bJz#`HLP0D+*ut2IZROh^AJCrhvn zHj{yXOeXG&f_@daI_2=AX=7Y<`GfH%Ku0SYzYWq+cX+Tbqz;KM2Q|Iu*AUg+QV`(S z+k%YJf`lsusX-uV6S)~ndOSGi}7A0Yj2oMSITMIpz&Q`e3O0*W_^-|J) z*^6Cj30Sf^sTqe+sLlL)t3mNt&*e{?IC1IOom$IruC{5nb)NKxnbW(@YMflij*wrY z6_`8j+6Nal);0x?n;bgs^i7}6&h`I%;##ycq;(;_eNjabih%LA+W+ z6`_l8r>+J!S7zBwQMM$y7VV>9wR7`X9yS|TAWrsxm94Q{W!Vbk7u;}*;eG>`CBB7o zns&9p-g6l>PcY(ghmAJ$D5UkUVLfVbg;daO?@>E0 zoXQ@b48WME9+LDQ23Z55@>>vySC9=7Q6oXWEQvEe?C=+^llEXfP~dx|K1rcFqzhHj zo0BMj(d|&9Of2Lyv37FVd}11)Ho@e^k%3JdM86c#Ewj9WBHs|p=?YK<*vgfnDkjhf zwVJlep$<6PNrP?@%~MJ-3sR{eWLAn*EUQU_eN?Kd(SZZ~9Q}dT05w#pCL8C7qm#cl z`=swbxS(U|2{%ocUfuRs{0EaJez(5*`uKToTr#|E@zUmOzIE~9*1SA&^P;mapMBG9 z3s=^3>a!#%j|B()&2wK784a#ht9s99vMaf@-AQMDU!Acz%w#OsY$g$V2?x)X?*h7j)TsHiZY zb5m50l|w@#XG-1DX6XA^EFFQkK1sDm=rc}#VPI{03@;l#F$@@#nTBq3C^l$@27`Q% zx@Lj$Sgb>oi-!wNSz(;g4en!skVRUyMQI&L#XTf88+ml_9ujC@h|3ko0L_s7iIW#A zQ%zD%Sf70U@l#g*sd`oFnvpfRVd-#ZWQu)QVfC4{=eE4GXyWu)XY;$xX>0mb==x;3 zy<)uC*v*)6MD5vYJTJD4TsXJTE_?&*SL`+Q1)L41qsxyw;?BBd&Eg&zZ z!+BR$Qw=@=!XR?#OLBv~=1y0Qth?r#HA|OHub){^pITyQ8a?im{_FYjQ;ylt2vk!B zRH8@OUCKQe>DiB=W!K@ITA;v?C>?vmM<%Ds^CU)V#kdV}WIG~;G}JhDl_r}sBtv=h z*7m}~9yZ`%nx_XHP?04?W5uQ@*=0Zb8J2^x{%I58`O=uP$ofCJ9MClf3jpp~YOlVb zFxp+6Dh-_fp?K?*%o5uYV__6K`4l$0c)yTg(xd!-aC=J1vy?t9qCp4olb_x^jI9}V z)i8c@mJyTyH`cIC)%R3$Q$;BR^Op!~L!lf3pzVRj11|aBhVBJJGsLHW7hHYyB!|_V@Sg$EppX39Bhl zL{1+i2b~z$^J%d^}OJc*bZIw3w7FRvK9P(cO2{Cei~mL z$KEt!Cx>w)*_od>O80mrRq`^;+v7d#mAySa=1alILoVBaK14zL(CrZ-t7AVc;*lQ4 z7%BFXSi~d#vz8{fmt0N8Qp+?bYHaV?wI`pfws)*JrCnb%>-x1PzkY3OSSnh3x|+TA zbLrd((}p#kbmB>TL;u>vwXtfyhgMs9j9rNR;grUe7EK~C$ZJkV@qNp&ag7q%w5FyC-SeP*rE*%Zj^wNGfiTv0z8 zm>g=x?vl*-=9t)--9I)sNH}?fc@}bN35`#ASlgp&wQs!MxVFXKtZa2PX6sy#&A z-8#aQqC>SeDb9+guSKH6ulUdUsmCYiy<5pEk0QeOACF0ugmF4V77iKA%}NVrQM;iW;|5`qaq|ui4-^u)>paMy)z-3 z626iGWP`Emlx9jCI79$JjOt^Y{)9j8m#5_Y9sX|ra{qMz{>9zp{!9IeQ{0i=5Gmj2TxNO(N_Pf4vQP5p9uU*B#lssYv91A+k%{C?29Syb zYIcZHIm&sU)+B_wMClIVjGqe_IeO%O-npmrrkbv!TFb5@_Y7iar8xL z&ns+8F%OC@V1UMF11|tp;Q{btLfTIF0w3rFP-?FALMyMbwpjUm6dT^E+^;;YsIo?l zb49?^O&w$!qT8ZMT#B(;Lx4yY8u(ymMSCG+7)xqf1kbo}wS&I2X<+E;RtXLl1f3** zP)Hc3A1sTV?40RmNk8+KY@?Osx&z`V>|&4s;_#5Dc>zb^8NqtwE2i^S*f+i*N}V`# z2^SAqHGg2Oo@so#B6mhJILcFS8qb-z>BR~o&fA^qt9>6AkGrf@a8r0P|76kXAEi$$ z?NE85pvaw%Nj|s=KoB@n4(s*tRAG*Cfx>H*HigeOFF|YV`^}G=)qt(q#!a@Mjk^s# zhUtMM8j-|ZB8l57yeM8g69Y*gK1pifV1Y|nH?IgC4DpcD+J6FWS`lwD{LCmIu?ro$(URFo9>3Q2l)Zjwz(E=uyL(Zx}IzT*nV-40pB4L{$0 zh5c^3{1vx@f!_nK1G)mokkJuLz(2Db@i#Rj2ZM3%SPPb!oD6jSlj~7KJEJ3xo`@q@ zm?<&J_34BQK{ya}Nrnp{h|eqg5GWM$O+JJ#`VSgK$I!t>_NcVQZh=ltTL=4ve36KY zA~yPU&H}%2FpJ~;aOv+PajJ(m;Qynr0$e_@bhG(=k>O#44af@Es5C) zJ|)8H!fZrfZh#xT0dKWeHra#r8aoPygXS8ue5KIIWg`!8?jd7lyHyC;9a6|G{9*Mm z=O+f1gmKPcwYLk^WPt%(1O#7FQF;vW!!X(nl@*#4jEhZ23Ib%4*mw%*%4AStL!p*a z{0a>Q^jU=ytqU!zQF~7&4@gIk;VKjVge3!h1GUJ;1<(sBe#oKgf+4TEgnNa*G-mQO zYd20FuTQ>u?G;nUue))2b-MV68`D+t&(g8(uz_GiWv=4BO3 zek;J9OtIQjTZ-S3VxdfJW-4ImD%j^0?8cTKw(M+?)fQh1x695X3#t_OEBRD3kf1Pd zU(4TtSa`W7#B{^yJNdz&&A{m(RjW-*qvRT<@xN(+4r)aWEE$2a~9Bb+4|C_ zRDrO5L`abZE|lLeLZuq~_XrzOVY5Ph<)mM>%l=^5RkO1Y%ZIb1>eZ1-T=pRAL0hn} zjU4hi-0{Li(}`qW$WdYeWDU?8d{Q0{kS$GtH*2o3(2<^*?ndVH(QqS$ON29Ra4&oT zdZ}FCM7f688VI3K5;}^1zmSBES4tI?*fKb8@%m8*&KENZ5I@1u3$aT-gIPMlT}^*S zKYYX06HZt+3c9bSIv}L*THjrFSB4g?4qkuayleo20GoY6==cNmC0>?HA!axgCCh%S$; zu`F5ir9?33XJ1gCT?H5#w|ml+?b&$kvOx{{`DXI+6h?ji;sqmSK#eYhCd;E=FYzhs8wNAvJHr-!va?Ahaa z8Gv%0av)YH5ztHp=mz{mBt(xW9z+i)UfQ!q(oBdeR({EjpoJGjq^-gORyKJqiIu40 zZ*~|u!_Im0)~sD?b_{c8*v>Vr#}H}!Qxmq)nX}pVySGpMth?CN?2e)-Jrt=I_@~fX z{fH-T)|04P*9!ZLZx}x{%8R1R5ceYrCJT7n4AunNLTr~+X8|jMVSPa2wW7VfGoi?P zKrPZT47hqo_-%K~0ovqN$+vU@?(+*BJWI>ukfb& zq52n9HmK}%<8O_B0%W<7*=n^mZK}3dTccg28LV1Fz+*&@xKa z~}s?!X6%62xY_r-ABl`+ZX8@7^2lTh~3m^T4u+Gdd?Ne`&^itj|KM&z)EwpY+3B8aY2j3@wX0zqG$^ z=VrrH!#u-Z42s#X)$o|%1;dAUUN{Am@H{UUT|UjfDdikJA8!w zpb+u{0URy&UFX~EGlqO3BpY^`QTc6VBM%VV$O3bZx!0^Dap7iguCPRff1XSQ>|5|D zxiE+1f|dMn!XqI(a(7Oi-rF}WytXoX;>v308d?7C@w0Clc?R2BoHKXC*fXn-VOzvp zU&LH@BSYvxidzE_6N|hdz~(!aIQZ2LCjZgO1h^DT8UULe=89Q$3C+)sIU4b6$2@hK zsc!bxK(=|kCa2hWPU$)c0YeFZRMG8-m=d>z&=JaM#6*p3)HWmZ%Rdtpu0AXWOkb&RXG<{ETU~M3I{4-~ys@>!A&&#j9 zvvwz|W{(u7b=S4C?_XkEg7(1h%|ns?EUxQ-DXGfXozhh%c7ch(4@*wil?Z~a zq}UkQ$-+vYq=#~OGAeeSrA#9-6-c|I^DHByPQWNKR^^{(Ao}1Xg5iO-Gac=0d(3>HJoT1Awu-m+rwYxpYQ>$%;eqtQvNXC z!&N>cOt=^69oWZ6yrb<+i62NGdabXc|F!3iW_ds=qmKd-&j`5-h)pT}VE+cTZ^o$N z+k9Ga_;FL%boQ&$xJ@~&v;VgS45d+eRBpp8BN8f)6_?jl;gYSEh$Tz0Rpj!3GaoTq zyk@f{RCf7o*DUZi({UWyZgzR-E*vJiTo%n-QZ;}8u3^ra*L!5nUPQ9Dc>BBu;ObO0 zuN_1QVK=vv82rRMU{+?DyUmxHA2#nX14Q{~Xml@uH3JjRtMD+ZEn>^szynywu&N|Lv7LV1Opf4Bb*IZ)u=^Pj z>mnYT$L$f@-fHt&tv0s}&Q1~xnjG2{1423g!r<6Mq@T#9;qkU$U+@63&iz(T!cTvz z0IDvGbTgaP>CU_PK|&|i(CWO?tr*=A`s}F^v<5y#k`}#!C61}j#<`ZCa_2dv6WD+T->w(ha2)*-8~a__5yUOrlnQq~dlqSpXSghW1} z7nBp&j__jn7%D?QL2npL1{JzA!%>9hy48f2bCg+|Af8}M!5IiK_1pQ=_r=1eSiA?0 zE?I4TeEqkk&s)~gcI<{$zIOVo=C;~M-Raz_oKEcg#_Z{>%LGsF=Fec|;_O(`ia*dD zkk~f3j?o1I_rR7&Sw>tsqT%KiWJ<%0VK#&ewFcR5w6T=g8}inA<;iB;wt1&|l@^rV z&5p_QJxe@mJ+e0v2CZT5d%P%H^wv@5;e;Fgi;?<*5P&Bl%J{=T%3KgR5aG#41FHGA zL=+Vn1QF!z`f1AqvFI@D(L;hBk=`5jMm%LF;sk^M)iR4VCl#>gmhiuMtl}E2jmMEqJ!eq z9sSQyx)?2pgis+H|J5wIpkdWa&I}@`6q4 zAF}tvesF4g%f(AO{;jmv{<8MC**tpl!m~Dg%ev>7i3^vWfA+^DfXv6wg)palklnCh zjFJucgXvu^;AfN)!{+18SuXaei=F9Ye|EA>)_bgvSmj&HTg{J|<*mlYjND*^>q6w{ zsQ0LksNAfE)LQig^-WbZ%OSZ|enEayR=2Xp7&kCKt73cE>r6Ex;vLhGpT{W2i3end zLxVhzZ8u07*|Z!=iHR(YvSqp>92Mr29*4_jIUU-|kwm~tSz|C%b&>dCE3Ffi=R;+e zlr0J>Arx#c3Mg(?9#;0?L>#iM%IA2=Z-Ye`d`#L)*>iKmbpt(){*fjJTO~!AuSp=V zre!td#%9@Fe5&{q8_&jHVtf24BfGk|+W7R-@(V@A2Dnrl&XyK$I<8IS@XCHa|E`Nwq`(HzVU0DbM2{dgzYxfBX1t4?UzV?knESPAcBr_tozmtNV;5 zd}+1Xs&c-CsirNub?{52%}}B6#pkQakuRm3v9Ek-wVd%7%U}AP-=6=2?>_X9@>1Vz z^sRk;5ZLDykCTocxEDU{f7!*g%4})pyK}7tDS|XlX!1JX7G$%iCxJCoaG8TX-G&y% zpXz>Bs1P*a#^y5z4G}qRa!5=k^t&C<-~2EuV54a>SG7kL1vQJ7F-TP z@sXLs0Vlr>J|+t^3A=MQ%U^-sH$rOeC&YN+kAMi>j{;;;=JVnGuf78dRO=J`uwQ%i zoxLD)HjC1e<^t6!h}&|?2y}X%mo$5y_jt>LOP4M!R5qE$78ady$|=S3D_Bdg+H8)* z166jfuc~TNs>Wc5q(bOlEV1HN<)^GmeGNXzsd}8;ZzEuUV8^t{a?ns?7-5jh8Nib1 z3E;a^jVXFpXyzW<<9Mj>H25_9Hu!+$4K_-G9eI_bd*Jltkb zBsdM}nF9vZW-yPE&;x9RMV2gEEPOQG?V$$^czD2a(4sb27KrB*i({1Cf(cXa1*}=W zsH+=#r{p#{r7O^MC_pAM*is~wl&@^V{_;QNYTz*%T3!Lmy z6VSF3+nePkI#*OV@yMm&>%zQr=p^L$cG+D=X9ZI6sx+WKb&7_C)T{77mDwp*nZx8| zi%7%qHwm+D)<=vkn1wup-O4AtY<>^j7KEZE!|Ec#bkH1uWB@zw?SHNbbb40clZh4x z!v74}C9)3TO3P-|uN3OGmebQnBY+Y>ZZjWgZgQzW*C&!F_`V*u;o@r+kDETHrXe-` zhDj_l?Bo+_bKVP*mrXq7fsUvJKHqPRy8>lX*Kca|uCFXC9^QJ!*&`!%v)LU4{7P*! zeyny=K6Ffac>6y@1`#K4pocKl zsluTP)f-ym+`FZ zLsknEZP-@jgdV5`BF{Js+Cv%$!p@BhG1Xj^nu^SX}D@0maQg!y-F zp3~W5s%r0=caGuNC1a=F;QZjs)9$R4s}fd46Ce2eex>OfWD!!3@F>N4_Hraibj-KQv#bV)rU`i&Nza>_I3f za$<+WZUpphTz9~tH`*;KcbXN{9Fkp90WW_N3QwohgN&%dFkeZm_8DYDw{oe%XDZzY z-+^=Xt}4~_??u{b*)SJ)5gXMR*^TQ2bQmsWWC+j;0jg8F)Qk+XTpk32kolIIo_Oj8 zX86O+%e--S<(lh1UC$!L->~!9y!+x!k;47O9}V(PY2PN8hAMed^5a3=Toq@JgxOCG zZy7j&+CS%e%?Ga_+%$ds09PzdTiympa81Xa1w!a2+5n&&G>;_+KWR)4lBbTFJ1jFT z-E=5u7G(EYEQ&+;c05CvD}a4_WVcdO@9TG~StHTvg6fYgOQMywta*!hoB4qGpjnmZ z>x5NYvWX#Ihi+M<&3|FfexdU2>$WWU{=k1nxUYGz%uWc{BeE!x-=gK%t;xk>r_t^`^^e%LBS+xGK4+j_eatWxIgrDoHt8e1 z(O<#lnHQV+d=pzNv&EcEt7KCun77L3Yn~ip$<`K>%xNjjQJ;ea>P%@VLg_w90yrK# zrCKX%jQo-x6dO z1-~8SQ-h0xye0^s-MH1M%|_~|14*oa#qN3=;UEIc>_VUqk-e^_@)N?bedwh|s4q>_ zn-UqjP5DxM87&2CsfzpI%@eH(T4-`COpa; ziU*57X=GF`HD z_+#H`nE$Qn{!jaV{TsXO6@zr@U9X;d&eluk#grN5&ldY@N2HjmxX5IL!?ItJ)OqUT z@L$HIG`moLC=yIm7v2d0ua}tY#!7fHKUX@izy4#P#&5YPpg;J%$B2ZPb)f@1P z>aiqKai9ht0Q_e>-5z0+!3Q5YA>b5m!kmr=xIuz{J}Dz&_ykNdr178^DSSmpSr!fD z`ZPEP4*}>0D_wquq0=j%M*#Pa)*sIuyaRPhtzJ2$x-xkBT z@L=@G^KQ7JQ0(2ek4^^Xz^|2s>PHfgM|ZUc(JLH@_#f=R6{qP3daK1*xTSq-JI{?| ztJMuE7ueQknb}Q9aNt)}unjfrmin#rP_R+5ogCgfe9LgvXh3-B4ZRgvI##QZ)ioft zR#%s(^6$YmjEAT*4<8e2mJ-_%+?a@uaK`enj@agyg4~}NT7t0V?M{0YE<5zRI))CC zjCNunrsKvRiX~AM$Ht6kR+{8iNutsj$(BC12|lP1k4iQT$j)Qya9_7&z43s2Zija! z!k5^u?;=)3-C6*zpaF7BgVqv2nF|?GrMmDzJGzg!Kzj$--(5npDc2p9)fI^JmC7Mw?TEIDq8Y3t5;9dlKPwAAzt=pm^M-4WpWxc1 z75{SJ%oj&qpmtn3`uxzYB9r5uQImTw*PFD*gR7VAIJn|U(}gco6=n=bfKs@J{d>B8 z)y$LTOj?=V_42ea>z+tv?wi|WZM-krcFOq9DQ!!l51e-LX&3a>*WQKg+qo8BP|?|H9cE&fr3n`LAR)%{1S%#B{6a zev`V}#{S)leRQIi8z*^ZdwC?xvf+=ypM_;Z#-Ev;S(H&I@JKjPiutJkI~3>-@KJ$d z0^Am0)_qjs&)|$??Z21U_0kXEK>2rx6(lx6S}*-kl7H%Z%lDB_zTNkbkEeZ&KF)p2 zs7O9zEEspXdfajdzlsHkPAZfa1dWqrK;e&gxAta zfIzhB!u?pnco4|kP{JswgKn^ov57?<`l@a+RNu>Z3&GHhn?TIIG#@sC$s zUtGSS4XZd-`Zix8-zqHO$$CyP!OI|t8z*uYI~3W7jP!1GIZ7mX1};-o&Pc}00fbjn zDgRCvIcD(7Ale8#0l_Z`oUAriy70@F^#79A(l7tb;a!LOe~laJ4m|}Z?k5=QcncdQ zNm8ryhD72cVEKi#kDVo5s|OW%W}&;l^+Klr;ZWj*N=+NfVW9Tu5r_f}h}OI_wIanE zQx$eL_T>7{fQKrh3vAyGeH?Xz1-cy|j0(ERR6uKw-U8DLy@2xAR#1>|5$tc2+xTq5Yb9z^qXXfVyVDRsO5>UiH4<9&tYFy0&f_IQ&xLAG2)?kB`X{Kj&-M<{E&;X*J236*WCIYGX|r+)OD(J1PdqA0w_v z&lXqYV2P`E-4iUmj;nYbS9)DXsbQhDCNWSrx%IPFtd=4#T&jjeX7JchuFFI5r3-pgkZspcg!#{1Z_EJ49@TX6hz?8=L|eI@dTQ zSGP!Sd`FyW16SgdI8zTGCLb^{J{F0`MqExNSVx%?Dn1=r0v(?Yt$YLyINEk=%_=s9$?%HRJH2aXf%=ocon=ynAvx-^<|EE^ICCc2--Y}Dh)2B+_Xj-h0RsmgIy}l0ALA-tAGf? zSwTs7bY_UxaRi9haTTxQDw6c*YzPbS01X>N7Wx#4hm;_0iuIi3f&~ zYH>E0@cH6wK<>-mIU80I8)Ds`_!1YE=2qgu*L5?^jU7%gamoQJgRa|QD-!wbDUaaH zf0ijX<50wj_;uV~nstfWpVeUjNzuU-?X_;PZlj9lf5^fH#KHzX3t(YkcbDXTR4isWT!$0VO0_fAfJmc*h|6IHO;=qmK) zYOy%gthbu!)xFhQs<%}u)n$?9&3ik%-Co7}wSvA2hYoR@^i5+b>0Y;DEyTA5LZxpt zqr`iK_`=--zj>q@1@2=RA|5cR@Pg!Hy}kp!!_ADcjC~dZJ%t(!dWwvEIwI17o@v&bW_p@{1h=J?^go84C2i*Wpr`m&&{KS?)oL%S zNcW^UzH;}#yN{&*4n_a*1OJ;8eN%dChz+v;$1*4Oj15oIx=Rr)(nIM%3nD83b0kX< zAD$*|pmW4qzKX4k$CO$`&x_Y_jEL896|dteQjh3-sS{#|tSy-jC)T3#Ww=V?`sj?iG({&ovS7ADwkIz4$iAfW>i+|x2)mIqcFWgr&6@+)9_1S5+o_=Y2J(>w zB>Px{t`ohX^?INo>|xNMRr0H4#7}RinG~O|0nbV zPhr<6PL`}vJt7mX6LAr$H;IcXTaC8rr((rJUMLFQ2guL?7htYlA zNet#);N`turlZ@*|66%g)^)y-LZ;gVg$CtSI_>v=15wg~9(0o~(E~(D6FmfF{#l4Z z`|TTP0uS_2u3;g_t2$OktBn#Ty6QT~tGYU395l$2GFoO!M(#uxku8~RnFASB%EX4S z5h}@Js2{CRdZInCo=i`LQb8XEk`bHGl~{>zqnj-4xjMSZ5|QiZMiGh# zZ9JhAh_?qKe4PVK~Fm>0j%n{zqhJY z_;?B%rH}VcVE2w^pVqP~GVI(8J2A5`!&@>e>}7xPvZVlpak29icCXAf$n38!_Na@E zN9|lhP534KfKm!zyc-Qsb@Rv*kx*!~~dJQz<9RgrhRkC>y7x60Vwwx$*Ku z1n=@A1Kx>|NXl$|f`5Xfn~D6Rox>ZO+ehx^pX_LBD>OgO{~)FC3;cqn{2^56wh@Q{ za+ut0z=zEDy@O}^@XPW|fRt)1_qL)O2c$uvdwA1c6!KCcjJCHizhC=VS67?X|Fg!n zl`93xBxQ5cKZ=dh1s$%bzC&Px66`?>fFMdZb z#=CsfZrET14w~XW&)ZY&2v~ppG13k0KYvm(KV?#-J+4{nmyH>I?7ti{Wl?R@_>fV3 zimRfhRAsbGGcE*m?Ove7!%Gq5f8g1Z-Y0@8*m(+J9FSz0p zy=F!=<8RKrfFVQ0E7aBXzSt%bJ6T)x&ioDJU%O(x#h*d~_R9<6Pw zMeVM^&L>H%S!6#*we%;+=C(H9xXMb&&g}3)t*U0HSF;n*3ZpXWZ_VWk!ym_bHu68{ z-pX`Eh2LffPf;<3c3*I zZ^~!ZVm z&%5)g;tpon$oARf#~(6VCI#HrUhZ(BfUP1J94$9gCNEikLm{)|&W@AL*mzI>Ty~!; z?6a@aSByQcDjDq@^&(q#(J1G%Y~8(=TrzF(rN3}*X|90h+k^6vPT=5&q;7q*A;`|t z*j09Rk-3y?IKn)|%&YlE&QZnXs&E^u6-m5FsRR^=L5aFuM*J9@QNPiE{C&y?0#RK} zlqu2w4iZS-MPi>|a@-7}dk|n>DIt9@9bN7`bM8euFPwKu%gAN>at|cWTXFmDvoGXN z-+cBd;o{Tm;i)s$EFClc`RGk^PME(CIUInUQ9e{32P|0(*^yW1$1TmV`8hT<$L1y3 z)C61WyV}RkLK2KUVCR*U74a%*AyO7Yo+_u*5UNJ6Y?Hwiil-~g4TfrGIswmCHJWjy zt80RB3$KZ*CXs3^CeziW5k|owZ1(-Q)2F@uDp;pWqY@%o{!-3jX?CfUC`w2r#b#DS z+n$swg$a9T!bnM@A3VfX{qTF275~`(^DC|ZX!NL+ZTp$G_}7gcTZ(V7(LHT9jlN^* zcZv_OCB;qboUZCCnqzG1FIS$*mamte-*xh$pD#L&t-LeqElzaR7em_$!R_mxF$PZ) zQn_~Eef4J0294*X1$z6MimNL4h9o;b$=WPz3W`F_Xv@V~6bR;IFaS(7RvqyqHK#qG zc^m8~p#x-?oQ@;+iK@II^F(%EY4XSg>jR+QkR{EK(1MssBA=%jJWXJ1_-#^AA1eSl z2%b^Bd39Ccn#*4;o_X$w3om?z_dm0`xUXOKrx(q+_@lW~`Hm?so_oifBUNlg(xuHw!2AA9WYqlU0=)O(s=h7BhlJzXL3Tjn6{1j|qSCv2M5746}F= z2RCDqc)dovZc+g_WwRS*nUbX{U3`GqWa7+ZK}{OEs&n=@>qZger#tO-KFdrGRD7r1 zYBkJ~)CPQkYO{t!`fE0LD0`?45(Wv|qv!|EZd8Y5vs6TlOvqs{;>BI&f~48#Km%y} zqB037RZwHPP%sEICXyt$$QmENUFYg-d;W$U6dy&HP@W6=EBe30GY5y?i{#D z`M{uJe+Q(nbTO)rg8{D*(8$c~av;sr1er()!dcnml>rT8wrQTI9QKEhNg9Z|f;VCMV#4m_*9z87a*DZf{vl+7ac5+!d6?@Nyeo{K3iF&aIK*}R~e2tBX-o;XJXNaBZ?Bk8vR(bN_ILU zRWNa)K$bO|Qxzrb0hu>uhgIOUgvgN0RYc7uc}qR3uQybVfaO#j4Mw7|aM0**wluH? z#SqoN2$Urab)f6*KHPa5lBAIi6l9Y9tdWRECk=X7AS;&jCh)4oF+JmjIvN6jG(?hpu|~m#`g*x=vLKLyn4ZLkKFKb zy5cG{vO00<_8azBCpSKApLD7_H~d>C&NMU2xL;UKmEcgpErZiL% zJ^Ke`4?7}xJUB&(5(GIZ1W=Rw=S_*a6$>seE;BuBs4A@ee%5>6ea~#-x9z*Vt7mjG zdn|b6_<8Hv*S)fy-`0PI#Hqh5yB{M*bU+%fSE}&*RNCw~ye}nPp1^zpVRX9o1`T#+ z)Mjx?XktU+krE+~jInQj-%D80{e+BxfdHcQi-11m!Ljz8J6Eh2(tz@ub9Sy!KK%LT z+5TT2>Cwz1>)BJq@uX#+j=ty-^;H-XwbC+u(yVGWshX{>VrtdIs##U?hDx?N&D1oT z=A7^3LF-vo?(zDKv7{9BXDh0l(3IlIxX%OV#hSPg*!khO#GT;DGB8(D-yx*v6Mbp$ zLZvyvXvl-4Vneh@OM<(!))sVdYCQrv>O!AyqoD+UVTeqade^wZrU#1mKl9jA``Da2 zf4VeT>K=0O9p5Yd*R|`ez5YKQMJJIJbAB|t`M_Q_gPri&zm6F3mp?Df9P40jDw)FW z9~S@g>E^pIV{~a$o`psN1bgXJee{Uzlq{d*X3cK4*vaNP*&-90Wn!3L%xkRl538&g zV?Wl;6PT&bkcxU-#@eXSY>kGaLney(c3_$`PwLeD5^4y`(>yv!nky!W`Z%yr8D^+l zI9G-_Xi=V>F!hI{vZw8QtEb!uu{6o=f2j}Rs^fq3qpNmo{N5ORoAdD{7M=wdS)#yOW7lqkIKU?i*aVE2*6!%K;h+H8ht3q{9zJN zsSbqYGI2MzgBB#2h4z*2Yr-0mTp?ved;QSsP+~SxhW(%fL882{E(jkTP;11M)R+qz zi>Bf>AQzy;kdC50`p0L+W{)k@=iDLc>ghh4e@vG9e^O+n=Vgzv*XG_i2Pk1Nh?L$OR0eXaxS# zhaTFwdi9+r+;Ebj+*@7z&H7@5{RW!|ZNC9q2TD%@rBNIt-Kx*>0^z~uvs#lD)oUT%EjBWq@_CXg0IG!3{CyXBYU{8GhzNNxrIj zJc`u<6h@4iv?bBzc(5Yk0Ll0Mx4Zh*q1YuTKvSrefxsJr+B;u*7PCWDNyY_$ktP}S z3y|YYY6>gT(yC4>{%7&oXNoTs`yY7V<9m5}>%ac^$HjQ@n#{E6Q|2ly#n%2C_&Mx_ z^-MyRG=A5&tlYS617@B=m#g2QFAt#vKBq6QPO-Jx)fy*ACyr$GL_FY6CjI_OpXT*> zU7Ak|#xiNm=?J0lBNCS7kRwzXmc2lc+Z<-q1eV~r*~gCau@S&iHk%xgfH#QGxSoKfmuc-g)?1UErfn+E7ipxp;t!GOa9&Ve;t?Uy1SrzN9L9`xT>^w zcU^w@GZ(XyFWq_BWyRb38;2#5b$n|7-P^`K=-;Xx6J3(y)7P_k#e3;@{neLVaLIWf zqzAbW)FUh?y{ZF`6FtJN;;c$-QTcN!+p4lF%r}|2!Roj2i>%*96HGEUuCcSl_BD3i z>^#GHlT)7Np6}-OyV>(@bOd9@P=HZsYhFWnAZp9Q{I%uijm$%sE@_R1CdusIv>kYAn z5Ys{osO?fHYO>+|CE)z>`$>9>&$t}#Y*ioUegK~0?m$0Ik6GC3F`VQXDdBMXlSWkm zOh`Bw;SFjqXkhUuH^c)brz`5Pm5;&_B!mz*kT(1K-iG?2(Mb+j=z~R5?%P6Wge7ci zAvcv-{SJl_gRUXR`O+W$P~NH9i|+MBX-M;NejAhxj1R~F$MKJ_BV*EJ9o@$E^46m5eIQ5N z_DX+0+rIjmb;r%}-t3s#dfbJ)8S?UT{&fGVJl8*?|E?cm*3=LFbF52Px>BF{O|z~1 zy4l+8m}sTP4zwEk(fJy}cFkoOI$wd;U7qjW#&Rj-- zgFW02F@+kqhcCY7lFrgx$6v};l^VDgd)W%KZ(sE=tuW5RsaRnbs!(PwHZcb}=~@+= zMN$hRlo>5Hpj1|4#8^TDX&n z&#*%AXTKJUw}*`_{sbVvUF^_$wo9zp^z|6i2?Osd8__wjUV2Txeopqx>;>8Pv&!rk zTVh&ky4oZ!wOnMm&GLXn3ES_t^AEgiM2Kw&Z3^)-s?V>!qFU~h767pdQWg=qZqc)8 zvr9F~E*CI#%*>;j6Y*4v2jWh-Hm<{B3);~O-I_>5+*PjnDuP7NffXy|Q7vX|uE^w*~BQutuS6WMT z{OANMTKEufy%$YoedG)u)WTbpjq8dF-u&LZ*IoF`_3NKzdnP_UWAw2rR?M8W_{Q~J zy{D{L+_ho-84JSfj^fni7yo?SbE%d4cdt0JSYLPSUD?(#o7BNmpJrecXbR zHh{WQadxf2IiHi>(AOzJlwR4W5A)S^x7P7_Zg#Evb~itdt!I1^1HutAg`?ZhfiuDP zpzjsWQ&&dj@duuS}#k({1pI8A$5RSFIy@q2zL2BgPbsQ7-pjWA4UIPYQ6mT8!r=y3DBNUM9Ks{ zN?&NwL|Z6KrAEs`=qs;jFW&UU?#joUHm?g1&B?$(tc>Qc^*W7>xF$lnI8kWWpIw@=zom^qY<5_|bEL$_r68 zjuZHG9K*vKhR8u2zHl&>e2(cspe$EP*<2WR*VGAV(U-ITcV^%5lNRgqQw`~^h)v$q z{-Zf7Jhz}L=Q36Ax9=N&&!kbo2fb(I*F$T^=zew92?Mn=pi< zK!+PD!(m2>q5Zv)H48lf1Isjy+cY?^Vuss0S{8L2Kl4G&uj1Y9gYV|Dig)v7`K#|vRkj9Fti8Ck_GAQ^)q_o(LbBnKigyH7?bP%-0r{1`BEws*6z{0w2;ANaY6}l!d8?bXXBW`1p z91eJi^H6b`n)a`Rr)7T=akN0N#)cDW8$1rzC6cLeUdO!7#*X}q6Fg(uTTN+E-GmS{ziWP-V*#3VvU6Sk>5|H z+it|FJeAFrK4ajT;`=Og|NY9Py9&Ejp)8vh-!Gob?ilzhzQZnc>NOU-*=p}$D#vH* zQlBErcDn_g8O^$>&#Es+s+vvZJpg;k_l5Vj!DSiVAAUEyAKyp1-2U*};(izwE`2LX zX#qLXs;bSc)y*oqqx7xCSBvl8e?JRNDGlac8p*0%@a$R!o;RKYSy7E%vQ5BeAE!Te zVIvFFvf2Qv<}BaR+}P0E&@sHxJG^mtb75G0Q+;!NN3O}6Ysz&H!bM$ewl3RIQ|qm% zsilmFLM6*oCV}K=_jM!<9Y&*QsGE#R9d>)9V{?=>L)0XwT7MsI01-R4F6$O%>gX zGOII6Wd;^YC}hso0Odr18@Los=|U_KeyCDx2?jA9G&Vs`!d*npD6&M38&WjLc>v<# zkKq~CUV@Twh@ws+@YprzCx)^S%6Gl9F-SfhIE`6IJNiHzu|V!5M`Thi8!r@%#E$?| zPksSPU8vInM}akY0Q7Lqic_yD{$zM>Xz#Jj<0knRZW(jQqPdr{`kL#!_dYSrz5KS( z-zt9o+4Hw6ZT-jG(p~)5?pxUO3u_mh@#*^MW0@zoBUUkaRMHZviI2K^?fCZJd#+hF zI%bU5g-0mE|7utN^Yb4vwfLEQaxsmA({U6f&LG1DQ+ST@ZsiejKV|KyCyl9 zyAs;B)tH3-jr>=uBkMA`nUXcS-4L!a`3lRH291S0yhn!u?l1cZ2Ll7X400vzUbb@? z{?QG6^^h?@+Wrw#7=!PRNZ-=4zw!TuF1a zg74xiqZ`lidQ~!?X|r2JIB2~E4Qz%{`iI~idV7I zig&P!*nGuZ9M}J#yk|YTz)|_o{PX6Ho#?l}xc+IH*AL*Wpw5HUhypIvN6j6^me#UG zX?7N8HC3rbkK0-${ODC)K=Nf|DQ8WFr206#;LK`e{||3(0v=VBtqq@b&Z&8xQc0y! zsY+@}Dsw^-NJt6@BqYppfCxwuW-x>q5fvcSU z-P+ToZ})AldNnzG?>?t0B({3*{hsIl1B9w%*FJl%wf5R;UNN7Cw_AM5!_YuhVUerIQC(G5N?ehX zLtD^je3Yxm>2ei~=jL!Q@}XF+QQH^|=6Ei`66_ig^bD=48R*T42Fhy6OS7Wo_)`<~ z7E-?Ep$2NGuJPJnK5|%W29v&sgZB*n3Is~Y{!sL-hn-ly5fj%NB1q&@ft#;|)u4H; zqy$GhX+P-eT|N!0pqUJ=0%(!=>gy&Y<_LvjLykm96h%~ArE+(f@`?%v&KKer5^*RF z^vTp9HbaB5h_Z9FJOooSJ}r*DlN6GCbMscDUKk#-)6O3E$o$i0Tj-0SKDV@Acx>=Oqbaw2SOI*M z+ogHJMBv(kdQ(ruom!0-8kEKCF_*k>YX*PQAqOYAf6pS>A9N2)F%VQH65pMg>+Xwa&-@#j0S}o?(DuNXA;vAg+;nrArkP5v>ArUcdphZh*H& zJk5%D#k#b;E=IN;(#Vj6M~g~T6CR(`^X1bAT5%%JBUBFA~t&lf$3yd9r6X zc5tioj_|d-gWd7*@(yS+0+I}5G|;yO8fl;d2C5Jf+kyMA?{;GHc0&EO1H(Fs&~j>X zOqLYbc2K0@f3=$qbgW`rrO%d_y;=BrZ=-bY#$(6mu|G=-Y35uRF`4V68LCs=FVazI zRnOPhQI51gJc=C|xXO5@UL~sJC?Z%&eJHYIFrk5m%BMx8M7ZPu?z8Obfr|JVyFK4e zI&Bd*Gk}>yT@(NmygB91_RcL-Yb9jm*4&#GiqL300-?BDfqe~$0H%R|!;@M)%B2{esYVsSFk9X^#k z-C+~eyw;}@c&!b~Q)zu;U33_CNXYgS)GDjfo9;;0@LC@Kg|xg=%RjB9BU-v$OC{O~ zto2QY7u^JvRoI##*wD~B-7xs31@qDxHOR<@)mqIs7(5Pg zxD7k~B`8;jKFk+d6y1p_PQWz2l=mQQ=8Pn`Y73W_qOe^FOueOvikgXQ1`3maHt@3H zQa-XyJWPeU?OC`q+~vZbq@|C1&{p2=vF)BcYf!~6cTu5qUBp+V^;{!{zx{}h1hQKlXhsu;B}xmV#} z=sOHImCU%r*$T@_GAnkffSE$jMei&jLG5L;s2K@-?<_*0WCCgblg>*yVptjh=r*91 z)t|*Uu8$mUX1sb^gjfhKzskDB%Db&}E2yR7vT4{=8ld8mv`T={+b(xXSeh`l78Dd0OZO<;W+ms;LWOKyW{Ac3k!#+ z;d!q1;)OFXqg*@-6AHVg;QM=W<;q{}*&`h1Md?%*KKr8ZEnT1ZY-v2*E06)^AJ|UF z2}=#Hj-yE2%bcLnV79Ywm3YqL(4pXZNe5nau%c<`45a_^eVMlIcQ_d zu;PGW+8SWOWU|vPNY?L2v8h_5?oT$ZojQBSV@(lh;o8=1UA34Ek*YvUs|YNy%aaGISC zzr~DTL^C2dSjrW`(=7g@HdR-ZZ~Q=hu3)X=x@qiq#6~ya@#pnK1(KU0C-yDulAY zFoiAjA_;pVt419_5E}~TBUaFF8<0emVt{3+ax+xzIVAm7`uKr6PEYUrH67@Wt;lW5 zkSg)^BhTKq`@Oa8H`5<}N#6ilbKb7wFEC_%{DgEFXZ0+%5c0ty-1+HT=5a2^sLpX( zU*zY&z>yXCl+v7M;K760 z`~r(#$LYTe<7|aZtr<{`puTAPx}bde=#BnE$>z zJ+y7u5a(T$->e!vrz-dUabddo`kSAc@5_lTEgoY1Aa}sx$&CY64T`MAzNB*rm9F7o15`bS1sjd)3}y&eWKcQSI@356zGutpRJ6=e zIeZ_vJfLBitXZA{i@wE`D*pzUses}r`*7F}vMW;9POuRm3ZWoMs*YbecZbs-tBU6p zAJ&C*DTh|KM|b6JTuF{?Pt2XXM*524mg*E=R;XsFu#}(Q-0og9@rAXK*xu!}<+yL8 zUjn|>fUh1__aSjq=+xzGHc`8271RbkES96vH@Y9G)KhVjz{YBX1C@DG*=A_9BD6Ly%r9ue%fK-3O`Zo=V0PChGwic>p53X6(R3ojtwPyUTTluFnqu(D< zQ@3ViLme%ly)~uMlCBX$HUZXu1CAYlwU*0_>v%Zxa?r1t$4Z|Tfyz%_&mXV`&> z*d0vD=Y_jcFH1M_p)azory-QRcAWGFX%{-nypO%duy+?DWUe9ZLQDpqlak`h3Fc~Z zyk28YE;tM$lY#<&m~9*$X7(Iwa^vv8<8ktq6>?|!OUTjo0^&~ZQGa;sIJLkf~@oj_7ugQQsH}TjGGxMO*t89jvP>6ri@NF zhFLodRM-Xar!yk7$%h$zYGop1DO^{P2~4s|;)%nHxMgKCIJE3;j)Vz^m^HhQJ~^z; z2$tSeuy)mmrtxELKzq#BmyLxx7X>m;%-O<&x37n|s zLsc~&R__H-p?tqZr~P-FlG#XwvcQuJ)8{8GXBlTbgEioBGDFV>&nOW~`S78&!@4?F zzA<2%|NKv`rI&Tz;ui#HT7Vky z*H0C0YPL|bf!cU-Ll)BPVcB!75q@}t+!4CRN!L4XbMiBs6mdGj8i&T=F@>359GznP zXdi7d<$3(xaCXGzL#&f71x8e_B1_;7W`?yj$TibgMgapupupBBcQUHiz``ulH{j(L`@ z1b(EG;>|Qh{U6X2OwwA)goZR17^naStcdK}7@yddPE*pU)kBj#l;RhKX0>TriT4mvS>54yw>jY8Ld{cQLuS^=-9-}(@NC7 ztij5n8oRG>sFUDi0iN<#fOU=S8?!I;4c1pxyox~mCtvy5%fF&YEKvVdgy?^D+l{yG z{`>RZ0l$8YCepO`E>u>2%OfoR*!|K!zBv3aqcKE{iC;m-H{%wr(&+TMkX8fxqgJmr z=nWy2+KE0G5m=ykZn=u)sK~CunI#pjH^dKk4JHkej?`)mv`)yJg|+Abe$F;f*1)mo z)H5wg2;fx*W`ZfRbf;2suv7Hak{L}y(xsOkkrw}qqF+?Kazwa!)!zEVeWrnk~3)t*6$=$-*0OQ#Pv_WWL5m6d;Ut+`Zo>>$ewypgswq5U(9)3Z( zNBYTY()!magPQ+Bb)+fy=!hzH)!v40?c!g*bwSWB7T?6b!czjcx?{NIDCvjLoGu?kG=p5BItkD3lo_4lelh4g}o)Y-B)CrE&ffC9E9TTH$f853nRPF^7lRl ziag1kMgCD(*6o=!h0|24h*V;=nyUsAt?ju8nOr_tkY1AArIfBxLi5?~htD#qrh5f5 zy0|d=0E@{1(?X0y2+6Q&+(v8y2xWyVkP#O-b4m;5o>u-4`zKuUNYCAm0Lat%dWt}k zLtftVu&&>PtU6{90J~(zm=G!fWjr!yM&()Y!=9!59lv9r5r+JaKO@bj{p>RbgdSnO zW);q?KW;+SpALO$aQaXhhFw#oXCeEXxo{SonXMMwlF5!F%$F|hkS@{a0-B_{Ao=Oj zFm+0|Ff{J8nKqr$_qOLG=*(6NXagt35FtF=f()Sx*TVsOr0MTj!13>s#7pU#4{?WKwp zWg716w;!FSuOzTKtdaK8F5rsI7>e8a%!ui#nO&%dSzms9O7U{9R;-Y9IEzRrCh(P27qEz-sQE_q9n~@Pkq#+-P z=D~;lHOz7r%b0A+%r4BX%@){ye0B=p1d}%`oh=;~E|y#@xp0=5J=s5;4}3@1SBdo^ zLZS+-ustzZAJ=e%1!I>(Ws)=Ab;HBOtG;L|DmR*fcK^T7uz*pOKgjj0`lfJT+-0xi`%4hlr{A45HH**Ehba@IM_Oo*g>;rQOO8bdSX$jQz&+eO*)51} zr#t8t2DmjE(Jk@=zZB_p@x1s)Q9!eR40ayQE=Mzj5;O{EX+c+ERucmMT~uD9-U9>} z1(?t_FPwpE6L6K`2sx;X)qap;bC|ZIX7>S$(u5Y`U{Q~dYG`SuEB91urqwl|D&Lu5 zG-L)-Vl9CbhqY|_U3nAL?P*SvC0>wiwK!avl{M)p<_x>nZnTsMG@&3ryCyH14U;fe z%;2OQFT<&j`?vT{0IA$)v=>+fd3g+8oS**gr(gT&fd5hdNxzWmALQp5zLJw?-^yfez>T66i#+`PO&mPQNT3s6^^o2IyF zxSPt|6mpZ=o#N&JRJRDjD-HZgq|X(=!j{*iz*YrY`(c}fl;Owg- z31dLF7tH@FNHcQ&afp`=JDFGa^O8Dz|1r3KRS?T)h(*&!6e<5R_)n4HKMe36%r$Vo zj&E2sXv?5|gM`*WG*_p+k9pcoH_D}<1yJ=2 z4drMCYDS{Oi9w|@Xc(y6gX*ipL2?C29i;yZ(&s^XFG$COuLb!BgS0BRCAcpr1oN}Y zhEzj$v$%fgCie-dLf^~|obJL;E_}i+2G&=HdB2w9H9PRkz=K9kr5zmrW=BU!A+xeE zJ1{IN_!Mj@@<;wBbPS6SEJ4}X%tRzpJ8pED*deJ$nD>PF+}%G+=%UCE$~Ki|mxhY- z-7cfK+;7j&m<>ivS-Mf9wfodRhKoFd$Cw>4mf9o1bd$xNQcxf9n!ORorbF!ky~<)s zH3K_!GImOUow3lcUW_jp-aK+#G#t*!9_i=CS;z6?CXcMG%r72RTgz|)O!R?&Wm)yG z{G8#@&zkA^=GU9gHw#;u_ccG%EKF^l*Sxw}2sf8Ek7yRMo5Q0ghNIE^{5LFg%0gQ$ z2P}`m(CGp;h65W27-euSEmRO96E#D|g$syv?Sm0U+`tA%`$7ruaRH15$Y3Z@?m0%q zKgw57eTM1(GE!ut9TP&;ED|DNvcb!%TnT~sOpC^8{b3BbtropeRqf9y9_$sg5TH$H zYNa*%Q$6rr73CQX_HdX+UD;;HCBC%xq9G6R1xt`fGQkUuY6Qu42;$|)?*?hE%Z4DJ^? z0K~K33u4&`#1zjTgQ$S^+gV`Z416-Q7(Fu<{)4Q$AYK>_SLTGvaw{D6G`Bt5mil8b zX^IWc4VO=>t#%aoZK--zjDl;F-lDbKZ8AUKAD{g%_g;S*b7zbQQgB0<#)fBwmxYD! zsVw?w79Gl>%~|wW79G!eE$jU(A*;hrDV^kKe=6XC}o_uq2doU#$m<;7Ef@QNE%ke}X&tP4g1Bc(yKCIOKm z?nHcbEE??vOJRO~LL&HS?1dPAFh(n5n~`T8n-Xh}37^I2cS$#H*+oww7GklpmOmbM$>5GUpn{5foDJQ=o*gNd%d}YMA~ES|Ohh3Xd(eAx#%AjxScF#raGWjKt66`BH0ZW2ZeA zPsdK5ijq=}ioczTDzq z#KLC6-kXOKYSZns$Vk(T)GC)in9R5Fys8r&G~Dh$MyKCG7N<{dLWPGDLX3IEppv#Q zJ6s=U7?t>Vm(z^i<^_msui+icyscchDg3}S&#tMeUHfe3>StG1*RFl0bI%>S@4Eet z+r`06JI~#+>CK%@O*`M*bj!J&P2Dwbz5c7W-hAWrw-^>{vD}$r1vHS*^ZH-I=)>z( zC-@hhQLEARJ@;vZoxyYk{|dz3bEN=vAln8*(13C{p7@#1)E(Bl@txMUK!f$iYS{Jq12>mA&SK&x4HHa{^Mxz;>+tgI0Ua#hJ zVBJAzXYOwzbTIN*-&<99FBO1LOJx6GIF>T7$~BZwp{4R|vbTIJuM`vhM+eJ@OSb=v!F;&}t$zLTLif z8nb{>Er0Hwl{w|$x@9*Hccu@VUh|)>6Pn>GkIZd5w6G#NdDHYMD;vWa{+aT%>(^D3 zG}P2YfOuK$_6>YAdTgqu` z32iN=xp|#={FFSZ&!Yu7YjgN%L0agdPCK>QX|kPAMgzsYwi>BjpjK`Lh|E8*GaT^y z3&LSlXKJdYrl7O1(As%}g~nQDS(ZT>DXeAX_hMXiz~|4fSc|NbVa>2QVm@>ji#_Y` z>CFjnDW-TtZX!bgB*!49)U*N6V3%iyj(Oc+<+=*CQO) z-3wMUL;kmTdwr;B^K%R4+_!d=;W^LlHSxvc@^hOO#69tlbI9uH<-yuX#hu$6$L!-) z?wdN}z_P)ut+dY+zh=#dwuh0Auz3G9X?u3&j=QdY@Pbh>z3wMz16zidPp-^9q z3~C*S{}>^c7O<&>x9&7+jS341cuvn*WNDPZpN=!2m|bk8Fu;&l_1dwX>-eL4Uz4_| zq!5BbH$Noo=Y5kX$xUn0ZcXE()=Dd1VWzEmL^rI_^CMwY)=k$f z)CnUrG+bZ}T+`E4op!r{@kxW1bGwb529Ecox(!B`+h}yV1dI0+{{rU`a-W51G=WDq z@CY#`_+!8PCLEAv*E`8y8DP`Z% zZI3;-!i`BX5LV33|3c85(8|D|la$}`cR$5^plwBBPYBce~bu>xSs^MD& znkY~ukqsaKk3{8x^iY6vce2Pko85Ss5%8Iv#o4S}09|UCn$Fv(4=<(E^`9T>{^sp>r1S8kau0l-daU^Mt*_IF4F?Wv zTK)KA{1>lEU%vS^%Dq+6F6yG&P9C%VS^AswVNcf^J9fPA)UMm#lsT)kQTPIQhtWKq zu|q?PHP>tSCd~{DABBSxK18F?DI!Ce(=bfx!E6Oaa}0OPnu&ub^DAarhT$^X&M_yW z@WpxQRnJK^rC;hP6`m6g{;j7$+DUBM`=-zrUz+m79r|xk(U;x(qvk)@&a}-W_Ymj1h*rT#%bA^> z9uMDX4et)~;jp&I-)T1Ib!Ng~Y)mn5qT82~lbzwSsj_{lUX)yBNoBo!M0s)548Utv}w}sUXqA=W&4|MaoFege)Q?#4@M8WX-;d`=9x=2_M|_sY11Q*uiyAM zD0h<7D&N+rTo82=TFU(+{CuO22Ks1g2E|g)n38lUw8Ba4PHMK%3%g}oy+G!n2>4o4Ow%bKn-2ff{<>H`~L_J9*hj!DG-<}Bq%|K9!J#ni`he)Hhd z(wR+%j;z1_iASh#%0kk=_aUW7zd+bhr?lp|6XrisA!)N;*me6a-rRHBQRcgx4C=9| zUWQp6*A?C)Hk6;LdKt2#^U6&5C)JSpH1Y`O&KNP}%IByg%RYey#du$W-$!L{r#m${ zV?gx~eh-5ue$Ti>E@o77X)gA@3FA4{!+7uc3wzJ9<N2P?jdHBS<@r-Y^4C*+ zy?LZR90&{!n*;t*UrNf*bYEB)icqAamrizsCYxU;FjIQ^GT44U+yt`G*BY{8LKdrl zKqTLKX1-T~usNMRfgnSeaYOoe`DRotxoAn%MrW=$(6;uao9hPN^1UueB|^+HhK|32nMW24^M}eg0g0W+I|$ekl)!x12#!n$ls55T;jGFQPP+^+t_M*E=n* z7`hZRj89O#kVV$?C+_cGzq@xIaL_aP4xQX>VqnH;mr8yg5S~ zX*;y@d7K;gVl_(PQaGu<)R9IP(XG~X>7LiAbUHg_Q3=aQfwIPv zT-XIEphgYvN5UnKj_GQ2C?^HifXF~(eH8YbhOXQdv$8}GmIl&+A}*+)Ea!!=1Q0l} z0k(i##;nu^jaW4sHE!+5{J2D1kB$GL$B2xNQT(x`EAE%{WRKQ*66LC+~saz#lUrRE@cf}{&lLpH6=q=lI@Fq5|XXrYhhr_;1l8lFOK zSG|jGx3KVvg(9J@hcCsQ;m!!BbE#ghHx@_@yWNg3hYrR5fDi~2$HIOMu>#?|ChRi` z8D3v{nvZvimdu9zS7s=<114eQh6xV)6DbD z{50)+BwwVvLMX?HN`3H5QY;kAG}Ic#8fFt`gb&5qfH+WudQ-1ThvSc}3zr@di|?4<_TcIvLsmZ6_EM{OOd2|9-srsW z$R#7{7uIJNj$6<*Zru1iXVz~#w|mU(YrCfu&Dk?|);-GxS1;Z-z5PI2DZACT!ugFt zxR75pTsHE@dHCg75FGa@qyqtwfy~i=@hqzY37Zg37S1%wN!@zv*fD9o>ZNanskfZL zdFp})%<_=*+_ZSHa)?5#`mbJx=zYCDgk}Y3^UfUqeuQXpFd`t_khz=jWR{}NnByz3 z9pE`Q#`57{hsBzD8fQnzlL}!sTTxM8!B-U5 z7xR_*4f%YtVS#~f=V>wu1A3jIU~aBG7#vg<%+%H*SP3V`n`v>V3w>6TCWJgYc~y)q z*y6A@MjNL=8z_UHyrDzcedq#aG*)$!NjSYL4}F(TO2q|_Ui;|v4K*tto7c}L@#w?Bxnco;K7`t%Utz-AReG@Lo@#DvB{dRsBMTpf$wCW;k`S+!5 z`{vHLds%J8qC@Si``RFK6101cuT|xPLubXU2E7)QV0q+Ep;)C_rgWCu3^o2Vlz2sf z$CB~Kl}$H2^U5pF{Oo7K!R@4#zTS?xHcJzP&!D-*xKZ)^Em^eCvd+RI{LXIYLOD6! zd_z#L&xAtn_wwFcA3~^tUZ-1c@~V(_zz!73-?D3fMKsFFcj8QilD0eMP=J-B_jF+) zGW75>q^NvWvgFD2Q}!;aJ?eO8$b!bGSaV?Eg4-r#9W&)mZ5p+xF7sI0wGXcy9-44- zOZp>$ruEHt&X_T*^U!pDWzRd)Zkm)++|o6fM<|tIh0FjA`XDWL#z##qCYdIhBQ!lg z3tWW4>hp}W(y-aUw;E`*x=YQg3)cCz`S@mtbe$Y$?%WMmL$Iu%(+`~{$ESvroau8w z;bV%btimMdgGCEoZh?`luZ@V90gcIR{q2^h`}kez=-AeNTgyO4!GYGy-k1f0hbWGh=UP=Q?N0u@Xs@+Ws z9fVk^^``A6ezA#eWx-LN&fTa0U1Tkv=cmbj3j4_qP=q`E2$qWZw5SRl@VQhnQC$TA zP>sujVVfP7K0pXm)Tk=@a!~~q8jXVqP)W2yprXvKy7^-U=4P6T?rNQLXj%2J^+%Vi zeD3;q;ljtSpE;lghOX$ywwhtfCl(frTehQq#jLR-h6IX+4O{bYTiel_8=JPix~A>d z?|!!N8dYuKWCaS*QOg<{t_KwUzms78f8=w}4sXR#ua>n-fjwbtB{V`cp*;X#0=azJ?iX_ z)bkOP%hRVp2;&hW>vHJz4j0rowFavDG1QkxOL4y-PoT+4+O zLOo4TYFMc}{2~!HhXQjbhHA4Dvx1-qK|qd+6AFX~q*IL`cAVWHSy%jmesONhb!Mm4 zs74B?$zfhfBcxMeN6!je<^y869&apvKv?>iS$p}$pv8TnGrAI3ar6&RWRyL zM_MU5mZwM4qlO|^L5MT>4ZMMK#jeYz-T6oI`TYE>K+FiE=d)Qc1Fk;BZjO9DcKJbC z#4X5rY*^*Mdk9JiGcSBY%;9h5L%o(>*g})%IUrOFo;lbTU-j^Osf2#@#vAU!5k3EQ zxoqa}NMvYp=@(=l-99)iedv<$S2%vQwX$(a!PE`o!eU3)?(Bx40}IT-nxdkCK5h4# z>4oudWJrOB@%EWl{w8j~MHl4O#Os@~2nk{pY1C+<1}!yfs8K_c1)7SxJ?L_A!QH_l z!J|Q;IEai!YtWB)iD1|p%+wP|gA2OwC*by4m<2rGRpG9aH;%os>mbR^6!UlTwgU!b zMKmc0LDJO7x~Fn}%PYhUo@qBc*w%G!d;R2nZ?12>d-<5uCm;HxYuoufql>1kZwkCOXvsZuS3JD9Z2Lw~GQ;FnU{VW89u&{2G*X?Kh9R^p z$Wo|K>d);8aaup_Ykf?scg5f*%9YoiTrzw!Sf?X^1WXtat@ z*52C+8WK=>!=%GdO$7V|39bOO{A05y%=l18C4>VmPu zvBkmPYNa+4O*B!Zz5!-=k*Y*mNhlYXl3@;7EP)V*^w@aDkqj{-B?Juw-2!~EKp@@b z#X*WalkP?IqjHWC*66E3Kp$E{RVQ^IDOICdVmQ!y6|hX8fOz6h(qFnR9ho-a?%(aE zeN!G8B7N0%puMzm{=QkK4oVO4#)FSfJaGP&n?F1>ReCXauBPKBv*zEsbYR;lsFMo* zrpfp#irWn#9sGs97>&omj0kfl&F*>A!4Bi462n-(#`%FMr<|(BKr@*xEiJU8cR;p1J2$|x#pcdUVbDz_q+%!9c5P$JmCTTJ{CRtJn52#QCC0i-~`=XhfCO-Pq zW5T0@>ax+RW8wVUr|10qDaZc_#U~f>-z4|FS>E@$_#h3e1bP8W1LJdY99SRv6hJFR z=8aAl(hE+#09i)wXR0=X4yW>?;fFvne4b4*`P$RW@5#6!{LEKtC_wg4g>nA-YA8TE zNR&?~C2{j*sr|_lC;0sTkW%>ceegte^qk?#B%cCDft`1x6~&Pk!=A3vK<1Q>6@%xq zV&Xh8kh15?Cy0gSZtbz0;w!|C?m}fARUzhaaree&?sw8!CrxwGNHp-XqyCcM6a~B3 zWw^`0uQJd)15Gi|aDc{SQtm|)>R!-VT#l9o3%^p_45i3wQHdJC72C*%UZS~c0+@fy=TO{?@*&r zW1{d$wep3nSeUWbzpAn{aKLl(%ButlO?!Srefx9?h zU7a1Tg>`j{pSF2vYYGjrH`@6oBMmarP%V{fsX{|_JPklhc92W6ruox^v@|G1nJgH< zt2g+(KN1WeL-=1K0^rF`8s{Ke@&`Bm_O6K&_r0_6miO))H);Pn8>ZbhX8>O@ciW`N zJK6^hn7c#VH2LliZrSv~!AZ?`zqNYjrw1o=i`C1Hw6)*2tg3w3qbp|aUp6>#I|Tr9 zGjcSB#v^N7x4QUswrw_E9c1lPd56QCZnT6rv){~{Eitq=(5LlYQ8JTJL<*TZuv;pr z5`f(}V9k|1#<-|XuYP=KS;?Y@R!Dz3b*g*Ywn)SLAzzCf`Os^cZfPAPP2n3`77c8S z*RF zIKSTyTXnd|XfU*)ekDLILikq&=Rx6_#thnFYuJytpm2FnFcVQ4TY|J2zw!oR4Zdk8 zq~-T|?S`1qcq@!nmbDhX#X?PT)G<=mExB4WM*tmbF{BrX5C;`Aw;Ywwb8#Tc*H*|4 zhX}tb1>LoP0G04R{3KZzNyat4Dd=V)e~>>As@dkkx_0OIBo$0-Xc`k~SRZW@{)H57{cx|C5emz%Vv9J*3vh>hc4a# zUAUoLO^fF{Q&4<{f>xYT&KBgnR;b8=*Q?J;)xr!pT3fZVNt`s)~6!%v^eB%%Ag$CC)7T_l~WZ8lthCLXVI9I(;BaDE~#wWImKApQseU!4ajY9 zT-OO5b=r*+7=$5G3V#HJXt<0xDyxQY$BHpEaQ`%%LoCP(aYa36WwDLLR0M=SO6yO+ zbN(~o?e0S1?IUcC+kvGqm?M*$9xre9Eb#DCUGrT0c0EC5Q+xwmDq4xA4kE1*38onZ z#sO=BBl!>g@ah)h!_%hr@#vWZ$e)P6M=OSEVkqDF^)D7paK^*=(brsegqVo8$2n-))6AEvbLnfosWZZ)^GLsRJNb`*p zLFA0#l$)Y%^0>+1W@%^4Q^C8_bOyIU7fN$G)7-kWyJgX%!9ckNN`(ND2ES~YCmY+& zrjWdOjzljV6yd`nuLq8Fz{uludc30NkPMZ13?9GW=>$)Ed78&lGfx#L6o?Wn^E|6P zT^^y_GsVMuLLM}yNdwT18F)fnd|6rn;AGJCvS4WDigK>VEWK_KkORwLOTGtO*+}*! z|0uQhHwnjq{LAkkg8+I4d9Y~M&*dCQ2a|ScgbHLVC9vU8S4powCVg!+qrR8jEOj53 z-a7e+)2+s$EoRm4Km3g`#imEC7>D&3!;vt5z(AX2WMTIah(o0lZVB6}Y6n^2mYE%G zo-ov2v}y?dDZ?D2I!H{A2k(kca5=S{(WY~7M!Qw#&{^0kz0P4EjZ^K^8c4;yIkZk~ zNasKieTN%jBLcAzMu&y~1|!NaggB!UZ#lQYpkuvv7+le`NM_rR0vS~0)Pi2a2kZS} z#!s2yLlK`W7PN-IH}+$TMP}#h@{&^}OBrC85J+O{r3?83ExKIk<9Fyi>Dmwe>hu}3 zxukzxnns1ylbqIC>3V(=pCO&_7T8U-G_B{ezWX(!JCRQftFK-pbI8vf1;@qeWjjB> zCBwbAPs`dKXpBAV!A_CMU!on@#ptI?#B~AVOOP z{GK!M))+G%B36n0O8^kuJt=N>*h*QH84~*-&VeVo2vG$A;dk9N{4`HEX79O9SkQBq zGa7R6|9FUhz?V~CKXRmJOiF&#$?h4P-4Qb1ad2(%JfqQ~)mkjPOK{lLqFphFsnm8} z4;{eD3o(bo5Hp#`u9MmFbLJSNeEHa126vXld!{6wK7$&eXOtD9RxvYTq0Prt&7MWk zCbfIOQc#cR{!AKp&+B}n@W-BGe4ytNKd1Y%wGvfHzhwIU8_@S@FuW!3Trx}b-_+OO z9%h#6?eP&6c4{)yATy1GDvszdZKIa=decI%?*xg0>FGYV+vkUY2hjz5&=>TT6$BZa zJu$DBOO2)EcpX+NGSGA5x=i@G)ENrAnbRA=tflfTDw_>(4ain5=vTde6J;>uLk}GE zbAd5eNAEUONefFteOF)8Q>m&rxT@p$O(TYHdST_<`%nku*&d12;^IBuele_bQep1+ z6^%nXCKkrVEq`F<^eG2F*wppGfeDkR9#kwKfq}~(UAFxG1tpc&J-U4M;pMfUu}aVw z(-cjhv4F{BQEB0HX8J5{5}n=vPY17$>BN|z!yl&JKWj{Aj%;tteh2LJoR)pk8&K4d z^|?4LUl@$WY?=Y6;b;rFRElOfd-f?3q#nM4ZmZf`#gCT)NA5f<-Nzy8?8;yUHGNh^SS7I&-=p7ob4EJ;33} z5BlB2trG0{JY->L4p--InRd0UWX$n8y7~1S`7lQnYtB@K$lgl`4CGHta5O{vHIKF z_ErvNidW~UhFxv@29)5lRV1cWu*FPhND}eVT)G?aSz4_Utg~f}Xyk7e9)TzJU zzAJb1q9K=s`$}irII8iM)~b)e7WH%H*EB^PNJsBYgA4X3s1D#6DFlDCp>WNGyW5)EtbNH^T4nL7)v|h6&bNWJIRHRzy1UQWS z%$v8|(#OC_1Ek+vHFDC|cS^RTp;LPCPR74?U%4!{iJQ4%?t%F16-Boc@pFqP1-bkn z?LtZ^Bvm1)b5nBp9f)HO(V`GYd~J}Q;-z{owW58fGf%cTvoagJ$rLEHvKv&Vg$RmB z1wN1$ae4BcF}pqB@kSu)KOfMu{%XwP1>dUTLt{0s6f@H~&~3tp#H9YdZX|^$6Lv8< z08mkx2ZW#+$)Pxi%1H?LDxV;>RWG||&hYkFMeVFV=Z;xg7a^lPZ%|Xw*k!~0Co5MS z-!OgG($Q(sKk8RcEvANvH%%+F+4cusE@>)G+w*@?AVcL&xp8XGa(>s=pRXwo4WB#s zb7SfF?eeT`l_*C>C`TqG;zw2GkdF~IWW1*}EA?V*fKhjc?>)(m)Yyy`SHzFZEC4+rH z;QOpd?o%f3S#`YkGaqyBTzP{_MJpYA#*5Dgd#R5poU)sx+x4v^iY#6?P?oF?MT4#Yve3q?Zlakyf6eMb^5_Z8P8y^jNd^l3r8Mr zw8-O)-!uN|{O==GKQX`ACXYA&>v$P9%KSTlUl}$$nl?Mw2Y9~E6Buk*)pc4d@8Nd5 zQgg%ZPCNnrceVpnzbEX(m@6{%D5G~AO{^cq8rf*E@8~PX!R8A4jDG)~#Ar1dR(*Hw zD<5IBL0-Kw_s)BgYli~?!+E~X>@r>%JSWMt!wT4IxbqZOXb0O(RU7bxKD%XDg&z8z zyq>${@xv&bq|KZt$AQ*z`mR4Qp21%kzk|jq@aMT`OdcQo(edw7ZE}2W{twNs`m}fc z^Hj%`E3_Xi`=R+&ulJ7MNkieuS7<+4$UY$OeO4sHNY=e&{N9t;volFU0ly^^FbeeB zgEF4cs4{*Br6g(8pDmB~|LFMlQ7tlo<*blAKI>n{%X?7f--+?^9zdi12>Srf_j!W6 z2U#bQ_i(SghaKF%C--2nt2pez((f6{d4CdnPpqDTL)H9TsJ;r@U%~hwPyGVEdK(Pg#5tsrbpz+Z<*Vv7#0+6^a1xp@_9eZ?PM${<3B`5ri=wN z6M+)|@Ur&Xk23#9z4L!Wp5*?&e|}&M@>cKoi~MF8Yv_D|Q1~R)#UGGYyVTob~#O6#cp}k?^7_j3bRe-oPBN< z$c6N=gz?BmoPeCrb%V=2S*Yo?0fI8 zcQHC!)dQ$1qd$CTxN=(?(4Pr&Yx`lUMw&pk%k-s;zW7hZ6Hq`632R9_A-<8?x062$N27PWWeqU&`n7jsz}Clel-K+U!`TtKT~J zgQDPP#jf_S@t`P6f})Hz5p@q0?ga`Fw#pQ;7o*hNj*t7_-Rkeo$#h)I$wp&N?&pa) z)d)Q3H|Nz+oCS@#?w4VtL8+V{8ubyC_e_yTp&v@$QQ{jFAKbx4}amb83s29MWcFGs@G{VuohMtf^r9CLbhx`qmc9d&~qcH+$EG* zN2x23g`jxWnX^dNqEK5Awk1~gc>k%`lxZ`I7e2gV@WAvjANc*g#_Wvkjuh$8iT zK*JOm{Fu}upAu#KhZrxP69iL0(ZxNH*N;}@`DM&0<1f${%>Uz34C7aC$e%eV)A$bV zN^(tspuvl0^p|27w&B+Tw&n4_cAboEo(qI^eQCVkte28E6pwZ_@~r)DXxZB&pNYGB zSCKds)wSj2IBC`WcB+iGVHL{w_Yn@Apr)E3^7xwm23>T9oJNHwwJtk21EDxh`?{C--fFc^7c%BbVb8fl6c_lZ7jZI}xGBhfIh7 zM)a>rt5uURX2uy&!i8X0NZ1(8!k~GM#R6ZA7eeK;gae91sr!WVEqa{EjworzUa6dZ zy_Y(VfWBo3SH3Y63G_UrDN;8C(7Yd#aOLx$jQ;@R6IlFViCC5hl<^;8d_sh;Q2lp#`ivB8257W8Hm8aN4_JiW`f3lC&Tr=1n)SO9B+5&^cZjNwXX-CQkVekC%CqGX4_x+vIpR@+UBVAFBxPhA-HGwqSnfNL+-IZ6c8JcW{5< zPIDpTaBu|$Sy?cRC?*oI;Hr_NP&Sh&asocA9wG1Req~?$LS` zyL3!s3`6!$!&b_Iuaf?0VRz5VC-|?0-*y+^GqSHmjz1O<8PgumL%Rh5{iZ{l-~_q^ zz0piODhY&$M=J?lPo(#AyV=LU67h)V%wkLlCr0KN3nFGtGuaQ(*Ogn^*CEMF_N>Dr zVus;b6qsj_&c5)`H)gw8uQFv={sX?;0{*(J!eFK&HYum)_T-+K=Aver6ks6JhWsA5 zPQU~agZMq9c~Gu=!-|{m%8eWd#LUCGKRlPpaw&|zAsP@I9^4!hcKWGFF2a|C?=bjp z^9VT}BzkdN24!S8^3fy3??4Id7*STL*KEl00*t7v9iFk_ zWQ0&6P*SnAC-M#v=pgKn-1O&v{&(?B^q0f*&Ho_8Nr3{3Yy=b_TPL8xnnc0hsCY}!brs!HfZ^jX7jj4dBWALFduP5toQ&M=;JoZ~ZAfKQa zc_DV(Q|LA6S%%q#5^RcnOX$s~FScB^egb#c)##T*aK8pEVU$3j3S>tq6>(TR za0^as9XEFCiG?Q?p4>Ke!uFHxCz@7I$jh6!y75Hg%87WfvJrJt>eoFud+tMP>iGNb z=ZCF&U~W5dmH1n`Z=^i<9)>I(mrs;GZt0Nt((y&q4-Q9Uyn=2~shY+5%!-#U^iZ>h zDm@JzzRf|C98~Y1at8u@{NOOE)R5L3DnxLKixn=0PQ=7Lp9Oy3m?G_+X6|bxhwbzy z*fgq1_1QIZrm$FD>{t%@;obNTn?}&jSG701wDIJ+7jGJRA~s?5=#!(@OvpVU_}U*@ zHH=5E?y3Bcl@BeTiPFcjHjYE_pBsB_)I`Q@yawkVl!>q>@e*{pLar;`R3D+bFd=85 zAwXSb3YiC(`9XTh(Nh6BROSRVYdp6iXeDzQ3tvqoo;IeCnBq*~Q&MaiO|dPQnU=;d zZ1e`Pt>^iI6iV8GnlrcB&6w<3S+;u;C(Bt9$dAAjdNH{bNmT@(C6=ETYHpm*ZZ zuJJSX&a14Pw|C~aElVc(9(zVTcCcy>j9_bB88R>$#pYr_aeIj0BHjO-O8g6A5Jx zXu=5$FCV)xa)e(<>t;RHF#Dd4nv&T&XHHz_8&xxK%Akxu-GY&|x6e4i!tZ|~y^)nw zHGliqx-AQbX55{fRW-h_7}vQ!tLJOsoy0vV?3Qr?6B)w^_goSuI-Lmf5%sZLVdpbp z!MO>iJ-{uAS64b4oP4vHs?1GhzRkd@!i3ORjpNgT9*;iAvFj&0zz6*{%CwOU-2~G- zxO;h{*UPxpvl=gB*h&ToG9u8k7U#P+8eP65lT4fBIv9S3o9|5}Nfa{zSL4r0qt%r& zH#Cy5{@KM+$BwtQ){WTy_V%CuSJAUWzZk!9dbx%__>*bd=af-KzO;7w;ZHU#dGp?D zk3N?7m%^#*M>9AiB4cr1!S;anpo+fI(fEAx z8p{%gK5t`{6%i+`6wLv};75rBHso>l=B){7(n_t)zH+8#c%Hv3)t%)w@ZXZ|^FPZwR41M9{+#I=xywe$Vdz%ieoH$yHqW!>`_Z{a)vsa}Lwf zle(vSW;CHEN;8sXlqDpT(4c@M1OfpfiJ(AECgXqsgYC7AjRXk1P8ef*7iqor8tgTa z?G0Z0zm~ya*|pL1e7~yK-7^w`UGMJyeCIpo(~PEHzgJbS>ej7$Z{51VD-tj9iZPkT z!q8=*1V^SoDvLz20<{l&^%V6#QA{G3K}2nAP<|_etGepcN0h1=Mno+9-&gj$_#(Oe zDA6jTkZVJzRM1nzEU2W&k86E@q}K7uV{|nmD#aLj?&W&Rp{p#nSa@B+U~v0I9+m-a zr_C=)l3;Lag_?~&-M-9Tyi{tUOIKO9jKyGyGRK74VtuW$_t;GrJ#s4_4(HW?K?iXqjH?&=5HU4U|s%kW?lZCat7mIbzOeFwm)rd#%U5cOG_A={;jxz zYEg`kD6o!y4Bc5(ixR+zAlf#%FuDs4{jCEWq^_oJeN;NMhL@p8L3D2hGc{osU z>@?yyCI$-=c>^FvVVq22h44Tl=kwowrgGI$e&lH7byA?4G2#2~-Cg5^Ox~mWWyN|Y z4H)Y=A6G61JsxwMlg)5(lbrz{m*AXX$N+{c$ARG^qGiKj1frtyX${%y{uC^Z`wS+R z6z|L!&>S?AESf=GbrqWnf@A7QGF^GJHs_Bj_)DSxEoG(8?2wi3bcc-8vY?1`-BzYV zYF}uEth%b)A|?>5Kf%GA*TeY^y2&0l!Ut`3^KPvbzE_+&fiMg@-jhWFL0N098~e}* z9g6WNgclZEu;xAu(-#^#1+Y|(bznE!o`_JFQ#tbQ{4cgWGv#{bf>3MB#y3^=>-{Zp z0uPbXO_g=jZjC%qeB$^YZnb1D`QfXF7gk48-}_>oW6(FWio3a$+-J)hmMxuJ%J1#C zwS&LHdCRz-rL{wS{^7APlLh--o#LYjTQnprrGMxaP+2C;a2+;dal^X|iy1MX zLAVZOmGr#FX1>u~A^k^a(oE$CL6BSyIG-Y3ETwGJ7sQ4rd&v}j0WjR5dV!b?VV~JO z`ZpGh;wEH3X8(^!-S~A`gj+6%X8PO0(Vp_$WUnTb7z#(5+cM^~FTXiA{j={T20gBU z|8z2HP7fH zggi_j1RFhZ$MDv%HI|Ty{DN|X5u8zd16;O*-QL`*i)4SE>~AA?M9FngvP_s1_^de{ zcbd&%r?Vx_Y0cVu;O?g_b%x`S2p2b%NGWTMge}<;XEys({&tS-Z0)eE=;})|z8VP>F>Z7T(pQ1}BHhYkPvpxtse|^|S}-=8om_8pk^$U6*|7qROW)BG+bC&T9%5hSRx`7SAKRCNbI* z=xp-0ELhi+B70kwUpBb(+JvEPcty+DzI8>iiP9`c%L}m*HSjPPcdCi3Mw&6A7Tnkd z(@n3ew#zi~Bd9sHmlPp3AJkoeU5zAhs z-n-N*j(t+-03=8-Sx*9kb&6O)bfJ>i!=L3>9scapGtXf$eobe6Bi9f`Diqo<1>in5zg}2L@X1IhIoG_ zLt@bet=Zu>>Gd;bXmp8E-UWj^@Gy+HYKX{?fkt>xQb4eDSc(lP0|6}i>Ego5RIKr6 z+zYlYn*=P%hmW@QG&hE_3+FG${7$KOrO>F8-VN|z6@ zHZ2=ox1(r~_=nh1NDQ|3E^G}LvJcV~)IHJS6p)}Avk&=6fa^4LbggAKC@@ujc#s+> z;WAq>DxIKJ)v2u#$%P3>m_SBeDRDhpIC_JB@96skA?AH>w%DUk*7s?k>RLoRKbJ0u zdhy5{jfIm4)Bb8y30aV4brgKHrV0WJU<}}4;f149F9SG0sUMuqRcU%%7gT){wYHO} zWeUEZp=$x8m@I%dJCOaVork-!BsheGDA`3xbl{Z4!8-sy#6xv(#<>o{@+vwUg3;`k z3|gHi5QUI~diUi!sktVL_i&tMK&m;4%%r|Dt0A1(Xr^%`cwMTUowSx>uOYu+`RkQ= zf#T4b!Q9fwl5(Iim2|;|b{qfD>AO2OjW(FfpJ;S74j|__)!&KV5OI#f^g-8^moCp; znB$kHE==*OqZdVarVYBvb&HE<0@{_@Lt0+exHSAB<^yGqf1=^p2EM^0$L|R}9^ylK zc*Zn)OwbCM^hPbzL>^u-mY$^^V%8Okc8E%E^?xMqPzc*B1(EG6^$_3k?8VPrKh%HC zk=@U3`O-~eV>f$5{U7i2OEb`CvT-Z6m~E<5_gtM8Uac0aUo#Y4O2$@knN_3wIQ z{n|%&^-EKIQfByq-o6b(8MP`kys6xK!AM5LT+Zmp9*6Xy$Z0QOE_H~K5T?R~3Yc#e z!UFyo5ZH++I3*#g(cz?!Z7yH!J5G&?tHeu@E)-dfNf-~m$dA0V{pr(C^-^ICf$D)keRo0@QQZpv3<4rd6kMdX!s1p@4YVmQtUki41hKl%$Nnw zf+Pc-3xXrj;65)-eqrI3kF0GxYR|76cmqEB$>BQ4f@XQAt#R zpz1xeZQ@F0AD=J@`h?L~Z(oZS7))CDL@U5!&|~0Z85+-ijRL~ztF}M$9{kB_FRMWk zS&}fC7QE32S+}d~#R-AkY`?)SAV^t2{E7jH8~e^$8@kv%!bzL zTzehzc;%zK9~+%t4()yV0;#^ynHGNV@pJ8PSlkrV1bU>06dT~i%F(11(L-co!mPxZ zFw16dC;%}Wti%E#+-vXy97oI~>!m`tvfW`P7_@hEUq<~bFzd7Sl$0;RcYp=Qrn53z z7RUbJ=+rAUf&A#~ts{Tgdw25>*F^G4>WsaDhhjbTxxUBtxJ|Ix^giB$Lx-@Q*9%#X zhZwSYt%CJ4XDoI2QS7Mor&QniQbeh3bPGpkwhNVMx9EqR3b^ z+z{vr@Y`KvwTledsd{!8+7E$5qaOJG(tx1%gdY!!;c(m&cgu0LdVHbNN;6TV!a@o17xR=7J|!2=-#77ZXMV z@{e5?-n!`HY-a|QmU3%$gKa(jE0bfrjFgcJkBhul#vLp;tQtjrAvG$SIJRNULl zyAx3F2wAr~6M|QG#;>LU=?T?r)egI0m{Z@vL#TvziZUe3NiD7>v&@03E)3ZS%Q-S5 zVLtrgYlhW#eR=1eZ{N3c*+;&!XZwqHt~UJDi+ua04WC@He_g)y{QXOp9a!6n88cq- zwL_zeAAa+|oo_v|Xz0e5uc!q1!m-`Ex^_Kv(WXya+S9%JDPWWp++`5>PyMzpC>J1+ zAd3?c_dw!sg$)Usw;SS<6m_}$ab${+NZ4gJJB{J207E^q5l$PF^wCL!f*tY3>0SoE ziU6&wS5U-Gh)CGefF07H&dg(Onr=9OuvU7`-?+QOzIx)F|aRkumnCerI zE1Jqq#CpJxa8##(+$)7?45%zmoua;kWR`t>uhTVK6EFxRljshA?K71e-xg%p5pz>9PJRw2x_C%s4;pyw z7WV9&+B1LcSp=;f#T!!&yCJYCSemW`Vt?3n3sjo31D}2`8x>$#3<$G&1dE3 zeQ5bNX4)TH$jXnMqrAP|pEqa9&s+9^?dR&{?_%W@3$=L@w1U9T>JfvrGKPKiIzK_3 z`>IxL^Tw4ri)VT@Q%Cx4z0Qwj_3MMj9j%xD@l5%NQ8tbRGjE`9tt_Fjw(I3j3W~)K z{59v1y3M1~^KU7oI9P&^k0IqVJg0O*zf3tynZ3B6B12JtN z8w7qOn|HRwoMjinTE)91iUa5ii(1Wa;)*Ix?5WLhhFZf@-;3Eead!DxIFZh>^63vP zKMN-sa;$vAIm**HR{Ar0j?>Mw0`;Y+_lV6G>l2$VrOvGR`j9@+`BKWyny=;z>r>;* z8)`6;{!lOf_cQZ*?)EXihy-3Qf0Ew_8JqecWV16~N@qjzr!%eQsGk6}&#aHL)(bXs z=ymP8{O3UmwmquzWxC?7WV8Jyc}AIS!UZx$A9MzRGv29`rxZgee<%4$y?p3g2JH?KVL59&Dr5AtC z(Fof*cUf(Kw*3s~jaSytIMCJd68X(P zDzJ;;Afg64+U7RI>8-W-0%@H7EoX%v=yr$0hBh5D6AsQAw(?f5-!s>~65cj`n+HF7CqFwZHQU&l zPho2dp_v_1oEbv^rxQ%CF)LoR5=@}vklz=#`lg$X96Wed>}n!k{PBzVlT$BW_OZ(- zr#O3c4RZhgYNU3+_4WRLZ8bgxez<{Q=`|Fq!4EI3u5q1NsQWvxNc5^#fXml0+#lrr z5~Y}2p3R!gkOZr4a4HV`O&O? zeek%C*318RrhKac*QS{_00%~3iO-2W_3|gNgHq(S-iE4N&hgXFRJQVAP*iG5kS{yc zqDCvqqJ%gZP?HJ>R-@9wFRSn5t0!n&{ZpODTJAokBrV4WHtpCR3p8!HEq3dXl{9bp z&tI>`+W$4umsfs?o*aVL2jcCcC;Jq<;l9awLJ%x=25_hU?MHG*;@ zqCCcS6UHWSZ=F;qx4~G2G3uOEhWzFqlrnmRU#?Mia4vz9JfQBh9hrN9d=r)nl)7^W z6`|=THd*0npxY?RqS)II{nl%<8ujLcMusQ73NaRO@-89Qoqi^sJrrXI>q4X2zYg-u zyjh@ih8raN54{XaKSCqiKl&((asS98JinjVl|c8EU+>2VSgd=trf+7wyORThQutY8 zb07dsf11W7Q!H4Gb!jq#MQ3Y#U8UrlF}^ILSu{F*%te^aKWH`^Zon z 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 I(qI1jA5kYLBme*a literal 5816 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 I(qI1jA5kYLBme*a literal 5816 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 X49{e_Nna7z>xrPEpeg?YY!UiD@n+L@ literal 8894 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 M07*qoM6N<$f?)oOivR!s diff --git a/ios/Runner/Assets.xcassets/AppIcon-prod.appiconset/AppIcon-prod-76x76@1x.png b/ios/Runner/Assets.xcassets/AppIcon-prod.appiconset/AppIcon-prod-76x76@1x.png index 1ef7f3a078ed69f56fc9de4fbc95f931813fca00..1dafe6a11bf89fc232db14ab54e91fa31301e6a6 100644 GIT binary patch literal 5098 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 M07*qoM6N<$f>){yD*ylh literal 3647 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 b8~o>gUM{k{M(n^}py1?XzsOWe83+9z!Ukd? literal 7775 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 diff --git a/ios/Runner/Assets.xcassets/AppIcon-prod.appiconset/AppIcon-prod-83.5x83.5@2x.png b/ios/Runner/Assets.xcassets/AppIcon-prod.appiconset/AppIcon-prod-83.5x83.5@2x.png index 44036dc9721a1210eb2b421c6d4d721535adaa5c..a19739e536ab2904f2af56ebafdebb2593a98631 100644 GIT binary patch literal 9780 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 vV|4J|P8I83;t$=WI~yO)B|A0xcE Date: Sun, 19 Sep 2021 12:19:10 +0200 Subject: [PATCH 085/146] Add new icon --- assets/launcher_icon/icon.png | Bin 25711 -> 39290 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/assets/launcher_icon/icon.png b/assets/launcher_icon/icon.png index f63e1dafa0a6f5c497a59c0c5082863622dc09ba..b1430e0f78fc3207bc87ddde987b03ec3c4d1921 100644 GIT binary patch literal 39290 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 literal 25711 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 Date: Sun, 19 Sep 2021 12:29:42 +0200 Subject: [PATCH 086/146] Fix showing snack --- lib/dialogs/text_import_dialog.dart | 2 +- lib/utils.dart | 19 +++++++++++++++++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/lib/dialogs/text_import_dialog.dart b/lib/dialogs/text_import_dialog.dart index 5d6ca3e..43dccc5 100644 --- a/lib/dialogs/text_import_dialog.dart +++ b/lib/dialogs/text_import_dialog.dart @@ -129,7 +129,7 @@ showTextImportDialog(BuildContext context, String text) async { showImportDialog( context, "Import ${ultimateNote.title}", onNew, onImport); } else { - showSnack(Scaffold.of(context), "Cannot retrieve note from $text"); + showSnackByContext(context, "Cannot retrieve note from $text"); } } else { ParsedNote parsed = parseText(text); diff --git a/lib/utils.dart b/lib/utils.dart index 93e97d2..a94be40 100644 --- a/lib/utils.dart +++ b/lib/utils.dart @@ -80,11 +80,26 @@ hideSnack(BuildContext context) { ScaffoldMessenger.of(context).hideCurrentSnackBar(); } -showSnack(var state, String message, {Duration duration = defaultDuration}) { - var snackbar = SnackBar(content: Text(message), duration: duration); +showSnack(ScaffoldState state, String message, + {Duration duration = defaultDuration}) { + var snackbar = SnackBar( + content: Text(message, + style: Theme.of(state.context).appBarTheme.textTheme.bodyText1), + duration: duration); + state.showSnackBar(snackbar); } +showSnackByContext(BuildContext context, String message, + {Duration duration = defaultDuration}) { + var snackbar = SnackBar( + content: Text(message, + style: Theme.of(context).appBarTheme.textTheme.bodyText1), + duration: duration); + + ScaffoldMessenger.of(context).showSnackBar(snackbar); +} + Color getSelectedCardColor(BuildContext context) { return Theme.of(context).textTheme.bodyText1.color.withOpacity(0.4); } From c746ca3c73d74b8b19925c0f137132a5173ae214 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 19 Sep 2021 12:44:09 +0200 Subject: [PATCH 087/146] Fix closing player --- lib/recorder_bottom_sheet.dart | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/recorder_bottom_sheet.dart b/lib/recorder_bottom_sheet.dart index ad59012..cf693a0 100644 --- a/lib/recorder_bottom_sheet.dart +++ b/lib/recorder_bottom_sheet.dart @@ -214,8 +214,8 @@ class _RecorderBottomSheetState extends State _sheetScaleAnimation = Tween(begin: 1.0, end: -1.0).animate(_controller); - sub = stopAction.listen((event) { - if (!minimized && !store.isLooping) { + sub = stopAction.listen((force) { + if (!minimized && (!store.isLooping || force)) { animateForward(); } }); @@ -323,6 +323,8 @@ class _RecorderBottomSheetState extends State onPanUpdate: (details) { if (details.delta.dy < -5 && minimized) { onExpand(); + } else if (details.delta.dy > 5 && !minimized) { + onMinimize(); } }, child: Column( From 3ef2ee5e4e02234e70bac71b682a8de8f11e951a Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 19 Sep 2021 12:55:24 +0200 Subject: [PATCH 088/146] Change end of file when looping --- lib/recorder_bottom_sheet.dart | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/recorder_bottom_sheet.dart b/lib/recorder_bottom_sheet.dart index cf693a0..40b329d 100644 --- a/lib/recorder_bottom_sheet.dart +++ b/lib/recorder_bottom_sheet.dart @@ -55,9 +55,12 @@ class _BottomInfoState extends State String timeString = _elapsed; - if (length != null) { + if (recorderStore.loopRange != null) { + timeString += " / ${recorderStore.loopRange.end.toStringAsFixed(1)}"; + } else { timeString += " / " + (length.inMilliseconds / 1000).toStringAsFixed(1); } + timeString += " s"; IconData icon = Icons.stop; From f922b857f5645ba64c64498b6d52e6e51c9018fe Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 19 Sep 2021 13:19:34 +0200 Subject: [PATCH 089/146] Check length null --- lib/recorder_bottom_sheet.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/recorder_bottom_sheet.dart b/lib/recorder_bottom_sheet.dart index 40b329d..c7d373a 100644 --- a/lib/recorder_bottom_sheet.dart +++ b/lib/recorder_bottom_sheet.dart @@ -57,7 +57,7 @@ class _BottomInfoState extends State if (recorderStore.loopRange != null) { timeString += " / ${recorderStore.loopRange.end.toStringAsFixed(1)}"; - } else { + } else if (length != null) { timeString += " / " + (length.inMilliseconds / 1000).toStringAsFixed(1); } From 8dd6fcc5fcf7a88c30a6f0d108d72fc791b3a7b9 Mon Sep 17 00:00:00 2001 From: Malte Koch Date: Sun, 19 Sep 2021 18:36:12 +0200 Subject: [PATCH 090/146] Fixes - fix pdf export on invalid characters - multiple notes on export pdf / zip --- .../app/src/main/res/xml/provider_paths.xml | 1 + assets/fonts/Hind-Bold.ttf | Bin 0 -> 279028 bytes assets/fonts/Hind-Light.ttf | Bin 0 -> 279588 bytes assets/fonts/Hind-Medium.ttf | Bin 0 -> 269616 bytes assets/fonts/Hind-Regular.ttf | Bin 0 -> 291728 bytes assets/fonts/Hind-SemiBold.ttf | Bin 0 -> 274412 bytes assets/fonts/OpenSans-Bold.ttf | Bin 0 -> 104120 bytes assets/fonts/OpenSans-Regular.ttf | Bin 0 -> 96932 bytes assets/fonts/RobotoMono.ttf | Bin 0 -> 184768 bytes assets/fonts/arial.ttf | Bin 0 -> 915212 bytes lib/backup.dart | 54 +-- lib/dialogs/export_dialog.dart | 27 +- lib/export.dart | 387 +++++++++++++----- lib/export_note.dart | 4 +- lib/home.dart | 6 + lib/main.dart | 23 +- lib/note_editor.dart | 33 +- lib/settings.dart | 4 +- pubspec.yaml | 9 + 19 files changed, 392 insertions(+), 156 deletions(-) create mode 100644 assets/fonts/Hind-Bold.ttf create mode 100644 assets/fonts/Hind-Light.ttf create mode 100644 assets/fonts/Hind-Medium.ttf create mode 100644 assets/fonts/Hind-Regular.ttf create mode 100644 assets/fonts/Hind-SemiBold.ttf create mode 100644 assets/fonts/OpenSans-Bold.ttf create mode 100644 assets/fonts/OpenSans-Regular.ttf create mode 100644 assets/fonts/RobotoMono.ttf create mode 100644 assets/fonts/arial.ttf diff --git a/android/app/src/main/res/xml/provider_paths.xml b/android/app/src/main/res/xml/provider_paths.xml index 1835a37..42fb503 100644 --- a/android/app/src/main/res/xml/provider_paths.xml +++ b/android/app/src/main/res/xml/provider_paths.xml @@ -1,4 +1,5 @@ + \ No newline at end of file diff --git a/assets/fonts/Hind-Bold.ttf b/assets/fonts/Hind-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..018e32dfdef2ee81f9bee63e4048e7b6f8f923d2 GIT binary patch literal 279028 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