-
Notifications
You must be signed in to change notification settings - Fork 0
/
BlueBP.vex
1 lines (1 loc) · 19.5 KB
/
BlueBP.vex
1
./___ThIsisATemPoRaRyFiLE___.json 000644 000765 000024 0000043456 13451721500 020166 0 ustar 00Kevin 000000 000000 13451721500 13451721500 {"title":"BlueBP","description":"Use this template for all competition code.","version":"0.0.1","icon":"USER000x.bmp","competition":true,"files":{"robot-config.h":"dXNpbmcgbmFtZXNwYWNlIHZleDsKdmV4OjpicmFpbiBCcmFpbjsKdmV4Ojptb3RvciBMZWZ0QmFja0RyaXZlICh2ZXg6OlBPUlQxLCB2ZXg6OmdlYXJTZXR0aW5nOjpyYXRpbzE4XzEsZmFsc2UpOwp2ZXg6Om1vdG9yIExlZnRGcm9udERyaXZlICh2ZXg6OlBPUlQyLCB2ZXg6OmdlYXJTZXR0aW5nOjpyYXRpbzE4XzEsdHJ1ZSk7CnZleDo6bW90b3IgRmx5ICh2ZXg6OlBPUlQzLCB2ZXg6OmdlYXJTZXR0aW5nOjpyYXRpbzE4XzEsZmFsc2UpOwp2ZXg6Om1vdG9yIEludGFrZSAodmV4OjpQT1JUNSwgdmV4OjpnZWFyU2V0dGluZzo6cmF0aW8xOF8xLGZhbHNlKTsKdmV4Ojptb3RvciBGZWVkZXIgKHZleDo6UE9SVDYsIHZleDo6Z2VhclNldHRpbmc6OnJhdGlvMThfMSxmYWxzZSk7CnZleDo6bW90b3IgUmlnaHRGcm9udERyaXZlICh2ZXg6OlBPUlQ3LCB2ZXg6OmdlYXJTZXR0aW5nOjpyYXRpbzE4XzEsZmFsc2UpOwp2ZXg6Om1vdG9yIFJpZ2h0QmFja0RyaXZlICh2ZXg6OlBPUlQ4LCB2ZXg6OmdlYXJTZXR0aW5nOjpyYXRpbzE4XzEsdHJ1ZSk7CnZleDo6bW90b3IgU2VjcmV0V2VhcG9uICh2ZXg6OlBPUlQ5LCB2ZXg6OmdlYXJTZXR0aW5nOjpyYXRpbzE4XzEsdHJ1ZSk7CnZleDo6Y29udHJvbGxlciBDb250cm9sbGVyMTsKdmV4Ojpjb21wZXRpdGlvbiBDb21wZXRpdGlvbjs=","main.cpp":"LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwovKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGV4ICBLbGF0c2t5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi8qICAgICAgICBSYW5uZXkgU2Nob29sICAtICAzODE1TSAgLSAgU3BpdGZpcmUgKEJsaXR6IEFsbGlhbmNlKSAgICAgICAgKi8KLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgojaW5jbHVkZSA8cm9ib3QtY29uZmlnLmg+CnVzaW5nIG5hbWVzcGFjZSB2ZXg7CiNpbmNsdWRlIDxtYXRoLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdmV4OjpsaW5lIGxpbmUxKEJyYWluLlRocmVlV2lyZVBvcnQuQSk7CnZleDo6bGluZSBsaW5lMihCcmFpbi5UaHJlZVdpcmVQb3J0LkIpOwoKCnZvaWQgcHJlX2F1dG9uKCB2b2lkICkgeyAgCiAgICAKfQoKCnZvaWQgZm9yd2FyZChpbnQgeCxpbnQgdil7CiAgICBSaWdodEZyb250RHJpdmUuc3RhcnRSb3RhdGVGb3IoeCxyb3RhdGlvblVuaXRzOjpkZWcsdix2ZWxvY2l0eVVuaXRzOjpwY3QpOwogICAgUmlnaHRCYWNrRHJpdmUuc3RhcnRSb3RhdGVGb3IoeCxyb3RhdGlvblVuaXRzOjpkZWcsdix2ZWxvY2l0eVVuaXRzOjpwY3QpOwogICAgTGVmdEZyb250RHJpdmUuc3RhcnRSb3RhdGVGb3IoeCxyb3RhdGlvblVuaXRzOjpkZWcsdix2ZWxvY2l0eVVuaXRzOjpwY3QpOwogICAgTGVmdEJhY2tEcml2ZS5zdGFydFJvdGF0ZUZvcih4LHJvdGF0aW9uVW5pdHM6OmRlZyx2LHZlbG9jaXR5VW5pdHM6OnBjdCk7Cn0Kdm9pZCBiYWNrd2FyZChpbnQgeCxpbnQgdil7CiAgICBSaWdodEZyb250RHJpdmUuc3RhcnRSb3RhdGVGb3IoLXgscm90YXRpb25Vbml0czo6ZGVnLHYsdmVsb2NpdHlVbml0czo6cGN0KTsKICAgIFJpZ2h0QmFja0RyaXZlLnN0YXJ0Um90YXRlRm9yKC14LHJvdGF0aW9uVW5pdHM6OmRlZyx2LHZlbG9jaXR5VW5pdHM6OnBjdCk7CiAgICBMZWZ0RnJvbnREcml2ZS5zdGFydFJvdGF0ZUZvcigteCxyb3RhdGlvblVuaXRzOjpkZWcsdix2ZWxvY2l0eVVuaXRzOjpwY3QpOwogICAgTGVmdEJhY2tEcml2ZS5zdGFydFJvdGF0ZUZvcigteCxyb3RhdGlvblVuaXRzOjpkZWcsdix2ZWxvY2l0eVVuaXRzOjpwY3QpOwp9CnZvaWQgdHVyblJpZ2h0KGludCB4LGludCB2KXsKICAgIFJpZ2h0RnJvbnREcml2ZS5zdGFydFJvdGF0ZUZvcigteCxyb3RhdGlvblVuaXRzOjpkZWcsdix2ZWxvY2l0eVVuaXRzOjpwY3QpOwogICAgUmlnaHRCYWNrRHJpdmUuc3RhcnRSb3RhdGVGb3IoLXgscm90YXRpb25Vbml0czo6ZGVnLHYsdmVsb2NpdHlVbml0czo6cGN0KTsKICAgIExlZnRGcm9udERyaXZlLnN0YXJ0Um90YXRlRm9yKHgscm90YXRpb25Vbml0czo6ZGVnLHYsdmVsb2NpdHlVbml0czo6cGN0KTsKICAgIExlZnRCYWNrRHJpdmUuc3RhcnRSb3RhdGVGb3IoeCxyb3RhdGlvblVuaXRzOjpkZWcsdix2ZWxvY2l0eVVuaXRzOjpwY3QpOwp9CnZvaWQgdHVybkxlZnQoaW50IHgsaW50IHYpewogICAgUmlnaHRGcm9udERyaXZlLnN0YXJ0Um90YXRlRm9yKHgscm90YXRpb25Vbml0czo6ZGVnLDY1LHZlbG9jaXR5VW5pdHM6OnBjdCk7CiAgICBSaWdodEJhY2tEcml2ZS5zdGFydFJvdGF0ZUZvcih4LHJvdGF0aW9uVW5pdHM6OmRlZyw2NSx2ZWxvY2l0eVVuaXRzOjpwY3QpOwogICAgTGVmdEZyb250RHJpdmUuc3RhcnRSb3RhdGVGb3IoLXgscm90YXRpb25Vbml0czo6ZGVnLDY1LHZlbG9jaXR5VW5pdHM6OnBjdCk7CiAgICBMZWZ0QmFja0RyaXZlLnN0YXJ0Um90YXRlRm9yKC14LHJvdGF0aW9uVW5pdHM6OmRlZyw2NSx2ZWxvY2l0eVVuaXRzOjpwY3QpOwp9CgoKdm9pZCBhdXRvbm9tb3VzKCB2b2lkICkgewogICAKICAgIEludGFrZS5zZXRNYXhUb3JxdWUoMTAwLHBlcmNlbnRVbml0czo6cGN0KTsgCiAgICAKICAgIEZseS5zcGluKGRpcmVjdGlvblR5cGU6OnJldiwxMDAsdmVsb2NpdHlVbml0czo6cGN0KTsKICAgIEludGFrZS5zcGluKGRpcmVjdGlvblR5cGU6OmZ3ZCwxMDAsdmVsb2NpdHlVbml0czo6cGN0KTsKICAgIGZvcndhcmQoMTEwMCw2NSk7CiAgICB0YXNrOjpzbGVlcCgyMjAwKTsKICAgIEludGFrZS5zcGluKGRpcmVjdGlvblR5cGU6OnJldiwxMDAsdmVsb2NpdHlVbml0czo6cGN0KTsKICAgIHR1cm5MZWZ0KDI5MCw2NSk7CiAgICB0YXNrOjpzbGVlcCgxMDAwKTsKICAgIGZvcndhcmQoNTAwLDY1KTsKICAgIHRhc2s6OnNsZWVwKDEyMDApOwogICAgdHVyblJpZ2h0KDMwNSw2NSk7CiAgICB0YXNrOjpzbGVlcCgxMDAwKTsKICAgIGJhY2t3YXJkKDY1MCw2NSk7CiAgICB0YXNrOjpzbGVlcCgxMjAwKTsKICAgIExlZnRGcm9udERyaXZlLnN0YXJ0Um90YXRlRm9yKDM2Nyxyb3RhdGlvblVuaXRzOjpkZWcsNjUsdmVsb2NpdHlVbml0czo6cGN0KTsKICAgIExlZnRCYWNrRHJpdmUuc3RhcnRSb3RhdGVGb3IoMzY3LHJvdGF0aW9uVW5pdHM6OmRlZyw2NSx2ZWxvY2l0eVVuaXRzOjpwY3QpOwogICAgdGFzazo6c2xlZXAoMTIwMCk7CiAgICBmb3J3YXJkKDI1LDI1KTsKICAgIHRhc2s6OnNsZWVwKDEyMDApOwogICAgRmVlZGVyLnNwaW4oZGlyZWN0aW9uVHlwZTo6ZndkLDEwMCx2ZWxvY2l0eVVuaXRzOjpwY3QpOwogICAgSW50YWtlLnNwaW4oZGlyZWN0aW9uVHlwZTo6ZndkLDEwMCx2ZWxvY2l0eVVuaXRzOjpwY3QpOwogICAgZm9yd2FyZCgzNzUsNDUpOwogICAgdGFzazo6c2xlZXAoMTIwMCk7CiAgICBMZWZ0RnJvbnREcml2ZS5zdGFydFJvdGF0ZUZvcigyMjAscm90YXRpb25Vbml0czo6ZGVnLDY1LHZlbG9jaXR5VW5pdHM6OnBjdCk7CiAgICBMZWZ0QmFja0RyaXZlLnN0YXJ0Um90YXRlRm9yKDIyMCxyb3RhdGlvblVuaXRzOjpkZWcsNjUsdmVsb2NpdHlVbml0czo6cGN0KTsKICAgIHRhc2s6OnNsZWVwKDEyMDApOwogICAgdHVyblJpZ2h0KDYwMCw2NSk7CiAgICB0YXNrOjpzbGVlcCgxMjAwKTsKICAgIGJhY2t3YXJkKDEwNTAsMTAwKTsKICAgIHRhc2s6OnNsZWVwKDEyMDApOwogICAgCn0KCgovL1VTRVJDT05UUk9MCnZvaWQgdXNlcmNvbnRyb2woIHZvaWQgKSB7CiAgLy8gVXNlciBjb250cm9sIGNvZGUgaGVyZSwgaW5zaWRlIHRoZSBsb29wCiAgd2hpbGUgKDEpewogICAgUmlnaHRGcm9udERyaXZlLnNldE1heFRvcnF1ZSgxMDAscGVyY2VudFVuaXRzOjpwY3QpOwogICAgUmlnaHRCYWNrRHJpdmUuc2V0TWF4VG9ycXVlKDEwMCxwZXJjZW50VW5pdHM6OnBjdCk7IAogICAgTGVmdEZyb250RHJpdmUuc2V0TWF4VG9ycXVlKDEwMCxwZXJjZW50VW5pdHM6OnBjdCk7IAogICAgTGVmdEJhY2tEcml2ZS5zZXRNYXhUb3JxdWUoMTAwLHBlcmNlbnRVbml0czo6cGN0KTsKICAgIEZseS5zZXRNYXhUb3JxdWUoMTAwLHBlcmNlbnRVbml0czo6cGN0KTsgCiAgICBTZWNyZXRXZWFwb24uc2V0TWF4VG9ycXVlKDEwMCxwZXJjZW50VW5pdHM6OnBjdCk7IAogICAgIAogICAgLy9DaGFuZ2UgU2Vuc2l0aXZpdHkgb2YgQ29udHJvbGxlciwgQXhpczEKICAgIGludCB2YWx1ZTE9MDsKICAgIGludCB2YWx1ZTM9MDsKICAgICAgCiAgICBpZihDb250cm9sbGVyMS5BeGlzMS52YWx1ZSgpPjAmJkNvbnRyb2xsZXIxLkF4aXMxLnZhbHVlKCk8PTEwMCl7CiAgICAgICAgdmFsdWUxPUNvbnRyb2xsZXIxLkF4aXMxLnZhbHVlKCkvMjsKICAgIH0KICAgIGVsc2UgaWYoQ29udHJvbGxlcjEuQXhpczEudmFsdWUoKT4xMDApewogICAgICAgIHZhbHVlMT1wb3coQ29udHJvbGxlcjEuQXhpczEudmFsdWUoKSwyKS8yMDA7CiAgICB9CiAgICBpZihDb250cm9sbGVyMS5BeGlzMS52YWx1ZSgpPDAmJkNvbnRyb2xsZXIxLkF4aXMxLnZhbHVlKCk+PS0xMDApewogICAgICAgIHZhbHVlMT1Db250cm9sbGVyMS5BeGlzMS52YWx1ZSgpLzI7CiAgICB9CiAgICBlbHNlIGlmKENvbnRyb2xsZXIxLkF4aXMxLnZhbHVlKCk8LTEwMCl7CiAgICAgICAgdmFsdWUxPS1wb3coQ29udHJvbGxlcjEuQXhpczEudmFsdWUoKSwyKS8yMDA7CiAgICB9IAogICAgICAKICAgIC8vVmFsdWUgMyBVbmNoYW5nZWQKICAgIHZhbHVlMz0oQ29udHJvbGxlcjEuQXhpczMudmFsdWUoKSk7IAogICAgTGVmdEZyb250RHJpdmUuc3Bpbih2ZXg6OmRpcmVjdGlvblR5cGU6OmZ3ZCwodmFsdWUxK3ZhbHVlMyksdmV4Ojp2ZWxvY2l0eVVuaXRzOjpwY3QpOwogICAgTGVmdEJhY2tEcml2ZS5zcGluKHZleDo6ZGlyZWN0aW9uVHlwZTo6ZndkLCh2YWx1ZTErdmFsdWUzKSx2ZXg6OnZlbG9jaXR5VW5pdHM6OnBjdCk7IAogICAgUmlnaHRGcm9udERyaXZlLnNwaW4odmV4OjpkaXJlY3Rpb25UeXBlOjpyZXYsKHZhbHVlMS12YWx1ZTMpLHZleDo6dmVsb2NpdHlVbml0czo6cGN0KTsgCiAgICBSaWdodEJhY2tEcml2ZS5zcGluKHZleDo6ZGlyZWN0aW9uVHlwZTo6cmV2LCh2YWx1ZTEtdmFsdWUzKSx2ZXg6OnZlbG9jaXR5VW5pdHM6OnBjdCk7CiAgICAKICAgIAogICAgaWYoQ29udHJvbGxlcjEuQnV0dG9uUjIucHJlc3NpbmcoKSkKICAgIHsKICAgICAgICBJbnRha2Uuc3BpbihkaXJlY3Rpb25UeXBlOjpmd2QsMjAwLHZlbG9jaXR5VW5pdHM6OnJwbSk7CiAgICB9CiAgICBlbHNlIGlmKENvbnRyb2xsZXIxLkJ1dHRvblIxLnByZXNzaW5nKCkpCiAgICB7CiAgICAgICAgSW50YWtlLnNwaW4oZGlyZWN0aW9uVHlwZTo6cmV2LDIwMCx2ZWxvY2l0eVVuaXRzOjpycG0pOwogICAgfQogICAgZWxzZQogICAgewogICAgICBJbnRha2Uuc3RvcChicmFrZVR5cGU6OmNvYXN0KTsKICAgICAgIAogICAgfQogICAgICAKICAgIAogICAgICBpZihDb250cm9sbGVyMS5CdXR0b25MMS5wcmVzc2luZygpKQogICAgewogICAgICAgIEZlZWRlci5zdGFydFJvdGF0ZUZvcigyMDAscm90YXRpb25Vbml0czo6ZGVnLDEwMCx2ZWxvY2l0eVVuaXRzOjpwY3QpOwogICAgICAgIEludGFrZS5zdGFydFJvdGF0ZUZvcigxMDAscm90YXRpb25Vbml0czo6ZGVnLDEwMCx2ZWxvY2l0eVVuaXRzOjpwY3QpOwogICAgICAgICAgdGFzazo6c2xlZXAoMjAwKTsKICAgICAgICAgIFJpZ2h0RnJvbnREcml2ZS5zcGluKGRpcmVjdGlvblR5cGU6OmZ3ZCwyMDAsdmVsb2NpdHlVbml0czo6cnBtKTsKICAgICAgICAgIFJpZ2h0QmFja0RyaXZlLnNwaW4oZGlyZWN0aW9uVHlwZTo6ZndkLDIwMCx2ZWxvY2l0eVVuaXRzOjpycG0pOwogICAgICAgICAgTGVmdEZyb250RHJpdmUuc3BpbihkaXJlY3Rpb25UeXBlOjpmd2QsMjAwLHZlbG9jaXR5VW5pdHM6OnJwbSk7CiAgICAgICAgICBMZWZ0QmFja0RyaXZlLnNwaW4oZGlyZWN0aW9uVHlwZTo6ZndkLDIwMCx2ZWxvY2l0eVVuaXRzOjpycG0pOwogICAgICAgICAgU2VjcmV0V2VhcG9uLnNwaW4oZGlyZWN0aW9uVHlwZTo6cmV2LDEwMCx2ZWxvY2l0eVVuaXRzOjpycG0pOwogICAgICAgIHRhc2s6OnNsZWVwKDEwMCk7CiAgICAgICAgRmVlZGVyLnNwaW4oZGlyZWN0aW9uVHlwZTo6ZndkLDIwMCx2ZWxvY2l0eVVuaXRzOjpycG0pOwogICAgICAgIEludGFrZS5zcGluKGRpcmVjdGlvblR5cGU6OmZ3ZCwyMDAsdmVsb2NpdHlVbml0czo6cnBtKTsKICAgICAgICBTZWNyZXRXZWFwb24uc3BpbihkaXJlY3Rpb25UeXBlOjpyZXYsMTAwLHZlbG9jaXR5VW5pdHM6OnJwbSk7CiAgICAgICAgdGFzazo6c2xlZXAoMzAwKTsgCiAgICB9IAogICAgICAKICAgLy9GZWVkZXIgIAogICAgaWYoQ29udHJvbGxlcjEuQnV0dG9uTDIucHJlc3NpbmcoKSkKICAgIHsKICAgICAgICBJbnRha2Uuc3RhcnRSb3RhdGVGb3IoMjAwMCxyb3RhdGlvblVuaXRzOjpkZWcsMTAwLHZlbG9jaXR5VW5pdHM6OnBjdCk7CiAgICAgICAgRmVlZGVyLnJvdGF0ZUZvcigyMDAscm90YXRpb25Vbml0czo6ZGVnLDEwMCx2ZWxvY2l0eVVuaXRzOjpwY3QpOwoKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgICBGZWVkZXIuc3RvcChicmFrZVR5cGU6OmNvYXN0KTsKICAgIH0KICAgICAgCiAgICAvL1NXICAKICAgIGlmKENvbnRyb2xsZXIxLkJ1dHRvbkEucHJlc3NpbmcoKSkKICAgIHsKICAgICAgICBTZWNyZXRXZWFwb24uc3BpbihkaXJlY3Rpb25UeXBlOjpmd2QsMTcwLHZlbG9jaXR5VW5pdHM6OnJwbSk7CiAgICB9CiAgICBlbHNlIGlmKENvbnRyb2xsZXIxLkJ1dHRvblkucHJlc3NpbmcoKSkKICAgIHsKICAgICAgICBTZWNyZXRXZWFwb24uc3BpbihkaXJlY3Rpb25UeXBlOjpyZXYsMTcwLHZlbG9jaXR5VW5pdHM6OnJwbSk7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICBTZWNyZXRXZWFwb24uc3RvcChicmFrZVR5cGU6OmNvYXN0KTsKICAgIH0gIAogICAgICAKICAgIAogICAgLy9GbHkKICAgIGlmKENvbnRyb2xsZXIxLkJ1dHRvblVwLnByZXNzaW5nKCkpCiAgICB7CiAgICAgICAgRmx5LnNwaW4oZGlyZWN0aW9uVHlwZTo6cmV2LDIwMCx2ZWxvY2l0eVVuaXRzOjpycG0pOwogICAgfQogICAgZWxzZSBpZihDb250cm9sbGVyMS5CdXR0b25Eb3duLnByZXNzaW5nKCkpCiAgICB7IAogICAgICAgIEZseS5zdG9wKGJyYWtlVHlwZTo6Y29hc3QpOyAgIAogICAgfQogICAgZWxzZQogICAgewogICAgICAgIAogICAgfQogICAgCiAgIAogICAgICAKICAgICAgCiAgICB2ZXg6OnRhc2s6OnNsZWVwKDIwKTsKICB9Cn0KICAgCgovL1NUQVJUIFBJRAppbnQgc2duKGRvdWJsZSB2YWwpCnsKICAgIHJldHVybiB2YWwgPiAwID8gMSA6IC0xOwp9CnZvaWQgdHVyblRvKGRvdWJsZSBkZWdyZWVzLCBkb3VibGUgc3BlZWQgPSA2MCkKewogICAgZGVncmVlcyAqPSA5Ni4wLzkwLjA7CiAgICBkb3VibGUgUCA9IDAsIGtwID0uNzsKICAgIGRvdWJsZSBJID0gMCwga2kgPSAwLjAwNDsKICAgIGRvdWJsZSBEID0gMCwga2QgPSAwLjAzOwogICAgZG91YmxlIGVycm9yID0gMTAwOyAKICAgIGRvdWJsZSBsYXN0RXJyb3IgPSAxMDA7CiAgICBkb3VibGUgbW90b3JQb3dlciA9IDA7CiAgICBpbnQgaVRocmVzaCA9IDI1OwogICAgd2hpbGUodHJ1ZSkKICAgIHsKICAgICAgICBsYXN0RXJyb3IgPSBlcnJvcjsKICAgICAgICAvL2Vycm9yID0gZGVncmVlcyAtIEd5cm8xLnZhbHVlKHJvdGF0aW9uVW5pdHM6OmRlZyk7CgogICAgICAgIGlmIChhYnMoZXJyb3IpID4gMTgwKQogICAgICAgICAgICBlcnJvciA9ICBzZ24oZXJyb3IpICogKDM2MCAtIGFicyhlcnJvcikpOwoKICAgICAgICBQID0gZXJyb3IgKiBrcDsKICAgICAgICBEID0ga2QgKiAoZXJyb3IgLSBsYXN0RXJyb3IpOwoKICAgICAgICBpZiAoYWJzKGVycm9yKSA8IGlUaHJlc2gpCiAgICAgICAgICAgIEkgKz0gZXJyb3IgKiBraTsKCiAgICAgICAgaWYgKGFicyhJKSA+IDE1KQogICAgICAgICAgSSA9IDE1ICogc2duKGVycm9yKTsKCiAgICAgICAgbW90b3JQb3dlciA9IFAgKyBJICsgRDsKCiAgICAgICAgaWYoYWJzKGVycm9yKSA8PSAwLjEgJiYgYWJzKGxhc3RFcnJvcikgPD0gLjEpIGJyZWFrOyAvLyBCcmVhayBzdGF0ZW1lbnQKCiAgICAgICAgaWYoYWJzKG1vdG9yUG93ZXIpID4gYWJzKHNwZWVkKSkKICAgICAgICAgICAgbW90b3JQb3dlciA9IHNwZWVkICogc2duKG1vdG9yUG93ZXIpOwoKICAgICAgICBMZWZ0QmFja0RyaXZlLnNwaW4oZGlyZWN0aW9uVHlwZTo6ZndkLCBtb3RvclBvd2VyLCB2ZWxvY2l0eVVuaXRzOjpwY3QpOwogICAgICAgIFJpZ2h0QmFja0RyaXZlLnNwaW4oZGlyZWN0aW9uVHlwZTo6ZndkLCAtbW90b3JQb3dlciwgdmVsb2NpdHlVbml0czo6cGN0KTsKICAgICAgICBSaWdodEZyb250RHJpdmUuc3BpbihkaXJlY3Rpb25UeXBlOjpmd2QsIC1tb3RvclBvd2VyLCB2ZWxvY2l0eVVuaXRzOjpwY3QpOwogICAgICAgIExlZnRGcm9udERyaXZlLnNwaW4oZGlyZWN0aW9uVHlwZTo6ZndkLCBtb3RvclBvd2VyLCB2ZWxvY2l0eVVuaXRzOjpwY3QpOwoKICAgICAgICB0YXNrOjpzbGVlcCgxMCk7CiAgICB9CiAgICBMZWZ0QmFja0RyaXZlLnN0b3AoYnJha2VUeXBlOjpicmFrZSk7CiAgICBSaWdodEJhY2tEcml2ZS5zdG9wKGJyYWtlVHlwZTo6YnJha2UpOwogICAgUmlnaHRGcm9udERyaXZlLnN0b3AoYnJha2VUeXBlOjpicmFrZSk7CiAgICBMZWZ0RnJvbnREcml2ZS5zdG9wKGJyYWtlVHlwZTo6YnJha2UpOwogICAgdGFzazo6c2xlZXAoNTApOyAvLyBTbGVlcCBoZXJlIHNvIHdlIGRvIG5vdCBoYXZlIHRvIGluIHRoZSBhdXRvbm9tb3VzIGZ1bmN0aW9uCn0KCmRvdWJsZSBzdGJsQ29uc3QgPSAuNzsKCmRvdWJsZSByYW1wVXAoZG91YmxlIGRlbHRhViwgaW50IGN5Y2xlcywgaW50IHRpbWVTbGljZSwgZG91YmxlIGFuZ2xlID0gMCkKewogICAgZG91YmxlIGN1cnJWZWwgPSBSaWdodEZyb250RHJpdmUudmVsb2NpdHkodmVsb2NpdHlVbml0czo6cGN0KTsKICAgIFJpZ2h0RnJvbnREcml2ZS5yZXNldFJvdGF0aW9uKCk7CiAgICAKICAgIC8vIEd5cm8gU3RhYmlsaXphdGlvbiB2YXJpYWJsZXMKICAgIGRvdWJsZSBsZWZ0QWRqdXN0UHdyID0gMDsKICAgIGRvdWJsZSBpbml0ID0gYW5nbGU7CiAgICAKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY3ljbGVzOyBpKyspCiAgICB7CiAgICAgICAgY3VyclZlbCArPSBkZWx0YVYvY3ljbGVzOwogICAgCiAgICAgICAgLy9sZWZ0QWRqdXN0UHdyID0gc3RibENvbnN0ICogKEd5cm8xLnZhbHVlKHJvdGF0aW9uVW5pdHM6OmRlZykgLSBpbml0KTsgLy8gVHJhY2tpbmcgZGlmZmVyZW5jZSBpbiBneXJvIHZhbHVlCgogICAgICAgIC8vIFNldHRpbmcgbW90b3IgcG93ZXJzCiAgICAgICAgTGVmdEJhY2tEcml2ZS5zcGluKGRpcmVjdGlvblR5cGU6OmZ3ZCwgY3VyclZlbCAtIGxlZnRBZGp1c3RQd3IsIHZlbG9jaXR5VW5pdHM6OnBjdCk7CiAgICAgICAgUmlnaHRCYWNrRHJpdmUuc3BpbihkaXJlY3Rpb25UeXBlOjpmd2QsIGN1cnJWZWwsIHZlbG9jaXR5VW5pdHM6OnBjdCk7CiAgICAgICAgUmlnaHRGcm9udERyaXZlLnNwaW4oZGlyZWN0aW9uVHlwZTo6ZndkLCBjdXJyVmVsLCB2ZWxvY2l0eVVuaXRzOjpwY3QpOwogICAgICAgIExlZnRGcm9udERyaXZlLnNwaW4oZGlyZWN0aW9uVHlwZTo6ZndkLCBjdXJyVmVsIC0gbGVmdEFkanVzdFB3ciwgdmVsb2NpdHlVbml0czo6cGN0KTsKCiAgICAgICAgdGFzazo6c2xlZXAodGltZVNsaWNlKTsKICAgIH0KCiAgICByZXR1cm4gUmlnaHRGcm9udERyaXZlLnJvdGF0aW9uKHJvdGF0aW9uVW5pdHM6OnJldik7Cn0KCnZvaWQgZHJpdmUoZG91YmxlIGluY2hlcywgZG91YmxlIHNwZWVkLCBpbnQgY3ljbGVzID0gMTUsIGludCB0aW1lU2xpY2UgPSA1MCwgZG91YmxlIGhlYWRpbmcgPSAtMTIxLCBib29sIHR1cm4gPSB0cnVlKQp7CiAgICAvLyBDb252ZXJ0aW5nIGluY2hlcyB0byBtb3RvciByb3RhdGlvbnMKICAgIGRvdWJsZSBpbml0ID0gMDsKICAgIC8vaWYoaGVhZGluZyAhPSAtMTIxKSBpbml0ID0gaGVhZGluZzsKICAgIGRvdWJsZSByb3RzID0gaW5jaGVzIC8gKDQgKiAzLjE0MTUpOwogICAgcm90cyAtPSByYW1wVXAoc3BlZWQsIGN5Y2xlcywgdGltZVNsaWNlLCBpbml0KTsgLy8gU3VidHJhY3RpbmcgcmFtcGluZyBkaXN0YW5jZSBmcm9tIHRvdGFsCgogICAgLy8gUElEIFZhcmlhYmxlcwogICAgZG91YmxlIFAgPSAwLCBrcCA9IDE1MDsgLy83NQogICAgZG91YmxlIEkgPSAwLCBraSA9IC45NTsKICAgIGRvdWJsZSBEID0gMCwga2QgPSAyNTA7IC8vMjMwCiAgICBkb3VibGUgZXJyb3IgPSAwLCBsRXJyb3IgPSAwOwogICAgZG91YmxlIGlUaHJlc2ggPSAuNTsKICAgIGRvdWJsZSBtb3RvclBvd2VyID0gMDsKCiAgICAvLyBHeXJvIFN0YWJpbGl6YXRpb24gdmFyaWFibGVzCiAgICBkb3VibGUgbGVmdEFkanVzdFB3ciA9IDA7CgogICAgLy8gUmVzZXQgcm90YXRpb25zIGJlZm9yZSBQSUQgbG9vcAogICAgUmlnaHRGcm9udERyaXZlLnJlc2V0Um90YXRpb24oKTsKCiAgICAvLyBSZXNldCBCcmFpbiBUaW1lciBCZWZvcmUgUElEIExvb3AKICAgIEJyYWluLnJlc2V0VGltZXIoKTsKICAgIC8vaW50IHRoZW9yZXRpY2FsVGltZSA9IGFicyhyb3RzIC8gKHNwZWVkICogMikgLyA2MCk7CgogICAgLy8gUElEIExvb3AKICAgIHdoaWxlIChhYnMoUmlnaHRGcm9udERyaXZlLnJvdGF0aW9uKHJvdGF0aW9uVW5pdHM6OnJldikpIDwgYWJzKHJvdHMpLyogJiYgQnJhaW4udGltZXIodGltZVVuaXRzOjptc2VjKSA8IHRoZW9yZXRpY2FsVGltZSArIDEwMDAqLykKICAgIHsKICAgICAgICAvLyBTZXR0aW5nIFBJRCBWYXJpYWJsZXMKICAgICAgICBlcnJvciA9IHJvdHMgLSAoUmlnaHRGcm9udERyaXZlLnJvdGF0aW9uKHJvdGF0aW9uVW5pdHM6OnJldikpOwogICAgICAgIFAgPSBlcnJvciAqIGtwOwogICAgICAgIEQgPSAoZXJyb3IgLSBsRXJyb3IpICoga2Q7CgogICAgICAgIGlmIChhYnMoZXJyb3IpIDwgaVRocmVzaCkKICAgICAgICAgICAgSSArPSBlcnJvciAqIGtpOwogICAgICAgIGVsc2UKICAgICAgICAgICAgSSA9IDA7CgogICAgICAgIG1vdG9yUG93ZXIgPSBhYnMoUCkgKyBhYnMoSSkgLSBhYnMoRCk7IC8vIE1hbnVhbGx5IHNldHRpbmcgbW90b3IgcG93ZXIKCiAgICAgICAgaWYgKGFicyhtb3RvclBvd2VyKSA+IGFicyhzcGVlZCkpIC8vIExpbWl0aW5nIG1vdG9yIHBvd2VyIHRvIHRvcCBzcGVlZAogICAgICAgICAgICBtb3RvclBvd2VyID0gYWJzKHNwZWVkKTsKCiAgICAgICAgaWYoc3BlZWQgPCAwKSAvLyBJbiBjYXNlIG9mIGdvaW5nIGJhY2t3YXJkcwogICAgICAgICAgICBtb3RvclBvd2VyICo9IC0xOwoKICAgICAgICAvL2xlZnRBZGp1c3RQd3IgPSBzdGJsQ29uc3QgKiAoR3lybzEudmFsdWUocm90YXRpb25Vbml0czo6ZGVnKSAtIGluaXQpOyAvLyBUcmFja2luZyBkaWZmZXJlbmNlIGluIGd5cm8gdmFsdWUKCiAgICAgICAgLy8gU2V0dGluZyBtb3RvciBwb3dlcnMKICAgICAgICBMZWZ0QmFja0RyaXZlLnNwaW4oZGlyZWN0aW9uVHlwZTo6ZndkLCBtb3RvclBvd2VyIC0gbGVmdEFkanVzdFB3ciwgdmVsb2NpdHlVbml0czo6cGN0KTsKICAgICAgICBSaWdodEJhY2tEcml2ZS5zcGluKGRpcmVjdGlvblR5cGU6OmZ3ZCwgbW90b3JQb3dlciwgdmVsb2NpdHlVbml0czo6cGN0KTsKICAgICAgICBSaWdodEZyb250RHJpdmUuc3BpbihkaXJlY3Rpb25UeXBlOjpmd2QsIG1vdG9yUG93ZXIsIHZlbG9jaXR5VW5pdHM6OnBjdCk7CiAgICAgICAgTGVmdEZyb250RHJpdmUuc3BpbihkaXJlY3Rpb25UeXBlOjpmd2QsIG1vdG9yUG93ZXIgLSBsZWZ0QWRqdXN0UHdyLCB2ZWxvY2l0eVVuaXRzOjpwY3QpOwoKICAgICAgICB0YXNrOjpzbGVlcCg1MCk7CiAgICAgICAgbEVycm9yID0gZXJyb3I7CiAgICB9CgogICAgLy8gU3RvcHBpbmcgbW90b3JzIGFmdGVyIGxvb3AgZW5kcwogICAgTGVmdEJhY2tEcml2ZS5zdG9wKGJyYWtlVHlwZTo6YnJha2UpOwogICAgUmlnaHRCYWNrRHJpdmUuc3RvcChicmFrZVR5cGU6OmJyYWtlKTsKICAgIFJpZ2h0RnJvbnREcml2ZS5zdG9wKGJyYWtlVHlwZTo6YnJha2UpOwogICAgTGVmdEZyb250RHJpdmUuc3RvcChicmFrZVR5cGU6OmJyYWtlKTsKICAgIC8qaWYodHVybikKICAgICAgICB0dXJuVG8oaW5pdCk7CiAgICAgICAgKi8KICAgIC8vIFNsZWVwIGhlcmUgc28gd2UgZG8gbm90IGhhdmUgdG8gaW4gdGhlIGF1dG9ub21vdXMgZnVuY3Rpb24KICAgIGlmIChhYnMoaW5jaGVzKSA+PSAxNikKICAgICAgICB0YXNrOjpzbGVlcCgxMDApOwogICAgZWxzZQogICAgICAgIHRhc2s6OnNsZWVwKDUwKTsKfQovL0VORCBQSUQKCgoKaW50IG1haW4oKSB7CiAgICBwcmVfYXV0b24oKTsKICAgIENvbXBldGl0aW9uLmF1dG9ub21vdXMoIGF1dG9ub21vdXMgKTsKICAgIENvbXBldGl0aW9uLmRyaXZlcmNvbnRyb2woIHVzZXJjb250cm9sICk7CiAgICAgICAgICAgICAgICAgICAgIAogICAgd2hpbGUoMSkgewogICAgICB2ZXg6OnRhc2s6OnNsZWVwKDEwMCk7Ly9TbGVlcCB0aGUgdGFzayBmb3IgYSBzaG9ydCBhbW91bnQgb2YgdGltZSB0byBwcmV2ZW50IHdhc3RlZCByZXNvdXJjZXMuCiAgICB9ICAgIAogICAgICAgCn0="},"device":{"slot":6,"type":"vexV5"},"language":{"name":"vc++"},"components":[{"name":"RightFrontDrive","class":"vex::motor","port":"7","left":251,"top":318,"type":"motor","data":{"gears":200,"reversed":false}},{"name":"RightBackDrive","class":"vex::motor","port":"8","left":251,"top":486,"type":"motor","data":{"gears":200,"reversed":true}},{"name":"LeftFrontDrive","class":"vex::motor","port":"2","left":64,"top":476,"type":"motor","data":{"gears":200,"reversed":true}},{"name":"Controller1","class":"vex::controller","left":463,"top":192,"type":"controller"},{"name":"Fly","class":"vex::motor","port":"3","left":368,"top":0,"type":"motor","data":{"gears":200,"reversed":false}},{"name":"Feeder","class":"vex::motor","port":"6","left":553,"top":0,"type":"motor","data":{"gears":200,"reversed":false}},{"name":"Intake","class":"vex::motor","port":"5","left":642,"top":467,"type":"motor","data":{"gears":200,"reversed":false}},{"name":"LeftBackDrive","class":"vex::motor","port":"1","left":62,"top":311,"type":"motor","data":{"gears":200,"reversed":false}},{"name":"SecretWeapon","class":"vex::motor","port":"9","left":663,"top":124,"type":"motor","data":{"gears":200,"reversed":true}}]}